¿Qué significa flotar? Función clara para resolver problemas. Diferencias entre elementos flotantes y de posición

Hace un par de años, cuando los desarrolladores comenzaron a pasar al marcado HTML sin tablas, la propiedad flotante de CSS de repente asumió un papel muy importante. La razón por la que la propiedad flotante se volvió tan común fue porque, de forma predeterminada, los elementos del bloque no se alineaban uno al lado del otro en un formato basado en columnas. Dado que las columnas son necesarias en prácticamente todos los esquemas CSS, esta propiedad se ha acostumbrado e incluso se ha abusado de ella.

Propiedad flotar en CSS, permite al desarrollador incluir columnas similares a tablas en el formato HTML sin utilizar tablas. Si no fuera por la propiedad flotar, entonces los diseños CSS no serían posibles más que usar el posicionamiento absoluto y relativo, lo que sería descuidado y haría que el diseño fuera imposible de mantener.

En este artículo te contamos que es una propiedad flotar y cómo afecta a elementos en contextos específicos. También veremos algunas de las diferencias que pueden surgir con esta propiedad en los navegadores más utilizados. Finalmente, demostraremos varias aplicaciones prácticas de la propiedad. flotar. Esto también debería proporcionar una discusión completa y exhaustiva de esta propiedad y su impacto en el desarrollo de CSS.

Definición y sintaxis de la propiedad flotante CSS

El propósito de la propiedad flotante es empujar un elemento de bloque hacia la izquierda o hacia la derecha, sacándolo del flujo de documentos. Esto permite que el contenido actual colapse naturalmente alrededor del elemento flotante. Este concepto es similar a lo que se ve todos los días en la literatura impresa, donde las fotografías y otros elementos gráficos están alineados hacia un lado y el contenido (generalmente texto) fluye naturalmente alrededor del elemento alineado alrededor del borde izquierdo o derecho.

La imagen de arriba muestra la sección "Lectores" del sitio de la revista .net con 3 fotografías de lectores alineadas a la izquierda en sus columnas con texto que rodea las imágenes. Esta es la idea básica detrás de la propiedad flotante en diseños CSS y demuestra una de las técnicas utilizadas en el diseño tabular.

La eficacia del uso de flotadores en diseños de varias columnas fue explicada por Douglas Bowman en 2004 en su presentación clásica No More Tables:

Bowman explicó los principios detrás del diseño sin tablas, utilizando un antiguo sitio de Microsoft como referencia. Los flotadores se utilizaron de manera destacada en su falsa revisión del marcado de Microsoft.

Sintaxis

La propiedad Float puede tomar uno de 4 valores: izquierda, derecha, ninguno y heredar. Esto se declara como se muestra en el siguiente código:

#barra lateral (flotante: izquierda;)

#barra lateral (

flotador: izquierda;

Los valores más utilizados son izquierda y derecha. El valor none o el valor flotante inicial para cualquier elemento de página HTML es el valor predeterminado. El valor heredado, que se puede aplicar a casi todas las propiedades CSS, no funciona en las versiones de Internet Explorer, incluida la 7.

La propiedad float no requiere que se aplique ninguna otra propiedad al elemento float; sin embargo, para funcionar correctamente, float funcionará de manera más eficiente bajo ciertas circunstancias.

Normalmente, un elemento flotante debería tener establecer explícitamente el ancho(a menos que sea un elemento reemplazado, como una imagen). Esto garantiza que float se comporte como se espera y ayuda a evitar problemas en algunos navegadores.

#barra lateral (flotante: izquierda; ancho: 350px;)

#barra lateral (

flotador: izquierda;

ancho: 350 px;

Características de los elementos flotantes.

A continuación se muestra una lista del comportamiento de los elementos flotantes, según la especificación CSS2:

Un bloque flotante a la izquierda flotará hacia la izquierda hasta que su borde izquierdo (o límite de borde si no hay borde) toque el borde del contenido del bloque o el borde de otro bloque flotante.

Si el tamaño de un bloque flotante excede el espacio horizontal disponible, entonces el bloque flotante se desplazará hacia abajo

Los elementos de bloque no posicionados ni flotantes actúan como elementos flotantes, es decir, está fuera del flujo de documentos

Los bordes de un bloque flotante no coincidirán con los bordes de los bloques adyacentes

Elemento raíz ( ) no puede flotar

Un elemento en línea, uno que está flotando, se convierte en un elemento de bloque

Flotar en la práctica

El caso de uso más común de la propiedad flotante es hacer flotar una imagen con texto envolviéndola. Por ejemplo:

Enean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.

Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egetas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.

El CSS aplicado a la imagen en el cuadro de arriba se ve así:

img (flotante: izquierda; margen: 0 15px 5px 0; borde: sólido 1px #bbb;)

img(

flotador: izquierda;

margen: 0 15px 5px 0;

borde: sólido 1px #bbb;

La única propiedad que puede lograr este efecto es la propiedad flotante. Las otras propiedades (margen y borde) están ahí por razones estéticas. Otros elementos del bloque (etiquetas

Con texto en ellos) no necesitan ningún estilo.

Como se mencionó anteriormente, los elementos flotantes se eliminan del flujo del documento y otros elementos de bloque permanecen en el flujo, actuando como si el elemento flotante ni siquiera estuviera allí. Esto se demuestra visualmente a continuación:

Este cuadro flota hacia la izquierda.

Este

El elemento tiene un color de fondo diferente para mostrar que abarca el ancho de su padre, ignorando el elemento flotante. Este texto en línea, sin embargo, se ajusta alrededor del cuadro flotante.

En el ejemplo anterior

elemento a nivel de bloque, por lo que ignora el elemento flotante que abarca el ancho del contenedor (menos el relleno). Todos los elementos de tipo bloque no flotantes se comportarán de manera similar.

El texto de un párrafo está en línea, por lo que envuelve el elemento flotante. El bloque flotante también tiene opciones de margen para separarlo del párrafo, haciéndolo visualmente limpio para que el elemento del párrafo ignore el bloque flotante.

Flotadores de limpieza

Los problemas de diseño con elementos flotantes generalmente se resuelven utilizando la propiedad CSS clara, que le permite "eliminar" elementos flotantes de la izquierda o la derecha, o ambos.

Veamos un ejemplo que se ve con frecuencia: un pie de página que rodea el lado derecho de un diseño de 2 clones:

La columna izquierda flotó hacia la izquierda

Si miras la página de IE6 e IE7, no verás ningún problema. Las columnas izquierda y derecha están en su lugar y el pie de página está en la parte inferior. Pero en Firefox, Opera, Safari y Chrome, verás que el pie de página se sale de su lugar. Esto se debe a la aplicación de flotador a las columnas. Este es un comportamiento correcto, aunque es más problemático. Para resolver este problema, utilizamos la propiedad clara anterior, relativa al pie de página:

#pie de página (claro: ambos;)

#pie de página (

claro: ambos;

El resultado se muestra a continuación:

La columna izquierda flotó hacia la izquierda

La columna derecha también flotó hacia la izquierda

La propiedad clear borrará solo los elementos flotantes, por lo que aplicar clear:ambas a ambas columnas no provocará que el pie de página se despliegue, porque el pie de página no es un elemento flotante.

La propiedad clear borrará sólo los elementos flotantes. El uso de clear es este: ambas columnas no omitirán el pie de página porque no es un elemento flotante.

Por lo tanto, use clear en elementos no flotantes, e incluso a veces en elementos flotantes, para forzar a los elementos de la página a ocupar sus posiciones designadas.

Solucionar la deserción de los padres

Una de las características más comunes del marcado flotante es "dejar-padre". Esto se demuestra en el siguiente ejemplo:

Habitante pellentesco morbi tristique senectus et netus et malesuada famas ac turpis egetas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egetas sempre.

Observe que la base de la imagen flotante aparece fuera de su padre. El padre no está completamente expandido para contener la imagen flotante. Esto se debe a lo que comentamos anteriormente: el elemento flotante está fuera del flujo natural del documento, aunque se muestran todos los elementos del bloque, pero el elemento flotante no está allí. Esto no es un error de CSS, todo está de acuerdo con las especificaciones de CSS. Todos los navegadores hacen lo mismo en este ejemplo. Cabe decir que, en este ejemplo, agregar ancho de contenedor puede evitar el problema en IE, pero también debería resolver el problema en Firefox, Opera, Safari o Chrome.

Solución 1: Flotador para contenedor

La forma más sencilla de resolver este problema es hacer flotar el elemento padre:

Habitante pellentesco morbi tristique senectus et netus et malesuada famas ac turpis egetas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egetas sempre.

El contenedor ahora se expande para dar cabida a todos los elementos secundarios. Pero desafortunadamente, esta solución sólo funcionará en un número limitado de casos, ya que el padre flotante puede tener consecuencias no deseadas para su diseño.

Solución 2: agregar marcas adicionales

Este es un método obsoleto, pero es una opción sencilla. Simplemente agregue un elemento adicional al fondo del contenedor y "límpielo". Así es como se verá el código HTML después de implementar este método:

HTML

Habitante pellentesco morbi tristique senectus et netus et malesuada famas ac turpis egetas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egetas sempre.

"//media.smashingmagazine.com/cdn_smash/wp-content/uploads/2009/10/lifesaver.jpg" ancho = "200" alto = "222" alt = "" />

Habitante pellentesco morbi tristique senectus et netus et malesuada famas ac turpis egetas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egetas sempre.

Y como resultado, el CSS se aplica a los nuevos elementos:

Clearfix (claro: ambos;)

Borrar (

claro: ambos;

También puedes hacer esto a través de
etiqueta con el estilo actual. De cualquier manera, obtendrá el resultado deseado: el contenedor principal se expandirá para incluir a todos sus hijos. Pero no se recomienda este método porque agrega código no semántico a su marcado.

Solución 3: el pseudoelemento posterior

El pseudoelemento :after agrega un elemento a la página HTML representada. Este método se ha utilizado bastante para resolver problemas de limpieza de flotadores. Así es como se ve el CSS:

Clearfix:después (contenido: "."; visualización: bloque; altura: 0; claro: ambos; visibilidad: oculto;)

Borrar corrección: después (

contenido : "." ;

mostrar: bloquear;

altura: 0;

claro: ambos;

visibilidad: oculta;

La clase CSS "clearfix" se aplica a cualquier contenedor que tenga hijos flotantes y no se expanda para incluirlos.

Pero este método no funciona para Internet Explorer hasta la versión 7, por lo que para IE debe utilizar una de las siguientes opciones:

Clearfix (pantalla: bloque en línea;) .clearfix (zoom: 1;)

Borrar (

pantalla: bloque en línea;

Borrar (

zoom: 1;

Dependiendo del tipo de problema, se trata de una de dos soluciones que resolverán este problema en Internet Explorer. Cabe señalar que la propiedad de zoom no es una propiedad estándar de Microsoft y, por lo tanto, su CSS dejará de ser válido.

Dado que el pseudoelemento :after no funciona en IE6/7, el código está un poco inflado y complicado, y se requiere un estilo adicional que no es válido sólo para IE, por lo que esta solución no es la mejor manera, pero sí Probablemente el mejor que hemos visto todavía.

Solución 4: propiedad de desbordamiento

Con diferencia, la mejor y más sencilla forma de resolver el problema de abandono principal es agregar overflow: hide o overflow: auto al elemento principal. Es claro, fácil de mantener, funciona en casi todos los navegadores y no agrega ningún marcado innecesario.

Observe que dije "casi" en todos los navegadores. Esto se debe a que no funciona en IE6. Pero, en muchos casos, el contenedor principal tendrá un ancho establecido, lo que soluciona el problema en IE6. Si el contenedor principal no tiene ancho, puede agregar un estilo único de IE6 con el siguiente código:

// Esta solución es solo para IE6 .clearfix (altura: 1%; desbordamiento: visible;)

// Esta solución es solo para IE6

Borrar (

altura: 1%;

desbordamiento: visible;

En IE6, la propiedad de altura se trata incorrectamente como altura mínima, por lo que esto obliga al contenedor a incluir sus elementos secundarios. Luego, la propiedad Desbordamiento se vuelve a establecer en "visible" para garantizar que el contenido no esté oculto ni desplazado.

El único inconveniente de utilizar el método de desbordamiento (en cualquier navegador) es la posibilidad de que el contenido del elemento tenga barras de desplazamiento u oculte contenido. Si hay elementos con márgenes negativos o posición absoluta en el padre, se ocultarán si se extienden más allá del padre, por lo que este método debe usarse con cuidado. También debe tenerse en cuenta que si el elemento contenido tuviera una altura o altura mínima especificada, definitivamente no podría utilizar el método de desbordamiento.

Por lo tanto, no es realmente fácil resolver este problema en varios navegadores. Pero casi cualquier problema de limpieza con flotador se puede resolver mediante uno de los métodos anteriores.

Errores flotantes relacionados en Internet Explorer

A lo largo de los años, se han publicado numerosos artículos en línea que analizan errores comunes relacionados con los puntos flotantes en el marcado CSS. Todos ellos, como es lógico, se ocupan de problemas específicos de Internet Explorer. A continuación, encontrará una lista de enlaces a varios artículos que analizan cuestiones relacionadas con las flotaciones:

Cambiar la propiedad flotante usando JavaScript

Para cambiar un valor CSS en JavaScript, debe acceder al estilo del objeto convirtiendo la propiedad CSS deseada en un "caso Camel". Por ejemplo, la propiedad CSS "margen izquierdo" se convierte en margen izquierdo, la propiedad color de fondo se convierte en Color de fondo. , etcétera. Pero con la propiedad float, las cosas son diferentes porque la palabra float ya está reservada en JavaScript. Por lo tanto lo siguiente será incorrecto:

Estilo. estiloFloat = "izquierda";

// Para todos los demás navegadores

miDiv. estilo. cssFloat = "izquierda";

Uso práctico del flotador

Los flotantes se pueden utilizar para resolver una serie de problemas en el marcado CSS. Algunos ejemplos se describen aquí.

2 columnas, ancho fijo

3 columnas, diseño de igual altura

Imagen flotante con título.

De manera similar a lo que discutimos anteriormente en Flotar en la práctica, Max Design describe cómo flotar una imagen con un título permite que el texto se ajuste a ella de forma natural.

Navegación horizontal con listas desordenadas

La propiedad flotante es un componente clave en la codificación de barras de navegación horizontales basadas en sprites. Chris Spooner de Line25 describe la creación de Menu of Awesomeness, que etiqueta

  • , manteniendo presionados los botones de navegación use float: left:

    Para demostrar la importancia de la propiedad flotante en este ejemplo, aquí hay una captura de pantalla de la misma imagen después de usar Firebug para eliminar el flotador: izquierda:

    Galerías de fotos basadas en cuadrículas

    Un uso simple de la propiedad flotante es flotar: dejó una serie de fotos contenidas en una lista desordenada, lo que produce el mismo resultado que vería en el marcado de la tabla.

    La página de productos de Foremost Canada (ver imagen arriba) muestra sus productos en un formato de cuadrícula junto a una barra lateral. Las fotos se muestran como una lista desordenada con una propiedad flotante, para todos

  • elementos configurados para flotar: izquierda. Esto funciona mejor que una cuadrícula de tabla porque la cantidad de fotos en la galería puede cambiar sin que el diseño se vea afectado.

    La página de futones de Paragon Furniture (ver imagen de arriba) es otro ejemplo de una página de producto que utiliza una lista desordenada con etiquetas flotantes.

  • .

    La página de resultados de búsqueda de iStockphoto (ver imagen arriba) tiene la misma cuadrícula de fotos estructuradas, aquí las fotos contienen float:left

    etiquetas, no
  • etiquetas.

    Alineación campos con un botón

    Modelar elementos de formulario predeterminados para diferentes navegadores puede resultar problemático. A menudo, en un campo de formulario, como un formulario de búsqueda, es necesario poner elemento al lado del botón “enviar”.

    En el diseño web moderno, la propiedad flotar utilizado en casi cada paso. Pero a pesar de esta prevalencia, no todo el mundo comprende el mecanismo de los bloques flotantes, su comportamiento y las consecuencias que puede tener su uso.

    ¿Qué es "flotar"?

    Flotar Esta es una propiedad de posicionamiento CSS. Para comprender su esencia y origen, es necesario prestar atención al diseño impreso. En diseños impresos, la imagen se puede colocar de manera que el texto fluya a su alrededor. A esto se le suele llamar " ajuste de texto".



    En un diseño de página, se puede especificar un bloque que contiene texto para su uso. envolver texto alrededor de una imagen o ignorar el envoltorio. Ignorar el ajuste del texto permitirá que las palabras fluyan sobre la imagen como si no estuviera allí. Esto marca la diferencia si la imagen es parte del flujo de la página o no. En diseño web todo es muy parecido.



    En diseño web, un elemento al que se le aplica una propiedad CSS. flotar se comportará como una imagen con texto envolviéndola en un diseño impreso. Los elementos flotantes siguen siendo parte del flujo de la página web. Esto es bastante diferente de los elementos posicionados de forma absoluta, que se eliminan del flujo, como si en un diseño impreso se le dijera al bloque de texto que ignorara el ajuste de la imagen. Los elementos absolutamente posicionados no afectan la ubicación de otros elementos, y otros elementos no afectan su ubicación.

    Establecer una propiedad flotar para elementos que usan CSS se ve así:

    #barra lateral (flotante: derecha;)

    Hay cuatro valores válidos para la propiedad. flotar - izquierda, bien, ninguno, heredar. Los dos primeros izquierda Y bien indique la dirección de ubicación: izquierda y derecha, respectivamente. Ninguno- valor predeterminado, indica que el elemento no está flotante y heredar ordenar a un elemento que herede el valor de una propiedad flotar del elemento padre.

    ¿Para qué se utiliza el flotador?

    Más allá del simple ejemplo de ajustar texto alrededor de una imagen, flotar se puede utilizar para crear diseños web.



    Flotar, también es cómodo de usar para elementos de diseño pequeños. Por ejemplo, tomemos este pequeño fragmento de una página web. Si configuramos la propiedad flotar Para una imagen de avatar pequeña, cuando el tamaño de la imagen cambia, el ajuste cambiará de acuerdo con las nuevas dimensiones de la imagen:



    El mismo diseño se puede implementar usando el posicionamiento relativo del contenedor y el posicionamiento absoluto del avatar y el texto dentro de él. Pero en un diseño implementado de acuerdo con este esquema, cambiar el tamaño de la imagen no afectará el bloque de texto, ya que los elementos con posicionamiento absoluto no afectan a otros elementos y otros elementos no los afectan a ellos.


    Reinicio de envoltura

    Claro propiedad relacionada con la propiedad flotar. Elemento con conjunto de propiedades claro no se moverá hacia arriba alrededor de un elemento con la propiedad establecida flotar, pero se moverá hacia abajo ignorando el flujo. Y de nuevo, una ilustración que te lo explicará todo sin más.



    En el ejemplo anterior, la barra lateral flotaba a la derecha del bloque de contenido principal. El "pie de página" se ha movido al espacio libre debajo de la barra lateral, fluyendo alrededor del bloque con el contenido principal. Para resolver este problema, debe especificar un valor para la propiedad clear:both del pie de página para "borrar" el flujo alrededor de ambas columnas.

    #pie de página (claro: ambos;)

    Propiedad claro tiene cuatro significados. Ambos Se utiliza para aliviar el flujo en ambas direcciones. Izquierda Y Bien se utilizan para restablecer una dirección: izquierda o derecha, respectivamente. Ninguno- valor predeterminado. Heredar podría ser el quinto valor, pero sorprendentemente no es compatible Explorador de Internet. Restablecer sólo el flujo izquierdo o derecho es bastante raro, pero tiene beneficios prácticos.


    Gran colapso

    Una cosa acerca de trabajar con flotar Lo desconcertante es el efecto que tiene esta propiedad en los elementos principales. Si el elemento padre no contiene más elementos que un flotante, entonces su altura literalmente colapsa. Esto no siempre se nota, especialmente si el elemento principal no tiene un fondo destacado, pero es importante tenerlo en cuenta.



    Pero la alternativa a tal colapso es aún peor. Considere el siguiente escenario:



    Si el bloque superior se expande automáticamente para acomodar el elemento flotante, terminaremos con un espacio en el flujo de texto entre párrafos, sin forma de arreglarlo. Si esto fuera así, entonces los desarrolladores se quejarían mucho más a menudo de este comportamiento de los bloques flotantes que de su colapso.

    Siempre se debe tener en cuenta el colapso para evitar comportamientos extraños en el diseño y problemas entre navegadores. Podemos resolver este problema usando claro después del elemento flotante en el contenedor, pero antes de que se cierre el contenedor.

    Técnicas de cancelación de envoltura

    Si se encuentra en una situación en la que sabe dónde estará el siguiente elemento, puede usar clear:both y seguir con sus asuntos. Esto es ideal ya que no requiere ningún truco ni elementos adicionales. Pero lamentablemente normalmente no todo sale como queremos, y en este caso puedes utilizar las siguientes herramientas.

    Método de bloque vacío.

    Es literalmente un bloque vacío.

    . A veces puedes encontrar un elemento.
    o cualquier otro elemento aleatorio, pero div es el más común ya que no tiene un estilo predeterminado en los navegadores, no tiene ninguna función especial y es poco probable que tenga un estilo CSS general. Este método es rechazado por los puristas semánticos porque su presencia no tiene ningún significado contextual en la página y sólo está ahí por apariencia. Eso sí, en sentido estricto tienen razón, pero él hace su trabajo y no hace daño a nadie.

    Método de desbordamiento.

    Basado en la especificación de propiedades CSS rebosar para el elemento padre. Si esta propiedad se establece en auto o oculto para el elemento principal, se expandirá después del elemento flotante, restableciendo efectivamente su envoltura para los elementos posteriores. Este método puede ser semánticamente hermoso, ya que no requiere elementos adicionales. Sin embargo, como puede ver, hemos agregado un nuevo div utilizar este método, que equivale a utilizar un bloque vacío no semántico y es menos flexible. También hay que recordar que la propiedad rebosar no está destinado a desactivar el ajuste. Tenga cuidado de no ocultar contenido accidentalmente ni provocar barras de desplazamiento no deseadas.

    Método de limpieza fácil.

    Utiliza un pseudoselector CSS (:after) para eliminar el ajuste. En lugar de utilizar la propiedad rebosar Para el elemento principal, establezca una clase adicional, por ejemplo "clearfix" y utilice el siguiente estilo CSS:

    Clearfix:después (contenido: "."; visibilidad: oculto; visualización: bloque; altura: 0; claro: ambos;)

    Esto utiliza una pequeña parte de contenido oculta a la vista, ubicada después del elemento principal, que restablece el ajuste. Este método no está completo, ya que es necesario mejorarlo para que admita navegadores más antiguos.

    Diferentes situaciones requieren diferentes métodos de alivio del farol. Tomemos como ejemplo una cuadrícula de diferentes tipos de bloques.



    Para combinar mejor visualmente bloques similares, debemos comenzar una nueva línea cuando cambie el color. Podemos utilizar el método de desbordamiento o limpieza de luz si cada grupo de colores tiene un elemento principal. O utilizamos el método del bloque vacío entre grupos. Tres bloques principales que no existían anteriormente o tres bloques vacíos que no existían anteriormente. Depende de usted decidir qué método es mejor.


    Problemas con elementos flotantes.

    Los elementos flotantes son a menudo criticados por su fragilidad. Gran parte de esta fragilidad proviene de IE6 y sus errores orientados al flotador. Pero a medida que más y más desarrolladores abandonan el soporte para IE6, es posible que no lo pienses, pero para aquellos que se preocupan por la compatibilidad, aquí hay una breve lista.

    Empuje, es síntoma de que el elemento dentro del bloque flotante es más ancho que ese bloque (esto suele pasar con las imágenes). La mayoría de los navegadores mostrarán el elemento flotante sobresaliendo, pero esto no tendrá ningún efecto en el diseño. IE expandirá el bloque flotante y, a menudo, esto tiene un efecto drástico en el diseño. Un ejemplo típico es una imagen que sobresale del bloque de contenido principal y empuja la barra lateral hacia abajo.



    Solución rápida al problema.: utilizar desbordamiento: oculto;

    para recortar el exceso. Error de doble margen flotar- otra cosa para recordar cuando se trabaja con IE6. Este error se expresa en el hecho de que si el campo está en el mismo lado en el que está orientado

    , el campo se duplica. Por ejemplo: Obtendremos el campo izquierdo en 40px ., en lugar de.

    Solución rápida al problema. 20px

    : Configure display: inline para el bloque flotante y no se preocupe, el elemento permanecerá a nivel de bloque. 3px jogging Solución rápida al problema.. La esencia de este error es que el texto ubicado al lado del elemento flotante está extrañamente desplazado tres píxeles, como si estuviera bajo la influencia de un campo de fuerza ubicado alrededor del elemento flotante.

    : establece el ancho y alto del texto afectado. Aparece en IE7 Error en el margen inferior Solución rápida al problema., cuando el elemento padre es un elemento flotante y su hijo ubicado dentro de él también es un elemento flotante. El elemento ancestro ignora el margen inferior (margen inferior) del hijo.

    : Utilice padding-bottom en el elemento principal en lugar de margin-bottom en el elemento secundario.

    Las preguntas sobre cómo funcionan las propiedades CSS flotante hacia la izquierda y flotante hacia la derecha surgen con envidiable regularidad. Esto se convierte en un tema especialmente delicado para los diseñadores y programadores que han estado armando diseños en tablas durante años y ahora se ven obligados a trabajar con bloques. Además, esto se ve agravado por problemas con el diseño del navegador, aunque recientemente este tema ha comenzado a calmar los nervios de los especialistas.

    Os aseguro que no habrá nada especialmente nuevo en este post. Hay mucha información como esta en Internet. Pero cada vez que muestro un ejemplo en mis dedos o busco un enlace donde enviar a mi próximo empleado, ya me canso. Por eso, aquí presentaremos una breve recopilación de lo que nos encontramos con más frecuencia.

    Bloques en un contenedor con propiedades CSS flotantes hacia la izquierda y flotantes hacia la derecha establecidas

    Problema típico:

    1. Hay un contenedor con dos bloques o más.
    2. Los bloques internos tienen establecida la propiedad CSS flotante hacia la izquierda o hacia la derecha.
    3. Si el tamaño del bloque no es suficiente, el contenido de abajo comienza a encajar en el bloque y todo el diseño se desmorona.

    Las ilustraciones siguientes muestran un par de estos casos.

    Situación con dos o más bloques con propiedad flotante izquierda CSS

    Como debería ser:

    La situación cuando un bloque tiene la propiedad CSS flotante hacia la izquierda y otro tiene la derecha

    Como debería ser:

    Cómo se ve si el diseño es incorrecto:

    ¿Por qué ocurrió esta situación?

    Nuestros bloques con las propiedades CSS float left y float right están ubicados dentro de un contenedor al que se le da algo de relleno en la parte inferior. A pesar de los parámetros aparentemente correctos, la sangría desde abajo no solo no funciona, sino que además el contenido de los bloques inferiores se infiltra en nuestro bloque superior.

    El caso es que los bloques con propiedades flotantes especificadas no afectan el cambio en la altura de su contenedor.

    Por ejemplo: en el primer caso, todos los bloques dentro del contenedor están flotando. Por tanto la altura del contenedor será cero.

    En el segundo caso, además de bloques flotantes, también tenemos texto en el contenedor. Por tanto, la altura del contenedor corresponderá a la altura del texto que llena este bloque. En consecuencia, si el texto es mayor que la altura de los bloques flotantes internos, no notará el problema. Si no hay suficiente texto, como en el ejemplo anterior, el contenido de los bloques inferiores se extenderá hasta el borde inferior del contenedor.

    Solución 1 Agregue un bloque vacío con la propiedad CSS clara: ambos

    Antes de cerrar la etiqueta del contenedor, debe colocar un bloque con la propiedad CSS clear:both. Luego, el contenedor se expandirá al bloque inferior, ya que esta propiedad bloquea la influencia de los bloques con las propiedades CSS flotante izquierda y flotante derecha.

    Código de página de muestra:

    La vecindad de Epsilon, como es bien sabido, invierte la serie abstracta de Taylor como se esperaba.
    La vecindad de Epsilon, como es bien sabido, invierte la serie abstracta de Taylor como se esperaba.

    También puedes colocar un bloque con la propiedad clear:both inmediatamente después de la etiqueta de cierre del contenedor o después del último bloque flotante. El contenedor no cambiará su tamaño en esta situación. Y en general, no será necesario, sino un bloque con la propiedad clear:both simplemente corta el contenido de los bloques flotantes.

    Código de página de muestra:

    La vecindad de Epsilon, como es bien sabido, invierte la serie abstracta de Taylor como se esperaba.
    La vecindad de Epsilon, como es bien sabido, invierte la serie abstracta de Taylor como se esperaba.
    La vecindad de Epsilon, como es bien sabido, invierte la serie abstracta de Taylor como se esperaba.

    Sin embargo, no todo el mundo sabe que el campo directivo corresponde al determinante de un sistema de ecuaciones lineales, lo cual no es sorprendente. Además, el determinante de un sistema de ecuaciones lineales restaura categóricamente el vector, como se esperaba. Los alrededores del punto todavía tienen demanda. El lema, como se desprende de lo anterior, estabiliza significativamente la serie divergente abstracta, lo que sin duda nos llevará a la verdad. El lema desentraña significativamente el logaritmo natural irrefutable; dejaremos más cálculos a los estudiantes como tarea simple.

    Código CSS de muestra:

    Contenedor ( mostrar: bloque; ) .in_block ( mostrar: bloque; flotante: izquierda; ancho: 100px; alto: 100px; margen derecho: 10px; ) .clear ( mostrar: bloque !importante; margen: 0px !importante; relleno: 0px !importante; claro: ambos !importante; flotante: ninguno !importante altura: 1px !importante;

    Metodológicamente no es la solución más elegante, aunque merece el derecho a la vida, ya que es bastante eficaz. Una clara desventaja es el hecho de que tenemos que agregar código adicional al texto de la página.

    Solución 2: especifique explícitamente la altura del contenedor

    La opción de establecer la altura del contenedor sólo es buena si conoce exactamente el tamaño esperado del contenido de este contenedor. Entonces nuestro CSS se verá así:

    Contenedor (pantalla: bloque; altura: 100px;) .in_block (pantalla: bloque; flotante: izquierda; ancho: 100px; altura: 100px; margen derecho: 10px;)

    En el caso de que el contenido sea dinámico o el diseño sea "fluido" y el ancho del contenedor pueda cambiar, esta no será una buena solución.

    Solución 3: establezca la propiedad de desbordamiento de CSS en el contenedor

    Si establece el valor de la propiedad del contenedor rebosar igual auto o oculto, el navegador reconstruirá el contenedor de tal manera que quepa en todos los bloques flotantes y no muestre barras de desplazamiento.

    Si configura la propiedad de desbordamiento en automático, prepárese para el hecho de que es posible que aún aparezcan barras de desplazamiento en algunas situaciones. Por lo tanto, debes comprobar minuciosamente el diseño en diferentes modos.

    Código CSS de muestra:

    Contenedor (pantalla: bloque; desbordamiento: auto;) .in_block (pantalla: bloque; flotante: izquierda; ancho: 100px; alto: 100px; margen derecho: 10px;)

    Dos bloques en el mismo nivel con las propiedades CSS especificadas flotan hacia la izquierda y hacia la derecha

    Una situación típica: texto que envuelve dos bloques con algún contenido. En este caso, los bloques se ubican a los lados del texto.

    Como debería ser:

    La propiedad Float es un activo importante y poderoso para los desarrolladores web que trabajan con HTML y CSS. Por otro lado, puede resultar frustrante y confuso si no se comprende completamente cómo funciona esta propiedad.

    traducción del artículo CSS flotante 101. Original alistapart.com

    Además, en el pasado, debido a algunos errores bastante desagradables en el navegador, era normal estar nervioso al usar la propiedad. flotar en sus conjuntos de reglas CSS. Pero calmemos nuestros nervios y tratemos de aliviar la decepción. Te mostraré exactamente qué hace la propiedad flotante con tus elementos y cómo usarla convenientemente.

    Vemos flotadores todos los días en el mundo impreso cuando miramos un artículo de revista con una imagen colocada a la izquierda o a la derecha y un texto bien organizado a su alrededor. En el mundo HTML/CSS, el texto envolverá una imagen dependiendo de la propiedad flotante que se aplique a esa imagen. Usar la propiedad flotante en una imagen es solo uno de muchos ejemplos. Como otro ejemplo, utilizando la propiedad flotante, podemos crear muy fácilmente el popular diseño de dos columnas. De hecho, puedes aplicar la propiedad flotante a cualquier elemento de tu HTML. Al aprender y comprender el uso de la propiedad flotante, junto con la propiedad de posición, podrá sentirse cómodo y seguro al crear cualquier diseño.

    Definición de flotador

    Empecemos por definir qué es flotar.

    Flotante es un cuadro que se mueve hacia la derecha o hacia la izquierda a lo largo de la línea actual. La característica más interesante de un flotador es que el contenido puede fluir a lo largo de su costado. Al aplicar la propiedad float: left, el contenido fluirá hacia abajo en el cuadro en el lado derecho y de manera similar con float: right - down en el lado izquierdo.

    La propiedad float tiene 4 valores que podemos aplicar: left, right, herint y none. Cada significado es bastante claro. Por ejemplo, si usa float: left en un elemento, se moverá al borde más a la izquierda en relación con su elemento principal. Y, si especifica float: right , el elemento se moverá de manera similar hacia la derecha. El valor ihnerit le dice al elemento que herede la propiedad de su elemento padre. Y el último valor ninguno es el predeterminado y dice que no se aplique la propiedad. flotar a este elemento.

    #container ( ancho: 960px; margen: 0 auto; ) #content ( float: izquierda; ancho: 660px; fondo: #fff; ) #navigation ( float: derecha; ancho: 300px; fondo: #eee; ) #footer ( claro: ambos; fondo: #aaa; relleno: 10px)

    Nuestro #pie de página está atascado debajo del bloque de #navegación. Esto sucedió porque hay espacio para un #pie de página debajo del bloque de #navegación y para el flujo normal de diseño del bloque, este es el comportamiento correcto. Pero esto no es en absoluto lo que necesitamos, ¿verdad? Supongo que ya ve la relación entre float y clear y comprende cómo se complementan entre sí.

    Si tiene un trastorno obsesivo-compulsivo como yo, es posible que haya notado las diferentes alturas de las columnas #contenido y #navegación en el Ejemplo F; Hay varias soluciones, pero esto está fuera del alcance de este artículo. Recomiendo encarecidamente leer Faux Columns de Dan Cederholm para aprender a hacer bloques de la misma altura, independientemente del contenido que contenga.

    flotar primero

    Hasta ahora hemos visto algunos ejemplos bastante simples que no generan muchos dolores de cabeza. Sin embargo, existen algunos inconvenientes que se deben tener en cuenta al utilizar la propiedad flotante. Sorprendentemente, uno de los mayores obstáculos tiene menos que ver con CSS y más con HTML. Colocar su elemento flotante dentro de su HTML puede generar resultados diferentes. Eche un vistazo al ejemplo H.

    Aquí tenemos un pequeño bloque que tiene una imagen con una propiedad flotante: derecha y texto que la rodea. Nuestro CSS se ve así:

    #contenedor (ancho: 280px; margen: 0 automático; relleno: 10px; fondo: #aaa; borde: 1px sólido #999;) img (flotante: derecha;)

    Nuestro elemento padre #container tiene un ancho estrecho y mantiene nuestro elemento flotante (la imagen) dentro de sus límites. Nuestro código HTML se ve así:


    Este ejemplo nos da el resultado deseado, pero ¿qué pasa si tomamos y reorganizamos algunos elementos en el HTML? En el ejemplo I me moví después del texto

    Este es un texto contenido dentro de un cuadro pequeño. Lo estoy usando como ejemplo de cómo colocar sus elementos flotantes en diferentes órdenes en su HTML puede afectar sus diseños. Por ejemplo, eche un vistazo a este fantástico marcador de posición de fotografía que debería estar a la derecha.


    Nuestro resultado no es el esperado. Nuestra imagen se ha movido hacia la derecha, pero ya no está en la esquina superior como queremos, sino que ha caído debajo del párrafo; Peor aún, sobresale de la parte inferior de nuestro elemento principal #container. ¿Lo que está sucediendo?

    En primer lugar. La regla que encontré por mí mismo es hacer flotar los elementos primero. En mi HTML, casi siempre agrego elementos flotantes al comienzo del marcado y antes de cualquier elemento no flotante con el que interactuarán mis elementos flotantes, como el párrafo del ejemplo anterior. En la mayoría de los casos esto da un resultado positivo.

    En segundo lugar. La razón por la que la imagen parece sobresalir de la parte inferior de nuestro bloque #container se debe a algo llamado colapso. Hablemos de colapso y soluciones.

    colapsando

    Colapsar es cuando un elemento que tiene cualquier número de elementos flotantes no expandirá sus bordes alrededor de sus elementos anidados como lo haría si los elementos anidados no flotaran.

    Ahora intentemos solucionar este problema usando CSS en lugar de agregar etiquetas HTML adicionales a nuestro documento como hicimos antes. Existe un método que permite a un elemento principal "aplicar" la propiedad clara después de todos los elementos flotantes. Para hacer esto, use la propiedad CSS de desbordamiento con el valor oculto. Tenga en cuenta que la propiedad overflow no fue diseñada para usarse de esta manera y puede causar algunos problemas, como ocultar contenido o hacer que aparezca una barra de desplazamiento no deseada. Para nuestro ejemplo, sin embargo, seguiremos aplicando la propiedad overflow: oculta a nuestro elemento principal #container:

    #contenedor (desbordamiento: oculto; ancho: 260px; margen: 0 automático; relleno: 10px 0 10px 10px; fondo: #aaa; borde: 1px sólido #999;)

    Y finalmente, Eric Meyer explica una tercera solución a este problema en su artículo Containing Floats. Según CSS Spec 2.1:

    un elemento con la propiedad flotante expandirá sus bordes a elementos flotantes en su interior.

    Entonces, al aplicar la propiedad float a #container, nuestro contenedor contendrá nuestra imagen y párrafo, similar a los métodos descritos anteriormente.

    En última instancia, todas estas soluciones hacen lo mismo. Obligan a los elementos principales a contar sus elementos flotantes en el flujo. Cada método tiene sus propias ventajas y beneficios. Debe comprender cada uno de ellos y luego aplicar los que funcionen mejor para su situación.

    Conclusión

    Al utilizar la propiedad flotante, puede mejorar significativamente su técnica para organizar elementos. Comprender cómo funciona una propiedad determinada y qué influye en su comportamiento le brindará una base sólida para utilizar float de manera efectiva.



  • 
    Arriba