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.

Sangram Nandkhile
fonte
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;
}
tsherif
fonte
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

Nathan Manousos
fonte
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

Jpduro
fonte
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; }

simoncereska
fonte
É 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;
}
dmeyer
fonte
8

Usar

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

Substitua "thin thin" por propriedades de CSS.

Jesse
fonte
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;
}
Jeremey
fonte
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);
}
Ian Bruce
fonte
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

MUFN
fonte
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;
}
DaveTheRave
fonte
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

David Silva-Barrera
fonte
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>
Howard Cary Morris
fonte
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>

Eugen Konkov
fonte
1

Sem borda CSS inferior:

<table>
    <thead>
        <tr>
            <th>Title</th>
        </tr>
        <tr>
            <th>
                <hr>
            </th>
        </tr>
    </thead>
</table>
Gil Perez
fonte
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'>
Cajado
fonte
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;
}
vikas
fonte
2
inútil sem colapso de fronteiras: colapso;
M1crdy