Esto solo será una pequeño comentario sobre el valor inline-block para display que fue introducido en la especificación CSS2.1.
La especificación define a inline-block:
This
value causes an element to generate a block box, which itself is flowed
as a single inline box, similar to a replaced element. The inside of an
inline-block is formatted as a block box, and the element itself is
formatted as an inline replaced element.
Desmembrando un poco esa definición:
Generate a block box
display: block son aplicables aquí también. Eso significa poder modificar las propiedades width, height, margin-top y margin-bottom. Un elemento con display: inline debe ignorar cualquier valor para esas propiedades, por lo que ya hay una ventaja.
is flowed as a single inline box
inline box está hablando de lineas de texto.
La cita completa quiere decir que el elemento se ubica dentro de una
linea de texto; y no crea un salto de linea como lo hace normalmente un
bloque (entiendase bloque como cualquier elemento definido como display: block.
The inside of an inline-block is formatted as a block box
inline-block funciona como un tipo block para los elementos hijos. Sé que por el momento no tiene mucho sentido, pero les aseguro qe se le puede sacar ventaja a esta cualidad.
The element itself is formatted as an inline replaced element
block, para sus ascendentes es de tipo inline. Además, que funcione como un elemento inline
implica que su ancho (por defecto) esté determinado por su contenido; dicho de otra manera, será tan angosto como las lineas de contenido se lo permitan. Por otro lado, cuando habla de replaced element, el mejor ejemplo son las imagenes (IMG). El elemento IMG es reemplazado por una imagen, que es tipo inline y cuyo tamaño (ancho y alto del elemento) está determinado por las dimensiones de la imagen en sí.Un par de cajas con la propiedad width definida y que se ubican dentro de un linea.
span {display:inline-block;
width:45px;
background:#ccc;
}
<span>inline-block 1</span> Lorem Ipsum dolor <span>inline-block 2</span><br>
<span>inline-block 3</span> Lorem Ipsum dolor <span>inline-block 4</span>
Ejemplo 1: Dos inline-block en la misma linea. Vale mencionar que estos elementos, al funcionar igual que las imagenes, respetan la linea de renglón. Más información en Espacio bajo las imagenes.
Otro caso sería tener un elemento tipo block que queremos que se adecue a su contenido y que además esté centrado.
body {text-align:center}
div {display:inline-block;
background:#ccc;
}
<div>Lorem ipsum<br>
dolor sit amet<br>
consectetuer adipiscing elit.<br>
Aenean sed neque…</div>
Ejemplo 2: Elemento tipo block adecuado a su contenido y centrado. Normalmente DIV un ocupa todo el ancho disponible, pero al estar funcionando como inline, el ancho depende del contenido. Otro detalle importante que ya no puede centrarse usando margin:auto sino que, como todo texto, se centra usando text-align:center.
inline-block, hay que tener en cuenta que este valor recién fue introducido en la versión 2.1 de CSS. Esta revisión en particular se mantiene todavia como una Candidate Recommendation por lo que no es totalmente oficial y usar las novedades no es válido. Dicho de otra manera, usar inline-block implica que el archivo CSS deje de validar. No es que sea cuestión de vida o muerte, pero bien vale la advertencia para prevenir sustos o quejas.
inline.
inline-block. Estos elementos, al funcionar como texto, deben respetar el renglón. Pero al aplicar un color de fondo al elemento, queda claro que IE lo extiende por debajo del renglón invadiendo el espacio de los descendentes de las letras.
inline-block juntos (en la misma linea) y uno de ellos tiene definida un valor diferente a auto para height, el texto dentro elemento con height:auto escapa de su contenedor y se alinea con el texto del otro elemento. El siguiente código daría problemas en Opera.
span {display:inline-block;}
<span style="height:90px">lorem</span> <span>ipsum</span>
inline-block-moz-inline-block-moz-inline-box.