¿Es posible usar CSS y dos etiquetas DIV de bloque en línea (o lo que sea) en lugar de usar una tabla?
La versión de la tabla es esta (se agregaron bordes para que pueda verla):
<!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 columna izquierda con un ANCHO FIJO (no un ancho porcentual) y una columna derecha que se expande para llenar EL ESPACIO RESTANTE en la línea. Suena bastante simple, ¿verdad? Además, dado que nada está "flotando", la altura del contenedor principal se expande adecuadamente para abarcar la altura del contenido.
- COMIENCE RANT--
He visto las implementaciones de "solución clara" y "santo grial" para diseños de varias columnas con columna lateral de ancho fijo, y apestan y son complicadas. Invierten el orden de los elementos, usan anchos porcentuales o flotadores, márgenes negativos y la relación entre los atributos "izquierdo", "derecho" y "margen" es compleja. Además, los diseños son sensibles a los subpíxeles, por lo que agregar incluso un solo píxel de bordes, relleno o márgenes romperá todo el diseño y enviará columnas completas a la siguiente línea. Por ejemplo, los errores de redondeo son un problema incluso si intenta hacer algo simple, como poner 4 elementos en una línea, con el ancho de cada uno establecido en 25%.
--END RANT--
Intenté usar "inline-block" y "white-space: nowrap;", pero el problema es que simplemente no puedo obtener el segundo elemento para llenar el espacio restante en la línea. Establecer el ancho en algo como "ancho: 100% - (LeftColumWidth) px" funcionará en algunos casos, pero realizar un cálculo en una propiedad de ancho no es realmente compatible.
display: table-*
construcción que funcione, pero tampoco es realmente "más semántica" (siendo un terrible caso dediv
sopa) y rompe la compatibilidad con IE6. Personalmente me quedaría con el<table>
, a menos que alguien logre tener una idea simple y genial que funcione sin