Ich habe ein kleines Problem. Ich verwende FireFox 3.6 und habe die folgende DOM-Struktur:
<div class="view-row">
<div class="view-type">Type</div>
<div class="view-name">Name</div>
</div>
Und das folgende CSS:
.view-row {
width:100%;
display:table-row;
}
.view-name {
display: table-cell;
float:right;
}
.view-type {
display: table-cell;
}
Wenn ich das abnehme display:table-row
, wird es korrekt angezeigt, wobei die view-row
Breite 100% beträgt. Wenn ich es zurücklege, schrumpft es. Ich habe dies auf JS Bin eingestellt:
Was ist los?
Getestete Antwort:
Ändern Sie in der CSS-Ansicht .view:
zu:
und "float" loswerden . Alles wird wie erwartet funktionieren.
Wie in den Kommentaren vorgeschlagen, ist keine Wickeltabelle erforderlich. CSS ermöglicht das Weglassen impliziter Ebenen der Baumstruktur (in diesem Fall Zeilen). Der Grund, warum Ihr Code nicht funktioniert, ist, dass "width" nur auf Tabellenebene interpretiert werden kann, nicht auf Tabellenzeilenebene. Wenn Sie eine "Tabelle" und dann eine "Tabellenzelle" direkt darunter haben, werden sie implizit als in einer Reihe sitzend interpretiert.
Arbeitsbeispiel:
mit css:
quelle
<table><td></td></table>
sich genommen ein ungültiges HTML-Markup gemäß W3C wäre. Warum sollten Sie dem Browser anweisen, dieses Markup nachzuahmen, während es validiert wird?Beachten Sie, dass Sie gemäß der CSS3-Spezifikation Ihr Layout NICHT in ein Element im Tabellenstil einschließen müssen. Der Browser schließt auf das Vorhandensein enthaltender Elemente, wenn diese nicht vorhanden sind.
quelle
Geben Sie auf
.view-type
Klassefloat:left;
oder löschen Sie diefloat:right;
von.view-name
Bearbeiten: Wickeln Sie Ihr
<div class="view-row">
Div zum Beispiel mit einem anderen Div ein<div class="table">
und setzen Sie das folgende CSS:
Sie müssen die Tabellenstruktur verwenden, um korrekte Ergebnisse zu erzielen.
quelle
Sie können Tabellenzellen direkt in Tabellen verschachteln. Du musst einen Tisch haben. Das Starten der Tabellenzeile funktioniert nicht. Versuchen Sie es mit diesem HTML:
quelle