Display
Last updated
Last updated
Antes de comenzar, debemos saber que cada etiqueta HTML tiene un Β«tipo de representaciΓ³n visualΒ» en el navegador, lo que habitualmente se suele denominar el tipo de caja. Si no sabes nada sobre esto, te aconsejo echarle un vistazo antes al apartado Modelo de cajas.
Recordemos que, por defecto, cada elemento HTML tiene un tipo de representaciΓ³n concreto. Como norma general (con excepciones) los elementos que se utilizan dentro de un pΓ‘rrafo, son de tipo inline
, mientras que los que se utilizan para agrupar, son de tipo block
. La propiedad display
de CSS permite modificar el comportamiento de un elemento HTML, cambiΓ‘ndolo al que le indiquemos, como por ejemplo inline
o block
(u otro de los que veremos mΓ‘s adelante).
Esta propiedad puede tomar muchos valores diferentes, pero los mΓ‘s comunes son estos tres:
block
: hace que el comportamiento del elemento sea como un bloque.
inline
: el elemento se renderizarΓ‘ en lΓnea con otros elementos.
inline-block
: el elemento tendrΓ‘ un comportamiento mezcla entre los dos anteriores, que ahora voy a describir.
Estos se utiliza para alterar el flujo noramle de una pagina web. En el queso de que no seppas lo que es el flujo normal, la documentaciΓ³n de la MDN define el flujo normal de la siguiente manera:
El flujo normal, o flow Layout, es la forma en que los elementos de bloque y en lΓnea se muestran en una pΓ‘gina antes de que se realicen cambios en su diseΓ±o.
Los elementos en lΓnea no admiten dimensiones (width, height) pero si admiten margin, padding y border, solo ocupan lo que tengan en su contenido, es decir, aunque quieras declarar un ancho y alto a un elemento de lΓnea no podrΓ‘ tener efecto ya que estos elementos no aceptan dimensiones, asΓ tambiΓ©n lo explica la documentaciΓ³n de la MDN:
Aunque puedas aplicarle margin, padding y border a un elementos en linea tiene algunas pegas:
Si el padding
o el border
es muy grande, ese este no respetara los elementos de bloque, se los comera. Sin embargo si respeta los elementos en linea
Si se solapa con margenes de los elementos en bloque, los de bloque ganara, es decir se superponeran.
Si hay varios elementos en lΓnea estarΓ‘n colocados de izquierda a derecha (uno al lado de otro).
Por ejemplo, el elemento HTML <span>
es un elemento de lΓnea por defecto y no importa cuΓ‘ntas etiquetas <span>
haya, siempre aparecerΓ‘n en lΓnea o, en otras palabras, una inmediatamente despuΓ©s de la otra, produciendo una cadena continua de texto.
Un elemento de bloque es un elemento que ocupa el ancho mΓ‘ximo disponible. Tal y como dice la documentaciΓ³n de la MDN:
De manera predeterminada, el contenido de un elemento de nivel de bloque es el 100% del ancho de su elemento padre y su altura viene determinada por su contenido.
Esto nos quiere decir que los elementos de tipo bloque abarcan el 100% del espacio que tengan disponible, es decir, se estiran por todo el ancho de la pΓ‘gina.
Cabe mencionar que estos elementos si admiten dimensiones pero no pueden tener otro elemento a su lado ya que abarcan todo el espacio que tengan disponible por lo tanto estarΓ‘n colocados de arriba hacia abajo.
Es una combinaciΓ³n entre los dos tipos de elementos mencionados anteriormente (block e inline), los elementos con el valor inline-block
admiten dimensiones pero todavΓa son elementos de lΓnea, es decir estarΓ‘n colocados uno al lado de otro.
Ele elemento
<img>
es un elemento con la propiedaddisplay: inline-block;