Adicionar borda inferior à linha da tabela <tr>


386

Eu tenho uma tabela de 3 por 3. Eu preciso de uma maneira de adicionar uma borda para a parte inferior de cada linha tre dar uma cor específica.

Primeiro eu tentei da maneira direta, ou seja:

<tr style="border-bottom:1pt solid black;">

Mas isso não funcionou. Então eu adicionei CSS assim:

tr {
border-bottom: 1pt solid black;
}

Isso ainda não funcionou.

Eu preferiria usar CSS porque, então, não preciso adicionar um styleatributo a cada linha. Eu não adicionei um borderatributo ao <table>. Espero que isso não esteja afetando meu CSS.


Como observação lateral, se o estilo embutido (primeiro exemplo na sua pergunta) não estiver funcionando, é improvável que o estilo incorporado (segundo exemplo) funcione. Você também deve pesquisar a disponibilidade de atributos para o elemento que você está tentando estilizar: w3.org/TR/html-markup/tr.html
Tass

Se você quiser ter um fundo fronteira para tr da tabela que você pode seguir esta jsfiddle.net/7awN4
Allenc

6
Apenas uma nota para incentivar os pesquisadores futuros para rolar para baixo a resposta de @ Nathan Manousos, abaixo - é provavelmente a solução que você está procurando
henry

Respostas:


400

Eu tive um problema como este antes. Eu não acho que trpode pegar um estilo de borda diretamente. Minha solução alternativa foi estilizar os tds na linha:

<tr class="border_bottom">

CSS:

tr.border_bottom td {
  border-bottom:1pt solid black;
}

27
Observe que, usando esta solução, você provavelmente terá uma lacuna na borda entre os td's. a resposta de simoncereska cuida disso, mas esteja ciente de que pode não parecer agradável com tipos de borda pontilhada ou tracejada (porque não são contínuos)
Griddo

24
Você também pode remediar isso adicionando cellspacing="0"como um atributo a <table>(consulte esta pergunta ). Porém, não sei como isso ficará com bordas pontilhadas ou tracejadas.
Stefan van den Akker 5/05

5
trpode usar estilo de borda no modelo de borda recolhida. @ Sangram, considere aceitar uma resposta que leve isso em consideração em vez desta, não?
Robert Siemer

Isso não funcionará se houver preenchimento entre as células da tabela. Se houver preenchimento, a borda será visivelmente dividida em partes.
Timothy Gonzalez

e sua tabela precisa deste estilo <table style = "border-collapse: collapse">
Oguz 24/07/19

511

Adicione border-collapse:collapseà sua regra de tabela:

table { 
    border-collapse: collapse; 
}

Ligação


2
Isso não funciona por si só. Você ainda não pode estilizar a linha, mas pode estilizar as células.
Renan

49
Você está errado, @Renan. O modelo de borda recolhida é exatamente o que torna as bordas da linha estilizadas. De acordo com a seção 17.6 do CSS : No modelo de borda separado "Linhas, [...] não podem ter bordas (ou seja, os agentes do usuário devem ignorar as propriedades da borda desses elementos)". “No modelo de borda em colapso, é possível especificar bordas que envolvem toda ou parte de uma célula, linha [e] grupo de linhas [...]” E, a propósito: ele funciona no meu navegador (Chromium 37).
Robert Siemer

12
Acho que algumas pessoas podem estar ficando confusas (como eu) e não estão percebendo que o estilo de colapso de borda precisa ser colocado na mesa, não na linha.
Porlune

Parece que o Chrome não possui esse recurso, embora seja compatível com outros recursos de colapso de borda.
Liqun Dom

72

Use border-collapse:collapsena mesa e border-bottom: 1pt solid black;no tr


6
definir borda no tr é inútil mesmo com a borda recolhida. você tem que defini-lo sobre a tds do tr
Radu Simionescu

9
@RaduSimionescu Errado, funciona perfeitamente bem com a trborda colapsada.
Styphon

Nenhum efeito no FF 45.0.1.
imrek

41

Usar

border-collapse:collapse como Nathan escreveu e você precisa definir

td { border-bottom: 1px solid #000; }


É assim que eu faria também! Adicionar a fronteira na td e uso border-collapse sobre a mesa
Sayan

30

Há muitas respostas incompletas aqui. Como você não pode aplicar uma borda à trtag, é necessário aplicá-la às tags tdou da seguinte thmaneira:

td {
  border-bottom: 1pt solid black;
}

Isso deixará um pequeno espaço entre cada um td, o que provavelmente não é desejável se você desejar que a borda apareça como se fosse a trtag. Para "preencher as lacunas", por assim dizer, você precisa utilizar a border-collapsepropriedade no tableelemento e definir seu valor collapsecomo:

table {
  border-collapse: collapse;
}

8

Usar

table{border-collapse:collapse}
tr{border-top:thin solid}

Substitua "thin thin" por propriedades de CSS.


7

Exiba a linha como um bloco.

tr {
    display: block;
    border-bottom: 1px solid #000;
}

e para exibir cores alternativas simplesmente:

tr.oddrow {
    display: block;
    border-bottom: 1px solid #F00;
}

11
Não uma boa idéia para conjuntodisplay: blockdetr's. Usetr td { border-bottom: ... }adtr.oddrow td { border-bottom: ... }vez
vladr

4
bloco de visualização pode destruir a mesa layout.border-colapso: colapso em cima da mesa em si é definitivamente a melhor solução
N4ppeL

7

Você pode usar a box-shadowpropriedade para simular uma borda de um trelemento. Ajuste a posição Y de box-shadow(abaixo representado como 2px) para ajustar a espessura.

tr {
  -webkit-box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
  -moz-box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
  box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
}

6

Eu tentei adicionar

    table {
      border-collapse: collapse;
    }   

ao lado do

    tr {
      bottom-border: 2pt solid #color;
    }

e depois comentou o colapso das fronteiras para ver o que funcionava. Apenas ter o seletor de tr com propriedade de borda inferior funcionou para mim!

Sem CSS de borda ex.

Sem CSS de borda ex.

Nenhuma foto de fronteira ao vivo

Nenhuma foto de fronteira ao vivo

Borda CSS ex.

Borda CSS ex.

Tabela com a foto Border ao vivo

Tabela com a foto Border ao vivo


2

Descobri ao usar esse método que o espaço entre os elementos td fazia com que uma lacuna se formasse na borda, mas não tenha medo ...

Uma maneira de contornar isso:

<tr>
    <td>
        Example of normal table data
    </td>

    <td class="end" colspan="/* total number of columns in entire table*/">
        /* insert nothing in here */ 
    </td>
</tr>

Com o CSS:

td.end{
    border:2px solid black;
}

2

<td style="border-bottom-style: solid; border-bottom: thick dotted #ff0000; ">

Você pode fazer o mesmo com toda a linha também.

border-bottom-style, border-top-style, border-left-style, border-right-style. Ou simplesmenteborder-style isso se aplica a todas as quatro bordas de uma só vez.

Você pode ver (e tentar on-line) mais detalhes aqui


2

Várias respostas interessantes. Como você quer apenas uma borda inferior (ou superior), aqui estão mais duas. Supondo que você queira uma borda azul com 3px de espessura. Na seção de estilo, você pode adicionar

.blueB {background-color:blue; height:3px} or
hr {background-color:blue; color:blue height:3px}

No código da tabela

<tr><td colspan='3' class='blueB></td></tr> or
<tr><td colspan='3'><hr></td></tr>

1

Outra solução para isso é border-spacingpropriedade:

table td {
  border-bottom: 2px solid black;
}

table {
  border-spacing: 0px;
}
<table>
 <tr>
   <td>ABC</td>
   <td>XYZ</td>
</table>


1

Sem borda CSS inferior:

<table>
    <thead>
        <tr>
            <th>Title</th>
        </tr>
        <tr>
            <th>
                <hr>
            </th>
        </tr>
    </thead>
</table>

0

Você não pode colocar uma borda em um elemento tr. Isso funcionou para mim no firefox e IE 11:

<td style='border-bottom:1pt solid black'>

você não pode colocar uma borda em um tr. Resposta editada para esclarecer isso.
Decko

Essa é a resposta mais simples e precisa.
JamesC

-3

HTML

<tr class="bottom-border">
</tr>

CSS

tr.bottom-border {
  border-bottom: 1px solid #222;
}

2
inútil sem colapso de fronteiras: colapso;
M1crdy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.