float
La propiedad CSS float
ubica un elemento al lado izquierdo o derecho de su contenedor, permitiendo a los elementos de texto y en línea aparecer a su costado. El elemento es removido del normal flujo de la página, aunque aún sigue siendo parte del flujo (a diferencia del posicionamiento absoluto).
Pruébalo
La fuente de este ejemplo interactivo está almacenada en un repositorio de GitHub. Si deseas contribuír a los ejemplos interactivos del proyecto, por favor clonar https://github.com/mdn/interactive-examples y enviarnos una solicitud de extracción -pull request-.
Un elemento flotante es un elemento en el que el valor calculado
de float
no es igual a none
.
Como float
implica el uso del layout de bloques, este modifica el valor calculado de los valores display
, en algunos casos:
Valor especificado | Valor Computado |
---|---|
inline | block |
inline-block | block |
inline-table | table |
table-row | block |
table-row-group | block |
table-column | block |
table-column-group | block |
table-cell | block |
table-caption | block |
table-header-group | block |
table-footer-group | block |
inline-flex | flex |
inline-grid | grid |
otros | sin cambios |
Nota: Al referirse a una propiedad desde JavaScript como un miembro del objeto element.style, hay que tener en cuenta que los navegadores modernos soportan float
pero en navegadores más antiguos hay que escribir la propiedad como cssFloat
, otros navegadores como Internet Explorer 8 y anteriores utilizan styleFloat
. Fue una excepción a la regla, que el nombre del miembro DOM sea el nombre camel-case (styleFloat) del nombre CSS (style-float) separado por guión (debido al hecho que "float" es una palabra reservada en JavaScript, es necesario escapar "class" como "className" y escapar "for" de la etiqueta como "htmlFor" ).
Sintáxis
/* Valores clave || Keyword values */ float: left; float: right; float: none; float: inline-start; float: inline-end; /* Valores globales || Global values */ float: inherit; float: initial; float: unset;
Valores
left
El elemento debe flotar a la izquierda de su bloque contenedor.
right
El elemento debe flotar a la derecha de su bloque contenedor.
none
El elemento no deberá flotar.
inline-start
El elemento debe flotar en el costado de inicio de su bloque contenedor. Esto es el lado izquierdo con scripts ltr
y el lado derecho con scripts rtl
.
inline-end
-
El elemento debe flotar en el costado de término de su bloque contenedor . Esto es el lado derecho con scripts
ltr
y el lado izquierdo con scriptsrtl
.
Definición Formal
Valor inicial | none |
---|---|
Applies to | all elements, but has no effect if the value of display is none . |
Heredable | no |
Valor calculado | como se especifica |
Animation type | discrete |
Sintáxis Formal
float =
block-start |
block-end |
inline-start |
inline-end |
snap-block |
<snap-block()> |
snap-inline |
<snap-inline()> |
left |
right |
top |
bottom |
none |
footnote
<snap-block()> =
snap-block( <length> , [ start | end | near ]? )
<snap-inline()> =
snap-inline( <length> , [ left | right | near ]? )
Ejemplos
Como son ubicados los elements flotantes
Como se ha mencionado más arriba, cuando un elemento flota, es removido del flujo normal del documento (aunque sigue perteneciendo a él). Se cambia hacia la izquierda, o hacia la derecha, hasta que toca el límite de su caja contenedora, u otro elemento flotante.
En este ejemplo, hay tres cuadrados de color. Dos flotan hacia la izquierda, y uno hacia la derecha. Nota cómo el segundo cuadrado de la izquierda se coloca a la derecha del primero. Si agregamos cuadrados adicionales se continuarían apilando hacia la derecha, hasta que hayan llenado la caja contenedora, y luego rellenarían la siguiente línea.
Un elemento flotante es al menos tan alto como su elemento hijo flotante más alto. En el ejemplo se le da al elemento padre width: 100%
y la propiedad de flotante para asegurar que es lo suficientemente alto para encajar con sus hijos flotantes, y asegurar que ocupa el ancho -width- del padre de modo de no tener que limpiar su pariente adyacente.
HTML
<section>
<div class="left">1</div>
<div class="left">2</div>
<div class="right">3</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tristique
sapien ac erat tincidunt, sit amet dignissim lectus vulputate. Donec id
iaculis velit. Aliquam vel malesuada erat. Praesent non magna ac massa
aliquet tincidunt vel in massa. Phasellus feugiat est vel leo finibus
congue.
</p>
</section>
CSS
section {
border: 1px solid blue;
width: 100%;
float: left;
}
div {
margin: 5px;
width: 50px;
height: 150px;
}
.left {
float: left;
background: pink;
}
.right {
float: right;
background: cyan;
}
RESULTADO:
Limpiando (clearing) flotantes
A veces querrás forzar un item a moverse por debajo de elementos flotantes. Por ejemplo, párrafos que han de permanecer adyacentes a elementos flotantes, pero forzar a los encabezados a estar en su propia línea. Para ello revisa el siguiente ejemplo: clear
Especificaciones
Specification |
---|
Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification # propdef-float |
CSS Logical Properties and Values Level 1 # float-clear |
Compatibilidad con navegadores
BCD tables only load in the browser