Ich habe eine einfache Tabelle, die für einen Posteingang wie folgt verwendet wird:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
Wie stelle ich die Breite so ein, dass Von und Datum 15% der Seitenbreite und der Betreff 70% betragen. Ich möchte auch, dass die Tabelle die gesamte Seitenbreite einnimmt.
html
css
html-table
Alamodey
quelle
quelle
width attribute
; Es wird ein verwendetCSS *style* width
, wodurch das Attribut <col> width ersetzt wurde. (Trotz der vielen Leute, die diesen Kommentar hochgestimmt haben !!)span="1"
ist überflüssig, da 1 die Standardeinstellung ist.HTML:
CSS:
Die beste Vorgehensweise besteht darin, HTML und CSS getrennt zu halten, um weniger Code zu duplizieren und Bedenken zu trennen (HTML für Struktur und Semantik und CSS für Präsentation).
Beachten Sie, dass Sie Ihrer Tabelle möglicherweise eine bestimmte Breite (z. B. 900 Pixel) zuweisen müssen, damit dies in älteren Versionen von Internet Explorer funktioniert. Dieser Browser hat einige Probleme beim Rendern eines Elements mit prozentualen Abmessungen, wenn sein Wrapper keine genauen Abmessungen hat.
quelle
Verwenden Sie das folgende CSS. Die erste Deklaration stellt sicher, dass Ihre Tabelle die von Ihnen angegebenen Breiten einhält (Sie müssen die Klassen in Ihrem HTML-Code hinzufügen):
quelle
table{table-layout:fixed};.from,.date{width:15%}
aus. Sofern die Klassen nicht auch für andere Elemente verwendet werden, ist das Schreibenth.from
redundant und kann auf nur verkürzt werden.from
.Alternative Möglichkeit mit nur einer Klasse, während Ihre Stile in einer CSS-Datei gespeichert werden, die sogar in IE7 funktioniert:
In jüngerer Zeit können Sie auch den
nth-child()
Selektor von CSS3 (IE9 +) verwenden, in den Sie nur die Nummer eingeben würden. der jeweiligen Spalte in die Klammer, anstatt sie mit dem benachbarten Selektor zu verbinden. So zum Beispiel:quelle
:nth-child
Lösung ist in Bezug auf die Leistung schrecklich. In diesem Beispiel gibt es keinen gültigen Grund, es zu verwenden (insbesondere mit dem universellen Selektor), wenn nur drei Elemente (th
odercol
) zu stylen sind. Außerdem müssen Sie nur die Breiteth
in der ersten Zeile festlegen . Das.mytable td
im ersten Beispiel ist redundant.tr
und ob sie dazu gehören.mytable
. Wenn Sie wirklich "nth" verwenden möchten, ist so etwas wahrscheinlich viel besser :.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. In diesem Fall muss auch die dritte Spaltenbreite nicht angegeben werden..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Die "n-ten" Selektoren selbst mögen sehr nützlich sein, aber in diesem speziellen Fall (eine winzige Tabelle mit nur 3 Spalten) werden sie nicht wirklich benötigt. Bei der Verwendung könnentable-layout: fixed
Sie sogar genau dies tun :table{table-layout:fixed}th:first-child+th{width:70%}
.Dies sind meine beiden Vorschläge.
Klassen verwenden. Die Breite der beiden anderen Spalten muss nicht angegeben werden, da sie vom Browser automatisch auf jeweils 15% festgelegt werden.
Ohne Klassen zu benutzen. Drei verschiedene Methoden, aber das Ergebnis ist identisch.
ein)
b)
c) Dieser ist mein Favorit. Wie b), jedoch mit besserer Browserunterstützung.
quelle
Abhängig von Ihrem Körper (oder dem Div, der Ihre Tabelle umhüllt) sollten Sie in der Lage sein, dies zu tun:
Demo
quelle
quelle
Demo
quelle
Versuchen Sie dies stattdessen.
quelle
Verwenden Sie nicht das Rahmenattribut, sondern CSS für alle Ihre Styling-Anforderungen.
Das Einbetten von CSS ist jedoch eine schlechte Praxis - man sollte stattdessen CSS-Klassen verwenden und die CSS-Regeln in eine externe CSS-Datei einfügen.
quelle
Hier ist eine weitere minimale Möglichkeit, dies in CSS zu tun, die auch in älteren Browsern funktioniert, die keine
:nth-child
und ähnliche Selektoren unterstützen: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
quelle
Fügen Sie colgroup nach Ihrem Tabellen-Tag hinzu. Definieren Sie hier die Breite und Anzahl der Spalten. und füge tbody tag hinzu. Stecke dein Tr in den Körper.
quelle
quelle