Ist so etwas mit CSS und zwei Inline-Block-DIV-Tags (oder was auch immer) möglich, anstatt eine Tabelle zu verwenden?
Die Tabellenversion lautet wie folgt (Rahmen hinzugefügt, damit Sie sie sehen können):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<table style="width:100%;">
<tr>
<td style="border:1px solid black;width:100px;height:10px;"></td>
<td style="border:1px solid black;height:10px;"></td>
</tr>
</table>
</body>
</html>
Es wird eine linke Spalte mit einer FESTEN BREITE (keine prozentuale Breite) und eine rechte Spalte erstellt, die erweitert wird, um den verbleibenden Bereich in der Zeile auszufüllen . Klingt ziemlich einfach, oder? Da außerdem nichts "schwebt", wird die Höhe des übergeordneten Containers ordnungsgemäß erweitert, um die Höhe des Inhalts zu erfassen.
--BEGIN RANT--
Ich habe die Implementierungen "Clear Fix" und " Holy Grail " für mehrspaltige Layouts mit seitlicher Spalte mit fester Breite gesehen, und sie saugen und sind kompliziert. Sie kehren die Reihenfolge der Elemente um, verwenden prozentuale Breiten oder verwenden Gleitkommazahlen, negative Ränder, und die Beziehung zwischen den Attributen "links", "rechts" und "Rand" ist komplex. Darüber hinaus sind die Layouts subpixelempfindlich, sodass durch Hinzufügen eines einzelnen Pixels mit Rändern, Auffüllungen oder Rändern das gesamte Layout unterbrochen und ganze Spalten in die nächste Zeile umgebrochen werden. Zum Beispiel sind Rundungsfehler ein Problem, selbst wenn Sie versuchen, etwas Einfaches zu tun, z. B. 4 Elemente in eine Linie zu setzen, wobei die Breite jedes Elements auf 25% festgelegt ist.
--END RANT--
Ich habe versucht, "Inline-Block" und "White-Space: Nowrap;" zu verwenden, aber das Problem ist, dass ich das zweite Element nicht dazu bringen kann, den verbleibenden Platz in der Zeile zu füllen . Das Festlegen der Breite auf "width: 100% - (LeftColumWidth) px" funktioniert in einigen Fällen, aber das Durchführen einer Berechnung in einer width-Eigenschaft wird nicht wirklich unterstützt.
display: table-*
Konstrukt umzuwandeln, das funktionieren wird, aber auch nicht wirklich "semantischer" ist (ein schrecklicher Fall vondiv
Suppe) und die IE6-Kompatibilität bricht. Ich persönlich würde mich an die halten<table>
, es sei denn, jemand schafft es, eine geniale, einfache Idee zu entwickeln, die ohne funktioniert