¡El método y el principio de limpieza flotante (colapso de altura)!

¿Por qué flotadores transparentes?

(Borrar el flotador es principalmente para resolver el problema de que la altura interna del elemento padre es 0 debido a la flotación del elemento hijo)

1. De la siguiente manera, establezco un límite para el cuadro principal y coloco dos cuadros dentro, uno grande y otro pequeño. Si no se establece ningún flotante para grande y pequeño, abrirán el cuadro principal de forma predeterminada

Inserte la descripción de la imagen aquí

2. Cuando agrego atributos flotantes a los dos cuadros internos

Inserte la descripción de la imagen aquí

Aparecerá el cuadro azul oscuro en la parte superior, y luego el cuadro principal se convertirá en una línea porque la altura no está establecida, y grandes y pequeños han flotado

En conclusión:

  • Cuando el elemento padre no da altura,

  • Cuando los elementos internos no flotan, se extenderán

  • Cuando flota, el elemento padre se convierte en una línea

En este momento, mucha gente pensará en la nueva etiqueta clara: ambos métodos y flotante, ¡pero estos dos métodos no son recomendados!

Lo que está claro: ambos

claro: ambos: la esencia es cerrar el flotador, es decir, dejar que la caja principal cierre la salida y la entrada, y evitar que salga la caja secundaria

Formas de limpiar los flotadores (las 4 más utilizadas)

1. Método de etiquetado adicional

(Después de la última etiqueta flotante, agregue una nueva etiqueta y establezca clear: both;) (no recomendado)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .fahter{
     
     
            width: 400px;
            border: 1px solid deeppink;
        }
        .big{
     
     
            width: 200px;
            height: 200px;
            background: darkorange;
            float: left;
        }
        .small{
     
     
            width: 120px;
            height: 120px;
            background: darkmagenta;
            float: left;
        }
        .footer{
     
     
            width: 900px;
            height: 100px;
            background: darkslateblue;
        }
        .clear{
     
     
            clear:both;
        }
    </style>
</head>
<body>
    <div class="fahter">
        <div class="big">big</div>
        <div class="small">small</div>
        <div class="clear">额外标签法</div>
    </div>
    <div class="footer"></div>
</body>
</html>

en este momento

Inserte la descripción de la imagen aquí

Si borramos el flotador, el elemento padre detecta automáticamente la altura más alta de la caja secundaria y luego la misma altura.

Ventajas: fácil de entender y conveniente

Desventajas: agregar etiquetas sin sentido, semántica deficiente

No recomendado para su uso.

2. Agregue el atributo overflow al padre

(Agregar desbordamiento: oculto para el elemento principal) (no recomendado)

Al activar el método BFC, la flotación se borra

.fahter{
    
    
    width: 400px;
    border: 1px solid deeppink;
    overflow: hidden;
}

Ventajas: código simple

Desventajas: cuando el contenido aumenta, es fácil hacer que el contenido se oculte sin el ajuste automático de la línea, y es imposible mostrar los elementos que se desbordan

No recomendado

3. Utilice el pseudo elemento after para borrar el flotador (recomendado)

.clearfix:after{
    
    /*伪元素是行内元素 正常浏览器清除浮动方法*/
    content: " ";/* content中包含的空格也能生效,旧版本Opera浏览器中有个隐藏的bug,需要添加一个空格字符才能解决 */
    display: block;
    clear:both;
    /* 
    下面两个属性取消后,也可以清除浮动。
    我个人理解如下,为了保证after不在界面显示,所以使用了下方属性。 
    */
    height: 0;/* 高度为0,隐藏元素 */
    visibility: hidden;/* 元素隐藏,原位置还在 */
}
.clearfix{
    
    
    *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
}

<body>
    <div class="fahter clearfix">
        <div class="big">big</div>
        <div class="small">small</div>
        <!--<div class="clear">额外标签法</div>-->
    </div>
    <div class="footer"></div>
</body>

Ventajas: De acuerdo con la idea de flotación cerrada, la estructura es semánticamente correcta

Desventajas: ie6-7 no admite pseudo-elemento: después, use zoom: 1 para activar hasLayout.

Uso recomendado

4. Úselo antes y después de pseudoelementos dobles para limpiar los flotadores (recomendado)

/* 提示:当我们不想要外边距折叠(重叠取最大值)时,这个版本的清除浮动非常有效 */
.clearfix:after,.clearfix:before{
    
    
    content: " ";/* content中包含的空格也能生效,旧版本Opera浏览器中有个隐藏的bug,需要添加一个空格字符才能解决 */
	/* 外边距无法通过单元格元素折叠 */
    display: table;/* 防止伪元素外边距折叠 */
}
/* 只有after伪元素需要清除浮动 */
.clearfix:after{
    
    
    clear: both;
}
.clearfix{
    
    
    *zoom: 1;
}
<div class="fahter clearfix">
    <div class="big">big</div>
    <div class="small">small</div>
</div>
<div class="footer"></div>

Ventajas: el código es más conciso

Desventajas: Utilice zoom: 1 para activar hasLayout.


Este artículo ha sido reimpreso por otros blogueros. Si hay alguna infracción, por favor contacte para borrar la
fuente de la reimpresión: https://blog.csdn.net/h_qingyi/article/details/81269667
Descripción : Parte del contenido original, he eliminado y agregado (Libro de referencia: Análisis en profundidad de CSS).

Supongo que te gusta

Origin blog.csdn.net/qq_27802993/article/details/109274851
Recomendado
Clasificación