È possibile utilizzare CSS e due tag DIV a blocco inline (o qualsiasi altra cosa) invece di utilizzare una tabella?
La versione della tabella è questa (bordi aggiunti in modo da poterlo vedere):
<!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>
Produce una colonna sinistra con una LARGHEZZA FISSA (non una larghezza percentuale) e una colonna destra che si espande per riempire LO SPAZIO RIMANENTE sulla linea. Sembra abbastanza semplice, vero? Inoltre, poiché nulla viene "flottato", l'altezza del contenitore principale si espande correttamente per comprendere l'altezza del contenuto.
--BEGIN RANT--
Ho visto le implementazioni "clear fix" e "holy grail" per layout multi-colonna con colonna laterale a larghezza fissa, e fanno schifo e sono complicate. Invertono l'ordine degli elementi, usano larghezze percentuali o usano float, margini negativi e la relazione tra gli attributi "sinistra", "destra" e "margine" è complessa. Inoltre, i layout sono sensibili ai sub-pixel in modo che l'aggiunta di un solo pixel di bordi, riempimento o margini interrompa l'intero layout e invii intere colonne alla riga successiva. Ad esempio, gli errori di arrotondamento sono un problema anche se si tenta di fare qualcosa di semplice, come mettere 4 elementi su una linea, con la larghezza di ognuno impostata al 25%.
--END RANT--
Ho provato a usare "inline-block" e "white-space: nowrap;", ma il problema è che non riesco proprio a ottenere il 2 ° elemento per riempire lo spazio rimanente sulla linea. L'impostazione della larghezza su "larghezza: 100% - (LeftColumWidth) px" funzionerà in alcuni casi, ma l'esecuzione di un calcolo in una proprietà di larghezza non è realmente supportata.
display: table-*
costrutto che funzionerà, ma non è nemmeno "più semantico" (essendo un terribile caso didiv
zuppa) e rompe la compatibilità con IE6. Personalmente mi atterrei a<table>
, a meno che qualcuno non riesca a trovare un'idea geniale semplice che funzioni senza