Display
block
Uno encima del otro
Ocupan el 100% del ancho de la página por defecto (a no ser que se hayan establecido márgenes o lo que sea).
inline
Uno al lado del otro
No se les puede aplicar márgenes superior ni inferior, padding, etc. Sí tienen margin-left y margin-right.
No respetan ni width ni height.
Ocupan el ancho que necesita su contenido (por ej. la longitud de una
palabra dentro de una etiqueta a
)
inline-block
Mezcla de ambos
Se colocan como elementos en línea (uno al lado del otro)
Ocupan solo el ancho que su contenido requiere
Pero SÍ se les puede aplicar márgenes superior e inferior, padding, etc. (como a los de bloque)
display: none vs. visibility: hidden
display: none;
This value removes the element to which you apply it from the document flow. This means that the element is not visible and it also doesn't "block its position". Other elements can (and will) take its place instead.
visibility: hidden;
If you only want to hide an element but you want to keep its place (i.e. other elements don't fill the empty spot.
The element is only invisible, it's not removed from the document flow and of course also not from the DOM.
Cómo crear un header
que contenga un div
con un logo y una nav
compuesta de una ul
, mediante la propiedad display: inline-block;
HTML
CSS
Añadido a posteriori:
Para alinear los items (el logo y la nav), se usa la propiedad vertical-align: middle; en cada elemento
a alinear (el div
que contiene el logo y la nav
).
(Recordar que align-items:
center;
es solo para Flexbox).