Czy taka rzecz jest możliwa przy użyciu CSS i dwóch tagów DIV z wbudowanym blokiem (lub czymkolwiek) zamiast tabeli?
Wersja tabeli jest następująca (dodano ramki, dzięki czemu można ją zobaczyć):
<!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>
Tworzy lewą kolumnę o STAŁEJ SZEROKOŚCI (nie procentowej szerokości) i prawą kolumnę, która rozszerza się, aby wypełnić PRZESTRZEŃ POZOSTAŁĄ w wierszu. Brzmi dość prosto, prawda? Ponadto, ponieważ nic nie jest „unoszone”, wysokość kontenera nadrzędnego odpowiednio powiększa się, aby objąć wysokość zawartości.
- POCZĄTEK RANT
- Widziałem implementacje „clear fix” i „Holy Graal” dla układów wielokolumnowych z kolumną boczną o stałej szerokości, a one są do kitu i są skomplikowane. Odwracają kolejność elementów, używają szerokości procentowych lub używają liczb zmiennoprzecinkowych, marginesów ujemnych, a związek między atrybutami „lewy”, „prawy” i „margines” jest złożony. Co więcej, układy są wrażliwe na subpiksele, więc dodanie nawet jednego piksela ramek, wypełnienia lub marginesów spowoduje uszkodzenie całego układu i przeniesienie zawijania całych kolumn do następnego wiersza. Na przykład błędy zaokrąglania są problemem, nawet jeśli próbujesz zrobić coś prostego, na przykład umieścić 4 elementy w linii, a szerokość każdego z nich wynosi 25%.
--END RANT--
Próbowałem użyć „inline-block” i „white-space: nowrap;”, ale problem polega na tym, że po prostu nie mogę uzyskać drugiego elementu do wypełnienia pozostałego miejsca w linii. Ustawienie szerokości na coś w rodzaju „szerokość: 100% - (LeftColumWidth) px” będzie działać w niektórych przypadkach, ale wykonywanie obliczeń we właściwości width nie jest tak naprawdę obsługiwane.
display: table-*
konstrukcję, która zadziała, ale nie jest też tak naprawdę „bardziej semantyczna” (jest to straszny przypadekdiv
zupy) i łamie kompatybilność z IE6. Osobiście trzymałbym się tego<table>
, chyba że komuś uda się wymyślić genialny prosty pomysł, który działa bez