CSS3

CSS

Tutorial CSS: Elementos 'float' y 'clear'

CSS float: propiedades y uso. Domina las propiedades float en CSS con ejemplos prácticos y detallados.

Aprende CSS GRATIS y certifícate

Propiedad float

La propiedad float en CSS permite que un elemento quede alineado a la izquierda o derecha de su contenedor, haciendo que el texto y otros elementos floten a su alrededor. Originalmente, se utilizaba para crear layouts complejos antes de la introducción de flexbox y grid.

La sintaxis de float es simple y se aplica así:

.elemento {
    float: left; /* O right */
}

Los valores posibles para float son:

  • left: El elemento se alineará a la izquierda.
  • right: El elemento se alineará a la derecha.
  • none (valor por defecto): El elemento no flotará.
  • inherit: El elemento hereda el valor de float de su elemento padre.

Cuando se aplica float a un elemento, este se retira del flujo normal del documento, y los elementos que lo siguen en el código tienden a fluir a su alrededor. Para controlar su comportamiento, es común utilizar la propiedad clear en elementos posteriores que deberían evitar flotar a su alrededor.

Ejemplo básico:

<div class="container">
    <div class="sidebar" style="width: 30%; float: left;">
        Sidebar
    </div>
    <div class="content" style="width: 70%;">
        Main content
    </div>
</div>

Sidebar ocupa el 30% y Main content el 70%.

En este ejemplo, .sidebar flotará a la izquierda y ocupará el 30% del ancho disponible, mientras que .content ocupará el restante 70%. Es crucial asegurarse de que el total de los anchos de los elementos flotantes junto al contenido no exceda el 100% para evitar problemas visuales.

Un problema común con float es que el contenedor del elemento flotante no se extiende automáticamente para abarcar los elementos flotantes, lo que puede provocar colapsos en el diseño. Para solucionar este problema, se puede usar una técnica llamada "clearfix".

.clearfix::after {
    content: "";
    display: table;
    clear: both;
}

Y aplicarlo al contenedor:

<div class="container clearfix">
    <!-- contenido flotante -->
</div>

El clearfix asegura que el contenedor reconozca y abarque los elementos que están flotando dentro de él.

En resumen, aunque la propiedad float fue fundamental en el desarrollo de layouts en las primeras etapas del diseño web moderno, las prácticas actuales favorecen el uso de otras herramientas más sofisticadas y flexibles como flexbox y grid. Use float con cuidado y considere alternativas más modernas para la mayoría de los casos de uso.

Propiedad clear

La propiedad clear en CSS se utiliza para controlar el comportamiento de los elementos colindantes cuando se encuentran con elementos flotantes (float). Específicamente, clear indica en qué lados de un elemento no se permiten elementos flotantes posteriores. Es una herramienta esencial para manejar y corregir layouts cuando se utilizan elementos flotantes.

Los valores posibles para clear son:

  • none (valor por defecto): No se aplica ninguna restricción de limpieza.
  • left: No se permiten elementos flotantes a la izquierda del elemento.
  • right: No se permiten elementos flotantes a la derecha del elemento.
  • both: No se permiten elementos flotantes ni a la izquierda ni a la derecha del elemento.
  • inherit: El elemento hereda el valor de clear de su elemento padre.

Sintaxis de la propiedad clear:

.elemento {
    clear: both; /* O left, right, none */
}

Al aplicar clear a un elemento, se asegura que dicho elemento se posicione después de los elementos flotantes según el valor especificado. Un uso común es evitar que el contenido siguiente fluya alrededor de un elemento flotante.

<div class="container">
    <div class="sidebar" style="width: 30%; float: left;">
        Sidebar
    </div>
    <div class="content" style="width: 70%;">
        Main content
    </div>
    <div class="clear" style="clear: both;"></div> <!-- Uso de clear para corregir el layout -->
    <div class="footer">
        Footer content
    </div>
</div>

En el ejemplo anterior, la div con la clase clear y la propiedad clear: both asegura que ningún elemento flotante quede a su izquierda ni derecha, haciendo que el div de pie de página (footer) se posicione correctamente y no a un lado de los elementos flotantes.

La técnica de clearfix también aprovecha esta propiedad para asegurar que el contenedor reconozca los elementos flotantes internos y mantenga su altura apropiada. Aquí se aplica un pseudo-elemento:

.clearfix::after {
    content: "";
    display: table;
    clear: both;
}

Este pseudo-elemento después (::after) se usa para insertar contenido que limpia ambos lados (clear: both), garantizando que el contenedor abarque completamente todos los elementos flotantes dentro de él, previniendo colapsos de diseño. Esta técnica es crucial para mantener la integridad visual del layout cuando se trabaja con flotaciones.

Desuso de float y clear en la actualidad en favor de flexbox y grid

Las propiedades float y clear, aunque fundamentales en la creación de diseños web en sus principios, presentan limitaciones y frustraciones que llevaron al desarrollo de herramientas más modernas y eficaces: flexbox y grid. La razón principal para el desuso de float y clear reside en la complejidad y los hacks necesarios para crear layouts coherentes y manejables.

Flexbox

Flexbox (Flexible box layout) se introdujo para simplificar la alineación y distribución de elementos dentro de un contenedor. A diferencia de float, que retira elementos del flujo normal, flexbox trabaja directamente con el layout del contenedor padre y sus elementos hijos.

Ejemplo de uso de flexbox para un layout simple:

.contenedor {
    display: flex;
    flex-direction: row; /* Eje principal horizontalmente */
    gap: 1em; /* Espacio entre elementos */
}

.elemento {
    flex: 1;
    /* Otras propiedades para estilizar */
}
<div class="contenedor">
    <div class="elemento">Elemento 1</div>
    <div class="elemento">Elemento 2</div>
    <div class="elemento">Elemento 3</div>
</div>

3 elementos ocupando el mismo espacio en línea.

En esta configuración:

  • display: flex convierte al contenedor en un contexto flex, permitiendo el uso de todas las propiedades asociadas.
  • flex-direction: row organiza los elementos hijos de manera horizontal.
  • gap define el espacio entre los elementos hijos sin la necesidad de márgenes individuales.
  • flex: 1 asigna la misma cantidad de espacio a cada elemento hijo, haciendo que se distribuyan equitativamente.

Flexbox resuelve muchos de los problemas inherentes a float, como la alineación centralizada, distribución proporcional de espacio y reordenamiento de elementos.

Grid

Grid layout es aún más eficaz que flexbox, proporcionando una solución bidimensional para el diseño web, abarcando tanto filas como columnas. Este sistema facilita la creación de layouts complejos con control preciso de ambos ejes.

Ejemplo de uso de grid:

.contenedor {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* Tres columnas de igual ancho */
    grid-gap: 1em; /* Espacio entre elementos */
}

.elemento {
    /* Puede tener propiedades adicionales para estilizar */
}
<div class="contenedor">
    <div class="elemento">Elemento 1</div>
    <div class="elemento">Elemento 2</div>
    <div class="elemento">Elemento 3</div>
    <div class="elemento">Elemento 4</div>
    <div class="elemento">Elemento 5</div>
    <div class="elemento">Elemento 6</div>
</div>

6 elementos en 2 filas y 3 columnas.

Aquí:

  • display: grid establece un contexto de grid.
  • grid-template-columns define tres columnas de igual ancho (1fr significa una fracción del espacio disponible).
  • grid-gap define el espacio entre las celdas.

Los elementos automáticamente se distribuyen entre las columnas y filas definidas, permitiendo una gestión precisa y armoniosa del espacio dentro del contenedor. Grid también soporta alineación y áreas explícitas (grid-area), lo cual simplifica muchísimo los diseños complejos.

Comparación y ventajas

  • Alineación y distribución: Flexbox es ideal cuando se necesita alineación y distribución en un solo eje (horizontal o vertical). Grid sobresale en layouts bidimensionales con control sobre filas y columnas.
  • Simplicidad: El uso de flexbox y grid evita la necesidad de hacks como clearfix y el manejo de elementos fuera del flujo natural del documento.
  • Compatibilidad: Ambos métodos gozan de amplia compatibilidad en navegadores modernos, lo cual no suele ser un problema en la web actual.

El desuso de float y clear en favor de flexbox y grid se justifica por la mayor flexibilidad, robustez y simplicidad de estos nuevos módulos de diseño en CSS, que resuelven problemas específicos de manera más adecuada y elegante.

Aprende CSS GRATIS online

Ejercicios de esta lección Elementos 'float' y 'clear'

Evalúa tus conocimientos de esta lección Elementos 'float' y 'clear' con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

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

CSS3

Introducción Y Entorno

Sintaxis

CSS3

Sintaxis De Selectores Y Propiedades

Selectores Básicos

CSS3

Sintaxis De Selectores Y Propiedades

Herencia Y Cascada

CSS3

Sintaxis De Selectores Y Propiedades

Pseudo-clases Y Pseudo-elementos

CSS3

Sintaxis De Selectores Y Propiedades

Estilos De Fuente

CSS3

Estilización De Texto Y Fondo

Propiedades De Texto

CSS3

Estilización De Texto Y Fondo

Sombras En Texto Y Cajas

CSS3

Estilización De Texto Y Fondo

Propiedades De Fondo

CSS3

Estilización De Texto Y Fondo

Modelo De Caja

CSS3

Modelo Caja Y Posicionamiento

Propiedades De Posicionamiento

CSS3

Modelo Caja Y Posicionamiento

Propiedad 'Display'

CSS3

Modelo Caja Y Posicionamiento

Elementos 'Float' Y 'Clear'

CSS3

Modelo Caja Y Posicionamiento

Flexbox Para Crear Layouts Y Estructuras

CSS3

Flexbox Y Grid

Css Grid Para Crear Layouts Y Estructuras

CSS3

Flexbox Y Grid

Animaciones Y Transiciones

CSS3

Técnicas Modernas Y Metodologías

Variables En Css

CSS3

Técnicas Modernas Y Metodologías

Diseño Responsive Con Media Queries

CSS3

Técnicas Modernas Y Metodologías

Metodologías De Escritura En Css

CSS3

Técnicas Modernas Y Metodologías

Introducción A Tailwind Css

Tailwind CSS

Introducción Y Entorno

Instalación De Tailwind Css

Tailwind CSS

Introducción Y Entorno

Fundamentos Del Sistema De Utility-first

Tailwind CSS

Fundamentos

Fundamentos Del Diseño Responsive

Tailwind CSS

Fundamentos

Tipografía Y Fuentes En Tailwind Css

Tailwind CSS

Clases De Utilidad

Clases De Tamaño De Tailwind Css

Tailwind CSS

Clases De Utilidad

Utilidades De Espaciado Y Alineación De Tailwind Css

Tailwind CSS

Clases De Utilidad

Clases De Colores Y Fondo De Tailwind Css

Tailwind CSS

Clases De Utilidad

Clases De Bordes De Tailwind Css

Tailwind CSS

Clases De Utilidad

Hover, Focus Y Estado De Tailwind Css

Tailwind CSS

Clases De Utilidad

Transiciones Y Animaciones De Tailwind Css

Tailwind CSS

Clases De Utilidad

Contenedores Y Columnas En Tailwind Css

Tailwind CSS

Layout

Flexbox En Tailwind Css

Tailwind CSS

Layout

Grid En Tailwind Css

Tailwind CSS

Layout

Evaluación Test Tailwind Css

Tailwind CSS

Evaluación

Evaluación Código Tailwind Css

Tailwind CSS

Evaluación

Accede GRATIS a CSS y certifícate

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 float y sus valores.
  • Aplicar la propiedad clear para gestionar el flujo de elementos flotantes.
  • Implementar la técnica clearfix para evitar colapsos en el diseño.
  • Conocer las limitaciones de float y clear y cuándo optar por flexbox o grid.