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.


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

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


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


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


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

8

Verwenden

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

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


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

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);
}

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


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

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)


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>


1

Kein CSS-Rand unten:

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

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

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

2
nutzlos ohne Grenzkollaps: Kollaps;
m1crdy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.