¿Cuál es exactamente la diferencia entre los valores inliney inline-blockde CSS display?
607
Imagina un <span>elemento dentro de a <div>. Si le da al <span>elemento una altura de 100 px y un borde rojo, por ejemplo, se verá así con
pantalla: en línea

pantalla: bloque en línea

bloqueo de pantalla

Código: http://jsfiddle.net/Mta2b/
Los elementos con display:inline-blockson como display:inlineelementos, pero pueden tener un ancho y una altura . Eso significa que puede usar un elemento de bloque en línea como bloque mientras lo fluye dentro del texto u otros elementos.
Diferencia de estilos admitidos como resumen:
margin-left, margin-right, padding-left,padding-rightmargin, padding, height,width
p,divobtienen una línea de ancho completo (forzar un salto de línea) pero respetan el ancho / alto y todos los rellenos / márgenes horizontales / verticales. Los elementos de bloque en línea tienen el mismo comportamiento que el bloque pero sin salto de línea completo (se pueden colocar otros elementos junto a ellos)display: inline;es un modo de visualización para usar en una oración. Por ejemplo, si tiene un párrafo y desea resaltar una sola palabra, debe hacerlo:El
<em>elemento tiene undisplay: inline;valor predeterminado, porque esta etiqueta siempre se usa en una oración. El<p>elemento tiene undisplay: block;valor predeterminado, porque no es ni una oración ni una oración, es un bloque de oraciones.Un elemento con
display: inline;no puede tener unaheighto unawidtho una verticalmargin. Un elemento condisplay: block;puede tener unwidth,heightymargin.Si desea agregar
heighta al<em>elemento, debe establecer este elemento endisplay: inline-block;. Ahora puede agregarheighta al elemento y a cualquier otro estilo de bloque (lablockparte deinline-block), pero se coloca en una oración (lainlineparte deinline-block).fuente
displayvalores.¡Una cosa que no se menciona en las respuestas es que el elemento en línea puede romperse entre líneas mientras que el bloqueo en línea no puede (y obviamente bloquea)! Por lo tanto, los elementos en línea pueden ser útiles para diseñar oraciones de texto y bloques dentro de ellos, pero como no se pueden rellenar, puede usar altura de línea .
fuente
Todas las respuestas anteriores aportan información importante sobre la pregunta original. Sin embargo, hay una generalización que parece incorrecta.
Es posible establecer el ancho y la altura de al menos un elemento en línea (que se me ocurra): el
<img>elemento.Ambas respuestas aceptadas aquí y en este duplicado afirman que esto no es posible, pero esto no parece ser una regla general válida.
Ejemplo:
El
imgtienedisplay: inline, pero suwidthyheightse establecieron con éxito.fuente
La respuesta de splattne probablemente cubrió la mayor parte de todo, así que no repetiré lo mismo, pero:
inlineyinline-blockcomportarme de manera diferente con ladirectionpropiedad CSS.Dentro del siguiente fragmento que ve
one two(en orden) se representa, como lo hace en los diseños LTR. Sospecho que el navegador aquí detectó automáticamente la parte en inglés como texto LTR y la procesó de izquierda a derecha.Sin embargo, si sigo adelante y configuro
displayainline-block, el navegador parece respetar ladirectionpropiedad y renderiza los elementos de derecha a izquierda en orden, por lo quetwo onese representa.No sé si hay otras peculiaridades en esto, solo encontré esto empíricamente en Chrome.
fuente