48 Stimmen

CSS: Wie erhalte ich einen Rahmen am unteren Rand von Tabellenzeilen, außer in der letzten Zeile?

Ich habe eine variable Anzahl von Tabellenzeilen (n), und ich möchte, dass der Rand unten für die Zeilen 0 (n-1) gilt

Wie kann ich das tun?

58voto

KP. Punkte 12720

Sie haben zwei Möglichkeiten: (1) Sie fügen der letzten Zeile eine spezielle Klasse im HTML-Code hinzu, oder (2) Sie verwenden die :last-child Pseudoklasse in Ihrem CSS.

Option 1: Spezialisierte Klasse

Wenn Sie Klassen auf Ihr HTML anwenden können, können Sie der letzten Zeile eine spezielle Klasse hinzufügen. Wenn Ihr Markup von einem serverseitigen Skript (z. B. einem PHP-Skript) generiert wird, müssen Sie dieses Skript bearbeiten, um ähnliche Markups hinzuzufügen.

HTML:

<table>
   <tr>
      <td>
      </td>
   </tr>
   <tr>
      <td>
      </td>
   </tr>
   <tr class="last">
      <td>
      </td>
   </tr>
</table>

CSS:

table
{
   border-collapse:collapse;
}
tr
{
   border-bottom: 1px solid #000;
}
tr.last
{
   border-bottom: none;
}

Option 2: CSS-Pseudoklasse

Die Alternative ist die Verwendung der :last-child CSS-Pseudoklasse. Die Verwendung der :last-child Klasse erfordert keine Änderungen am HTML-Code und kann daher die bessere Wahl sein, wenn Sie nicht in der Lage sind, den HTML-Code zu ändern. Das CSS ist fast identisch mit dem oben genannten:

CSS:

table
{
   border-collapse:collapse;
}
tr
{
   border-bottom: 1px solid #000;
}
tr:last-child
{
   border-bottom: none;
}

Der Nachteil dieses Ansatzes ist, dass Versionen von Internet Explorer vor 9 unterstützen nicht die :last-child Pseudoklasse.

0 Stimmen

Ich habe eine variable Anzahl von Zeilen. Ich habe also keine Ahnung, wann die letzte Zeile ist =\

3 Stimmen

@DerNalia, wenn Sie eine dynamische Anzahl von Zeilen haben, haben Sie ein serverseitiges oder clientseitiges Skript, das diese generiert. Ich würde vorschlagen, die Frage mit dieser Sprache zu taggen, damit wir Ihnen bei der Umsetzung des ersten Vorschlags von @KP helfen können. Wie :last-child {border-bottom: 0 none transparent; (oder ähnlich) ist die einzige reine CSS-Option.

0 Stimmen

Wenn es für Sie in Ordnung ist, kein reines CSS zu verwenden, dann könnte Ihr Generierungsskript class="last" auf das letzte generierte Element anwenden.

26voto

Nate Punkte 24336

Ich weiß, dies ist eine alte Frage, aber es ist erwähnenswert, dass jetzt mit CSS3 alles, was Sie tun müssen, ist die Verwendung der not() Selektor in Ihrem CSS, etwa so:

tr:not(:last-child) {
    border-bottom: 1px solid #E3E3E3;
}

0 Stimmen

Ja, aber es entfernt den Rahmen vom letzten Abschnitt des Eintrags

0 Stimmen

@BenjaminSeche Leicht zu vermeiden: nur auswählen tr Elemente, die Kinder sind von tbody . Etwas wie table>tbody>tr:not(:last-child) sollte das genügen.

15voto

Bryan Butler Punkte 151
tr:last-child td {
    border-bottom: none;
}

Das erspart Ihnen das Anlegen einer Klasse am letzten Tag.

6voto

Dies wird bei jedem Klassenaufruf in html verwendet

tr:last-child {
    border-bottom: none;
}

1voto

Sie können auch so vorgehen

table tr:not(:last-of-type) { border-bottom: none; }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X