CSS
Tutorial CSS: Propiedad 'display'
CSS display: propiedades y uso. Domina las propiedades de display en CSS mediante ejemplos prácticos y detallados.
¿Qué es la propiedad display y para qué sirve en CSS?
La propiedad display
en CSS es fundamental para el control del diseño y estructura de los documentos HTML. Define cómo se debe mostrar un elemento en el modelo de caja de CSS. Puede alterar significativamente la disposición visual y la relación espacial de los elementos dentro de un contenedor o a lo largo de una página web.
La propiedad display
cuenta con varios valores que pueden cambiar un elemento de ser una simple línea de texto a un contenedor que gestione otros elementos, o incluso a una estructura de grilla compleja. En términos técnicos, display
gobierna la generación de cajas de contenido y define el comportamiento de estas cajas en el contexto del flujo del documento.
Valores como block
, inline
, flex
, y grid
, entre otros, modifican la presentación y el comportamiento del flujo de los elementos respecto al contenido adyacente. Usando estos valores, podemos hacer que un elemento se comporte como un contenedor de bloque, una caja de línea, o incluso como parte de un diseño complejo de rejillas. Además, display
puede combinar valores en configuraciones compuestas como inline-block
, donde un elemento adquiere características tanto de elementos en línea como de bloque.
Para ilustrar cómo afecta la propiedad display
a los elementos, consideremos algunos ejemplos simples:
/* Elemento como bloque */
div {
display: block;
}
/* Elemento en línea */
span {
display: inline;
}
/* Contenedor flexible */
section {
display: flex;
}
/* Contenedor de rejilla */
article {
display: grid;
}
/* Valor compuesto (bloque en línea) */
button {
display: inline-block;
}
Al usar display
adecuadamente, podemos construir layouts robustos y mantener el control sobre el comportamiento adaptativo y la alineación de los elementos, esenciales para el diseño responsivo. Es una de las propiedades más potentes y versátiles en CSS, permitiendo tanto controlar el flujo de documentos simples, como crear interfaces complejas y dinámicas.
Valores de display para elementos en bloque y línea
En CSS, los valores más básicos y fundamentales de la propiedad display
son block
y inline
. Estos valores determinan si un elemento se mostrará como un bloque que ocupa todo el ancho disponible de su contenedor o como una caja en línea que sólo ocupa el espacio necesario.
display: block
Un elemento con display: block
se comporta como un bloque de nivel superior. Ocupa todo el ancho disponible de su contenedor y comienza en una nueva línea. Ejemplos de elementos que por defecto tienen esta propiedad incluyen <div>
, <h1>
, <p>
, <header>
, <footer>
, etc.
.block-element {
display: block;
}
Características:
- Comienza en una nueva línea.
- Ocupa todo el ancho disponible.
- Respeta los márgenes y el padding tanto vertical como horizontal.
display: inline
Un elemento con display: inline
se comporta como parte del flujo de texto. Sólo ocupa el espacio necesario para su contenido y no comienza en una nueva línea. Ejemplos de elementos que por defecto tienen esta propiedad incluyen <span>
, <a>
, <strong>
, etc.
.inline-element {
display: inline;
}
Características:
- No comienza en una nueva línea.
- Sólo ocupa el espacio necesario.
- Respeta los márgenes y el padding sólo horizontalmente, no verticalmente.
display: inline-block
El valor inline-block
es una combinación de block
e inline
, donde el elemento se comporta como un inline
pero puede aceptar las características de un block
, como el margen y el padding vertical.
.inline-block-element {
display: inline-block;
Características:
- No comienza en una nueva línea.
- Ocupa sólo el espacio necesario.
- Respeta los márgenes y el padding tanto vertical como horizontal.
Ejemplos prácticos
Ejemplo 1: Lista horizontal de navegación
Imagina que quieres crear una barra de navegación horizontal. Utilizarías display: inline
o display: inline-block
en los elementos de la lista (<li>
):
<nav>
<ul>
<li><a href="#">Inicio</a></li>
<li><a href="#">Servicios</a></li>
<li><a href="#">Contacto</a></li>
</ul>
</nav>
nav ul {
padding: 0;
margin: 0;
list-style: none;
}
nav ul li {
display: inline-block;
margin-right: 10px;
}
Ejemplo 2: Botones alineados horizontalmente
Para alinear botones horizontalmente sin ocupar todo el ancho del contenedor:
<div class="button-container">
<button class="btn">Aceptar</button>
<button class="btn">Cancelar</button>
</div>
.button-container {
text-align: center; /* Centra los botones */
}
.button-container .btn {
display: inline-block;
margin: 0 5px; /* Espaciado horizontal entre botones */
}
En resumen, los valores block
y inline
son esenciales para definir el comportamiento y disposición básica de cualquier elemento HTML dentro del diseño de una página web. Comprender estas diferencias y cómo aplicar combinaciones como inline-block
es clave para construir layouts eficientes y estructurados en CSS.
Valores de display en Flexbox
display: flex
es un valor de la propiedad display
que activa el modelo Flexbox en un contenedor. Cuando un contenedor tiene display: flex
, todos sus hijos directos se convierten en elementos flexibles (flex items), permitiendo un control avanzado sobre la alineación, dirección y distribución del espacio entre estos elementos.
Propiedades básicas de flex
Al aplicar display: flex
, se habilitan varias propiedades adicionales que controlan la disposición de los elementos hijos:
- flex-direction: Define la dirección principal del contenedor flex. Puede ser:
row
: Los elementos se disponen en una fila, de izquierda a derecha.row-reverse
: Los elementos se disponen en una fila, de derecha a izquierda.column
: Los elementos se disponen en una columna, de arriba a abajo.column-reverse
: Los elementos se disponen en una columna, de abajo a arriba.
.flex-container {
display: flex;
flex-direction: row;
}
- justify-content: Define cómo se distribuye el espacio entre los elementos a lo largo del eje principal.
flex-start
: Los elementos se agrupan al inicio del contenedor.flex-end
: Los elementos se agrupan al final del contenedor.center
: Los elementos se centran a lo largo del eje principal.space-between
: Se crea un espacio uniforme entre los elementos.space-around
: Los espacios entre los elementos y los bordes son iguales.
.flex-container {
display: flex;
justify-content: space-between;
}
- align-items: Define cómo se alinean los elementos a lo largo del eje transversal del contenedor.
flex-start
: Los elementos se alinean al inicio del eje transversal.flex-end
: Los elementos se alinean al final del eje transversal.center
: Los elementos se centran a lo largo del eje transversal.baseline
: Los elementos se alinean según su línea base textual.stretch
: Los elementos se estiran para llenar el contenedor.
.flex-container {
display: flex;
align-items: center;
}
- flex-wrap: Define si los elementos deben o no ajustarse (wrap) a una nueva línea si no caben en el contenedor.
nowrap
: Los elementos no se ajustan, todos permanecen en una sola línea.wrap
: Los elementos se ajustan a una nueva línea si es necesario.wrap-reverse
: Igual quewrap
, pero en dirección inversa.
.flex-container {
display: flex;
flex-wrap: wrap;
}
Propiedades de los elementos flexibles
Además de las propiedades del contenedor flex, los elementos dentro de un contenedor flex también pueden tener propiedades específicas:
- flex-grow: Determina cómo se dividirá el espacio extra en el contenedor. Un valor mayor significa que el elemento crecerá más en comparación con otros.
.flex-item {
flex-grow: 2; /* Este elemento crecerá el doble que los que tengan flex-grow: 1 */
}
- flex-shrink: Determina cómo se reducirá el tamaño del elemento si el espacio es insuficiente. Un valor mayor significa que el elemento se encogerá más.
.flex-item {
flex-shrink: 1; /* Este elemento se encogerá menos que uno con flex-shrink: 2 */
}
- flex-basis: Define el tamaño inicial del elemento antes de distribuir el espacio restante.
.flex-item {
flex-basis: 100px; /* Tamaño inicial del elemento */
}
- align-self: Permite sobreescribir la propiedad
align-items
del contenedor para un solo elemento.
.flex-item {
align-self: center; /* Este elemento se centrará en el eje transversal */
}
Ejemplo práctico
Vamos a crear un layout simple con un contenedor flex y varios elementos flexibles. El contenedor tendrá una dirección de fila (row
), los elementos estarán distribuidos uniformemente (space-around
), y alineados al centro (center
).
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
</div>
.flex-container {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
height: 80vh;
border: 1px solid #ccc;
}
.flex-item {
flex-grow: 1;
flex-basis: 100px;
flex-shrink: 1;
text-align: center;
padding: 10px;
border: 1px solid #000;
}
Este código crea un contenedor flex que distribuye tres elementos de manera equitativa, proporcionándoles espacio adicional para crecer y centrando todos los elementos a lo largo del eje vertical.
Valores de display en grid
display: grid
es un valor de la propiedad display
que activa el modelo de rejilla (grid) en un contenedor. Este modelo permite la creación de diseños complejos con dos dimensiones (filas y columnas), gestionando de manera eficiente la disposición de los elementos hijos en un sistema de rejilla.
Al activar display: grid
en un contenedor, se puede definir un número fijo o flexible de filas y columnas, así como el tamaño y la posición de los elementos en dicha rejilla.
Para crear una rejilla básica, se utilizan propiedades como grid-template-columns
y grid-template-rows
que especifican la estructura de la rejilla.
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, auto);
}
En este ejemplo, grid-template-columns
crea tres columnas de igual tamaño utilizando la fracción (fr
), y grid-template-rows
ajusta automáticamente las alturas de dos filas basadas en su contenido.
Elementos de la rejilla
Cada elemento hijo dentro de un contenedor display: grid
puede colocarse en una o más celdas de la rejilla mediante propiedades como grid-column
y grid-row
.
.item-1 {
grid-column: 1 / span 2; /* Ocupa dos columnas */
grid-row: 1 / 2; /* Ocupa la primera fila */
}
.item-2 {
grid-column: 3 / 4; /* Ocupa la tercera columna */
grid-row: 1 / 3; /* Ocupa dos filas empezando desde la primera */
}
Estas propiedades permiten un control detallado sobre la posición y el tamaño de los elementos en la rejilla.
Definición de áreas de la rejilla
Se pueden definir áreas de la rejilla mediante grid-template-areas
. Esto proporciona una manera intuitiva de nombrar y organizar diferentes secciones de la rejilla.
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: auto;
grid-template-areas:
"header header header"
"sidebar content content"
"footer footer footer";
}
.header {
grid-area: header;
}
.sidebar {
grid-area: sidebar;
}
.content {
grid-area: content;
}
.footer {
grid-area: footer;
}
Utilizando grid-area
, se asignan nombres a las áreas definidas, haciendo que la disposición del diseño sea más clara y legible.
Propiedades adicionales de la rejilla
- gap: Define el espacio entre filas y columnas de la rejilla.
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, auto);
gap: 10px;
}
- justify-items: Alinea los elementos a lo largo del eje horizontal dentro de sus celdas.
.container {
display: grid;
justify-items: center;
}
- align-items: Alinea los elementos a lo largo del eje vertical dentro de sus celdas.
.container {
display: grid;
align-items: center;
}
- justify-content: Alinea toda la rejilla dentro del contenedor a lo largo del eje horizontal.
.container {
display: grid;
justify-content: center;
}
- align-content: Alinea toda la rejilla dentro del contenedor a lo largo del eje vertical.
.container {
display: grid;
align-content: center;
}
Ejemplo práctico
Vamos a crear un diseño de página simple usando el modelo de Grid CSS. La página contendrá un encabezado, una barra lateral, una sección de contenido principal y un pie de página.
<div class="grid-container">
<header class="header">Encabezado</header>
<aside class="sidebar">Barra lateral</aside>
<main class="content">Contenido principal</main>
<footer class="footer">Pie de página</footer>
</div>
.grid-container {
display: grid;
grid-template-areas:
"header header header"
"sidebar content content"
"footer footer footer";
grid-template-columns: 1fr 3fr;
gap: 10px;
}
.header {
grid-area: header;
background-color: lightblue;
}
.sidebar {
grid-area: sidebar;
background-color: lightcoral;
}
.content {
grid-area: content;
background-color: lightgoldenrodyellow;
}
.footer {
grid-area: footer;
background-color: lightgreen;
}
Este código divide la página en un encabezado, una barra lateral, una área de contenido principal y un pie de página, distribuidos de manera clara y organizada en una rejilla de dos filas y tres columnas.
Utilizando display: grid
, se pueden gestionar layouts complejos con mayor flexibilidad y control sobre la disposición de los elementos, lo que es esencial para construir diseños responsivos y bien organizados.
Valores compuestos de display
Los valores compuestos de display
permiten combinar propiedades y comportamientos de diferentes modelos de visualización en un solo valor. Esto facilita la creación de layouts que requieren características tanto de contenedores de bloques como de elementos en línea. A continuación, se describen algunos de los valores compuestos más comunes y su uso en CSS.
display: inline-block
inline-block
combina las características de los elementos en línea (inline
) y de los elementos de bloque (block
). Los elementos con display: inline-block
se colocan en línea junto a otros elementos en línea, pero permiten definir propiedades de bloques como el ancho, el alto, los márgenes y el padding.
.inline-block-element {
display: inline-block;
width: 150px;
height: 100px;
margin: 10px;
}
En este ejemplo, los elementos con clase .inline-block-element
se alinean horizontalmente como elementos en línea pero mantienen las capacidades de estilo de un bloque.
display: inline-flex
inline-flex
combina las características de elementos en línea con la flexibilidad de un contenedor flex
. Un elemento con inline-flex
se alinea horizontalmente con otros elementos en línea pero se comporta como un contenedor flex
en su interior.
.inline-flex-container {
display: inline-flex;
justify-content: space-between;
align-items: center;
}
En este caso, un contenedor con display: inline-flex
permite a sus elementos hijos compartir el mismo conjunto de alineación y distribución espacial establecido por el modelo Flexbox, mientras permanece en línea con otros elementos en el flujo del documento.
display: inline-grid
inline-grid
combina las características de los elementos en línea con la robustez de un contenedor de rejilla (grid
). Un elemento con inline-grid
se alinea como un elemento en línea, pero su contenido puede organizarse según las reglas de una rejilla CSS.
.inline-grid-container {
display: inline-grid;
grid-template-columns: repeat(3, 100px);
grid-gap: 15px;
}
En este diseño, el contenedor con display: inline-grid
permite a los elementos hijos colocarse en una rejilla, pero sin romper el flujo en línea del documento.
display: run-in
run-in
es un valor compuesto menos conocido que transforma un elemento en línea si se coloca antes de un elemento de bloque, o en un bloque si aparece después de otro bloque. Esta capacidad de adaptarse dinámicamente dentro de un flujo específico es útil en ciertas situaciones de diseño.
<div class="run-in-element">Texto de run-in</div>
<p>Texto de párrafo.</p>
.run-in-element {
display: run-in;
}
En este ejemplo, el div
con clase .run-in-element
se comporta como en línea si se encuentra con un bloque posterior o como un bloque si se coloca antes de otro bloque.
Cada uno de estos valores compuestos proporciona herramientas adicionales al desarrollador para crear layouts más complejos y flexibles, manteniendo tanto la alineación de elementos en línea como las ventajosas propiedades de los contenedores de bloques, flexibles o de rejilla. El uso adecuado de estos valores permite optimizar el diseño y comportamiento de los elementos dentro de una página web, potenciando las capacidades del CSS para producir interfaces dinámicas y adaptativas.
Ejercicios de esta lección Propiedad 'display'
Evalúa tus conocimientos de esta lección Propiedad 'display' con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Modelo de caja
Propiedad 'display'
Modelo de caja
Propiedades de posicionamiento
Sombras en texto y cajas
Variables en CSS
Metodologías de escritura CSS: BEM, SMACSS, OOCSS
Grid en diseños de cuadrícula
Propiedades de texto
Animaciones y transiciones
Introducción a CSS
Selectores avanzados
Flexbox en diseños modernos
Sintaxis básica
Sintaxis
Página web completa con Bootstrap
Estilos de fuente
Sintaxis avanzada
Herencia y cascada
Selectores básicos
Diseño responsive con media queries
Pseudo-clases y pseudo-elementos
Flexbox en diseños modernos
Elementos 'float' y 'clear'
Propiedades de texto
Propiedades de fondo
Selectores básicos
Todas las lecciones de CSS
Accede a todas las lecciones de CSS y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Css
Introducción Y Entorno
Sintaxis
Sintaxis De Selectores Y Propiedades
Selectores Básicos
Sintaxis De Selectores Y Propiedades
Herencia Y Cascada
Sintaxis De Selectores Y Propiedades
Pseudo-clases Y Pseudo-elementos
Sintaxis De Selectores Y Propiedades
Estilos De Fuente
Estilización De Texto Y Fondo
Propiedades De Texto
Estilización De Texto Y Fondo
Sombras En Texto Y Cajas
Estilización De Texto Y Fondo
Propiedades De Fondo
Estilización De Texto Y Fondo
Modelo De Caja
Modelo Caja Y Posicionamiento
Propiedades De Posicionamiento
Modelo Caja Y Posicionamiento
Propiedad 'Display'
Modelo Caja Y Posicionamiento
Elementos 'Float' Y 'Clear'
Modelo Caja Y Posicionamiento
Flexbox Para Crear Layouts Y Estructuras
Flexbox Y Grid
Css Grid Para Crear Layouts Y Estructuras
Flexbox Y Grid
Animaciones Y Transiciones
Técnicas Modernas Y Metodologías
Variables En Css
Técnicas Modernas Y Metodologías
Diseño Responsive Con Media Queries
Técnicas Modernas Y Metodologías
Metodologías De Escritura En Css
Técnicas Modernas Y Metodologías
Introducción A Tailwind Css
Introducción Y Entorno
Instalación De Tailwind Css
Introducción Y Entorno
Fundamentos Del Sistema De Utility-first En Tailwind Css
Fundamentos
Fundamentos Del Diseño Responsive En Tailwind Css
Fundamentos
Tipografía Y Fuentes En Tailwind Css
Clases De Utilidad
Clases De Tamaño De Tailwind Css
Clases De Utilidad
Utilidades De Espaciado Y Alineación De Tailwind Css
Clases De Utilidad
Clases De Colores Y Fondo De Tailwind Css
Clases De Utilidad
Clases De Bordes De Tailwind Css
Clases De Utilidad
Hover, Focus Y Estado De Tailwind Css
Clases De Utilidad
Transiciones Y Animaciones De Tailwind Css
Clases De Utilidad
Contenedores Y Columnas En Tailwind Css
Layout
Flexbox En Tailwind Css
Layout
Grid En Tailwind Css
Layout
Conocimiento General De Tailwind Css - Evaluación Multirespuesta
Evaluación
Conocimiento General De Tailwind Css - Evaluación Código
Evaluación
Certificados de superación de CSS
Supera todos los ejercicios de programación del curso de CSS y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender la funcionalidad de la propiedad
display
en CSS. - Diferenciar entre los valores
block
,inline
,inline-block
y sus aplicaciones. - Utilizar
display: flex
y sus propiedades (flex-direction
,justify-content
,align-items
) para crear layouts flexibles. - Aplicar
display: grid
para gestionar diseños de rejilla complejos. - Implementar valores compuestos de
display
comoinline-block
,inline-flex
yinline-grid
en el diseño web. - Adaptar diseños responsivos utilizando la propiedad
display
.