HDP115

Flotación y Limpieza en CSS

Aprende a utilizar las propiedades float y clear en CSS para crear diseños y manejar el flujo de elementos en tu página web.

CE

Cristian Escalante

Última actualización: 9 de abril de 2025

css
diseño web
desarrollo

Flotación y Limpieza en CSS

Las propiedades float y clear han sido durante mucho tiempo herramientas fundamentales para crear diseños en CSS. Aunque en la actualidad existen métodos más modernos como Flexbox y Grid, entender cómo funcionan float y clear sigue siendo importante, tanto para mantener código heredado como para ciertos casos de uso específicos.

La propiedad float

La propiedad float permite que un elemento se posicione a la izquierda o derecha de su contenedor, permitiendo que el texto y los elementos en línea se ajusten a su alrededor.

Valores básicos de float

.izquierda {
  float: left;
}

.derecha {
  float: right;
}

.sin-flotacion {
  float: none;
}

Ejemplo práctico: Imágenes con texto alrededor

Uno de los usos más comunes de float es colocar imágenes con texto fluyendo a su alrededor:

<div class="contenido">
  <img src="imagen.jpg" alt="Descripción" class="imagen-flotante">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, 
  nisl eget ultricies tincidunt, nisl nisl aliquam nisl, eget ultricies nisl 
  nisl sit amet nisl. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl 
  aliquam nisl, eget ultricies nisl nisl sit amet nisl.</p>
</div>
.imagen-flotante {
  float: left;
  margin-right: 15px;
  margin-bottom: 10px;
  width: 200px;
}

Creando diseños de columnas con float

Antes de Flexbox y Grid, era común usar float para crear diseños de columnas:

<div class="contenedor">
  <div class="columna">Columna 1</div>
  <div class="columna">Columna 2</div>
  <div class="columna">Columna 3</div>
</div>
.contenedor {
  width: 100%;
}

.columna {
  float: left;
  width: 33.33%;
  padding: 10px;
  box-sizing: border-box;
}

El problema del colapso de contenedor

Cuando todos los elementos dentro de un contenedor están flotando, el contenedor puede "colapsar", es decir, no expandirse para contener sus elementos flotantes. Esto ocurre porque los elementos flotantes se sacan del flujo normal del documento.

<div class="contenedor">
  <div class="elemento-flotante">Elemento flotante</div>
</div>
.contenedor {
  border: 2px solid black;
}

.elemento-flotante {
  float: left;
  width: 100px;
  height: 100px;
  background-color: lightblue;
}

En este ejemplo, el contenedor tendrá una altura de 0 (excepto por los bordes), a pesar de contener un elemento de 100px de altura.

La propiedad clear

La propiedad clear especifica si un elemento puede estar junto a elementos flotantes que lo preceden o si debe ser movido debajo de ellos. Esta propiedad es esencial para manejar el comportamiento de los elementos flotantes.

Valores de clear

.clear-left {
  clear: left; /* No permite elementos flotantes a la izquierda */
}

.clear-right {
  clear: right; /* No permite elementos flotantes a la derecha */
}

.clear-both {
  clear: both; /* No permite elementos flotantes a ningún lado */
}

.clear-none {
  clear: none; /* Permite elementos flotantes a ambos lados (valor predeterminado) */
}

Ejemplo práctico: Uso de clear

<div class="contenedor">
  <div class="izquierda">Elemento flotante izquierdo</div>
  <div class="derecha">Elemento flotante derecho</div>
  <div class="nuevo-parrafo">Este párrafo comienza en una nueva línea</div>
</div>
.izquierda {
  float: left;
  width: 45%;
  background-color: lightblue;
}

.derecha {
  float: right;
  width: 45%;
  background-color: lightgreen;
}

.nuevo-parrafo {
  clear: both;
  background-color: lightyellow;
}

Técnicas para solucionar el colapso de contenedor

1. El elemento clear

Una solución simple es añadir un elemento adicional con clear: both al final del contenedor:

<div class="contenedor">
  <div class="elemento-flotante">Elemento flotante</div>
  <div class="clear"></div>
</div>
.clear {
  clear: both;
}

2. La técnica clearfix

Una solución más elegante es usar el "clearfix hack", que utiliza pseudoelementos para solucionar el problema:

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}
<div class="contenedor clearfix">
  <div class="elemento-flotante">Elemento flotante</div>
</div>

3. Overflow

Otra técnica es usar la propiedad overflow:

.contenedor {
  overflow: auto; /* o hidden */
}

Esta técnica funciona porque crea un nuevo contexto de formato de bloque, pero puede tener efectos secundarios no deseados, como barras de desplazamiento o recorte de contenido.

Limitaciones y consideraciones

Problemas con float

  • Los elementos flotantes pueden causar problemas de diseño inesperados
  • El manejo de alturas desiguales puede ser complicado
  • No es ideal para diseños complejos o responsivos
  • Puede requerir muchos "hacks" para funcionar correctamente

Cuándo usar float hoy en día

A pesar de sus limitaciones, float sigue siendo útil para:

  1. Colocar imágenes con texto alrededor
  2. Crear diseños simples de columnas cuando no se necesita soporte para IE10 o anterior
  3. Mantener código heredado que ya utiliza floats
  4. Casos específicos donde float proporciona el comportamiento exacto que se necesita

Alternativas modernas a float

Para la mayoría de los casos de uso de diseño, existen alternativas modernas más potentes:

Flexbox

Ideal para diseños unidimensionales (filas o columnas):

.contenedor {
  display: flex;
  justify-content: space-between;
}

.columna {
  width: 32%;
}

Grid

Perfecto para diseños bidimensionales (filas y columnas):

.contenedor {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

Ejemplo completo: Combinando float con técnicas modernas

A veces, la mejor solución es combinar técnicas:

<div class="articulo">
  <img src="imagen.jpg" alt="Descripción" class="imagen-flotante">
  <h2>Título del artículo</h2>
  <p>Contenido del artículo...</p>
</div>

<div class="galeria">
  <div class="imagen">Imagen 1</div>
  <div class="imagen">Imagen 2</div>
  <div class="imagen">Imagen 3</div>
</div>
/* Uso de float para la imagen en el artículo */
.imagen-flotante {
  float: left;
  margin-right: 15px;
  width: 200px;
}

.articulo {
  overflow: auto; /* Contiene el elemento flotante */
  margin-bottom: 20px;
}

/* Uso de flexbox para la galería de imágenes */
.galeria {
  display: flex;
  justify-content: space-between;
}

.imagen {
  width: 32%;
  height: 150px;
  background-color: #f0f0f0;
}
Posicionamiento en CSS
Aprende a controlar la posición de los elementos en la págin...
Flexbox en CSS
Aprende a utilizar Flexbox para crear diseños web flexibles,...
Referencias
MDN Web Docs. CSS Float and Clear Explained - How does CSS float and clear work?. https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Floats
CSS-Tricks. All About Floats. https://css-tricks.com/all-about-floats/
W3Schools. Understanding CSS Float. https://www.w3schools.com/css/css_float.asp

Conceptos Básicos de HTML

Aprende los conceptos básicos de HTML

Conceptos Básicos de JavaScript

Aprende los conceptos básicos de JavaScript

Conceptos Básicos SQL

Aprende los conceptos básicos de SQL

Conceptos Básicos de GIT

Aprende los conceptos básicos de GIT

Conceptos Básicos de Python

Aprende los conceptos básicos de Python

Conceptos Básicos de UML

Aprende los conceptos básicos de UML

Refuerzo Academico de Herramientas de Productividad 2025