Fügen Sie der Tabellenzeile <tr> den unteren Rand hinzu

386

Ich habe eine Tabelle von 3 mal 3. Ich brauche eine Möglichkeit, einen Rand für den unteren Rand jeder Zeile hinzuzufügen trund ihm eine bestimmte Farbe zu geben.

Zuerst habe ich den direkten Weg versucht, dh:

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

Aber das hat nicht funktioniert. Also habe ich CSS wie folgt hinzugefügt:

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

Das hat immer noch nicht funktioniert.

Ich würde lieber CSS verwenden, da ich dann nicht stylejeder Zeile ein Attribut hinzufügen muss. Ich habe dem kein borderAttribut hinzugefügt <table>. Ich hoffe, dass dies mein CSS nicht beeinträchtigt.

Sangram Nandkhile
quelle
Wenn das Inline-Styling (erstes Beispiel in Ihrer Frage) nicht funktioniert, ist es unwahrscheinlich, dass das eingebettete Styling (zweites Beispiel) funktioniert. Sie sollten auch die Verfügbarkeit von Attributen für das Element untersuchen, das Sie stylen möchten
Tass
Wenn Sie einen Rand unten für Tabelle tr haben möchten, können Sie diesem jsfiddle.net/7awN4
AllenC
6
Nur eine Notiz, um zukünftige Suchende zu ermutigen, nach unten zu @ Nathan Manousos 'Antwort zu scrollen - es ist wahrscheinlich die Lösung, nach der Sie suchen
Henry

Antworten:

400

Ich hatte vorher so ein Problem. Ich glaube nicht, dass trman ein Border-Styling direkt nehmen kann. Meine Problemumgehung bestand darin, das tds in der Reihe zu stylen:

<tr class="border_bottom">

CSS:

tr.border_bottom td {
  border-bottom:1pt solid black;
}
tsherif
quelle
27
Beachten Sie, dass Sie mit dieser Lösung höchstwahrscheinlich eine Lücke in der Grenze zwischen td haben. simoncereskas Antwort kümmert sich darum, aber beachten Sie, dass es mit gepunkteten oder gestrichelten
Randtypen
24
Sie können dies auch beheben, indem Sie cellspacing="0"als Attribut hinzufügen <table>(siehe diese Frage ). Ich weiß jedoch nicht, wie dies mit gepunkteten oder gestrichelten Rändern aussehen wird.
Stefan van den Akker
5
trkann das Rahmen-Styling im reduzierenden Rand-Modell übernehmen. @ Sangram, erwäge, eine Antwort zu akzeptieren, die dies anstelle dieser berücksichtigt, nein?
Robert Siemer
Dies funktioniert nicht, wenn zwischen den Tabellenzellen ein Abstand besteht. Wenn eine Polsterung vorhanden ist, wird der Rand sichtbar in Teile geteilt.
Timothy Gonzalez
und Ihr Tisch braucht diesen Stil <table style = "border-kollaps: kollaps">
Oguz
511

Fügen Sie border-collapse:collapseIhrer Tabellenregel hinzu:

table { 
    border-collapse: collapse; 
}

Verknüpfung

Nathan Manousos
quelle
2
Dies funktioniert nicht von alleine. Sie können die Zeile immer noch nicht formatieren, aber Sie können die Zellen formatieren.
Renan
49
Du liegst falsch, @Renan. Das kollabierende Rahmenmodell macht Zeilenrahmen genau stilisierbar. Gemäß CSS-Abschnitt 17.6 : Im separaten Rahmenmodell „Zeilen können [...] keine Rahmen haben (dh Benutzerprogramme müssen die Rahmeneigenschaften für diese Elemente ignorieren).“ „Im kollabierenden Rahmenmodell ist es möglich, Rahmen anzugeben, die eine Zelle, eine Zeile [und] eine Zeilengruppe [...] oder einen Teil davon umgeben.“ Übrigens: Es funktioniert in meinem Browser (Chromium 37).
Robert Siemer
12
Ich denke, einige Leute könnten verwirrt sein (wie ich) und bemerken nicht, dass der Randkollapsstil auf dem Tisch festgelegt werden muss, nicht auf der Zeile.
Porlune
Scheint, dass Chrome diese Funktion nicht hat, obwohl es andere Funktionen zum Reduzieren von Rahmen unterstützt.
Liqun So
72

Verwenden Sie border-collapse:collapseauf dem Tisch und border-bottom: 1pt solid black;auf dem tr

Jpduro
quelle
6
Das Setzen eines Rahmens auf dem tr ist selbst dann unbrauchbar, wenn der Rand zusammengebrochen ist. Sie müssen es auf dem tds des tr
Radu Simionescu
9
@RaduSimionescu Falsch, es funktioniert einwandfrei auf dem trmit zusammengeklappten Rand.
Styphon
Keine Auswirkung in FF 45.0.1.
Imrek
41

Verwenden

border-collapse:collapse wie Nathan schrieb und du musst einstellen

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

simoncereska
quelle
So würde ich es auch machen! Fügen Sie den Rand auf dem td hinzu und verwenden Sie den Randkollaps auf dem Tisch
Sayan
30

Hier gibt es viele unvollständige Antworten. Da Sie dem trTag keinen Rahmen zuweisen können, müssen Sie ihn wie folgt auf das tdoder die thTags anwenden :

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

tdWenn Sie dies tun, bleibt zwischen den beiden ein kleiner Abstand , was wahrscheinlich nicht wünschenswert ist, wenn der Rand so aussehen soll, als wäre er das trTag. Um sozusagen "die Lücken zu füllen", müssen Sie die border-collapseEigenschaft für das tableElement verwenden und ihren Wert collapsewie folgt festlegen :

table {
  border-collapse: collapse;
}
dmeyer
quelle
8

Verwenden

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

Ersetzen Sie "dünnen Feststoff" durch CSS-Eigenschaften.

Jesse
quelle
7

Zeigen Sie die Zeile als Block an.

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

und um alternative Farben einfach anzuzeigen:

tr.oddrow {
    display: block;
    border-bottom: 1px solid #F00;
}
Jeremey
quelle
11
Nicht eine gute Idee , um Satzdisplay: blockfürtr‚s. Verwenden Siestattdessentr td { border-bottom: ... }Anzeigetr.oddrow td { border-bottom: ... }
vladr
4
Anzeigeblock könnte das Tabellenlayout zerstören. Rand-Zusammenbruch: Zusammenbruch auf dem Tisch selbst ist definitiv die beste Lösung
N4ppeL
7

Mit der box-shadowEigenschaft können Sie einen Rand eines trElements fälschen . Stellen Sie die Y-Position von box-shadow(unten als 2 Pixel dargestellt) ein, um die Dicke anzupassen.

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
quelle
6

Ich habe versucht hinzuzufügen

    table {
      border-collapse: collapse;
    }   

neben dem

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

und dann den Grenzkollaps auskommentiert, um zu sehen, was funktioniert hat. Nur der tr-Selektor mit der Eigenschaft am unteren Rand hat für mich funktioniert!

Kein Border CSS ex.

Kein Border CSS ex.

Kein Grenzfoto live

Kein Grenzfoto live

CSS Border ex.

CSS Border ex.

Tisch mit Randfoto live

Tisch mit Randfoto live

MUFN
quelle
2

Ich habe bei dieser Methode festgestellt, dass sich durch den Abstand zwischen den td-Elementen eine Lücke im Rand gebildet hat, aber ich habe keine Angst ...

Ein Weg, um dies zu umgehen:

<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>

Mit dem CSS:

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

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

Sie können dasselbe auch für die gesamte Zeile tun.

Es gibt border-bottom-style, border-top-style, border-left-style, border-right-style. Oder einfachborder-style das gilt für alle vier Grenzen gleichzeitig.

Weitere Details finden Sie hier (und VERSUCHEN SIE SICH online)

David Silva-Barrera
quelle
2

Einige interessante Antworten. Da Sie nur einen Rand unten (oder oben) wollen, sind hier zwei weitere. Angenommen, Sie möchten einen 3px dicken blauen Rand. Im Stilbereich können Sie hinzufügen

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

Auch im Tabellencode

<tr><td colspan='3' class='blueB></td></tr> or
<tr><td colspan='3'><hr></td></tr>
Howard Cary Morris
quelle
1

Eine andere Lösung hierfür ist border-spacingEigenschaft:

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

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

Eugen Konkov
quelle
1

Kein CSS-Rand unten:

<table>
    <thead>
        <tr>
            <th>Title</th>
        </tr>
        <tr>
            <th>
                <hr>
            </th>
        </tr>
    </thead>
</table>
Gil Perez
quelle
0

Sie können einem tr-Element keinen Rahmen hinzufügen. Dies funktionierte für mich in Firefox und IE 11:

<td style='border-bottom:1pt solid black'>
Stange
quelle
Sie können keine Grenze zu einem tr setzen. Bearbeitete Antwort, um dies zu verdeutlichen.
Decko
Das ist die einfachste und genaueste Antwort.
JamesC
-3

HTML

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

CSS

tr.bottom-border {
  border-bottom: 1px solid #222;
}
vikas
quelle
2
nutzlos ohne Grenzkollaps: Kollaps;
m1crdy