首页 web前端 css教程 为什么要清除浮动?怎样清除?(float)

为什么要清除浮动?怎样清除?(float)

Nov 28, 2019 pm 02:29 PM
float 清除浮动

为什么要清除浮动?怎样清除?(float)

一、理解清除浮动

1、为什么要清除浮动

我们前面说过,浮动本质是用来做一些文字混排效果的,但是被我们拿来做布局用,则会有很多的问题出现。

由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响,为了解决这些问题,此时就需要在该元素中清除浮动。

推荐学习:CSS视频教程

准确地说,并不是清除浮动,而是清除浮动后造成的影响

2、清除浮动本质

清除浮动的本质: 主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。

我们来详细解释下这句话

为什么要清除浮动?怎样清除?(float)

再解释下就是在标准流下面一个父p没有设置高度属性,那么它的高度就会被子元素的高度撑开。但是如果这个父p中的子元素是浮动的话,如果父p下面再有

一个兄弟p,那么这个兄弟p就会遮挡这个父元素。这个现象也叫浮动溢出。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    .father {
        height: 200px;
        border: 1px solid red;
        width: 300px

    }
    .big {
        width: 100px;
        height: 100px;
        background-color: purple;
        float: left;
    }
    .small {
        width: 80px;
        height: 80px;
        background-color: blue;
        float: left;
    }
    .footer {
        width: 400px;
        height: 100px;
        background-color: pink;
    }
    </style>
</head>
<body>
    <p class="father"> 父p
        <p class="big">子p</p>
        <p class="small">子p</p>
    </p>
    <p class="footer">兄弟p</p>
</body>
</html>
登录后复制

运行结果

为什么要清除浮动?怎样清除?(float)

很明显这里,p1和p2已经上浮,而兄弟p就往上移动。这里因为父p有文字所以占了点高度,不然兄弟p会完全覆盖父p。

当然我们可以通过设置父p的高度,来使它不被兄弟p所覆盖。比如这里设置 height: 200px;

在刷新下页面

为什么要清除浮动?怎样清除?(float)

当父p设置高度后,被覆盖的问题却是解决了,但在很多时候我们是不会去设置父p的高度,因为很多时候我们都不知道父p的高度要设置多少。

所以这个时候需要思考解决这个问题。

二、清除浮动的方法

清除浮动的方法本质: 就是把父盒子里浮动的盒子圈到里面,让父盒子闭合出口和入口不让他们出来影响其他元素。

在CSS中,clear属性用于清除浮动。

基本语法格式

选择器 {clear:属性值;}
登录后复制

属性值

为什么要清除浮动?怎样清除?(float)

1、额外标签法

通过在浮动元素末尾添加一个空的标签,例如

 <p style="clear:both"></p>
登录后复制

我们在上面的代码添加


    

 父p         

子p

        

子p

        <p style="clear:both"></p>       

    
登录后复制

运行结果

为什么要清除浮动?怎样清除?(float)

完美解决了。

优点 通俗易懂,书写方便。

缺点 添加无意义的标签,结构化较差。

2、父级添加overflow属性方法

可以通过触发BFC的方式,可以实现清除浮动效果。(BFC后面会讲)

可以给父级元素添加: overflow为 hidden|auto|scroll  都可以实现。
登录后复制

我们将上面代码修改为

<body>
    <p class="father" style="overflow: hidden;"> 父p  <!-- 父元素添加 overflow: hidden --> 
        <p class="big">子p</p>
        <p class="small">子p</p>
    </p>
    <p class="footer">兄弟p</p>
</body>
登录后复制

也是能实现去除浮动的效果。

优点 代码简洁

缺点 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。

3、使用after伪元素清除浮动

:after 方式为空元素的升级版,好处是不用单独加标签了**
登录后复制

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用after伪元素清除浮动</title>
    <style>
    .clearfix:after {  /*正常浏览器 清除浮动*/
        content:"";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    .clearfix {
        *zoom: 1;  /*zoom 1 就是ie6 清除浮动方式  *  ie7一下的版本所识别*/
    }
    .father {
        border: 1px solid red;
        width: 300px;

    }
    .big {
        width: 100px;
        height: 100px;
        background-color: purple;
        float: left;
    }
    .small {
        width: 80px;
        height: 80px;
        background-color: blue;
        float: left;
    }
    .footer {
        width: 400px;
        height: 100px;
        background-color: pink;
    }
    </style>
</head>
<body>
    <p class="father clearfix">
        <p class="big"></p>
        <p class="small"></p>
    </p>
    <p class="footer"></p>
</body>
</html>
登录后复制

优点 符合闭合浮动思想 结构语义化正确

缺点 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

注意: content:"." 里面尽量跟一个小点,或者其他,尽量不要为空,否则再firefox 7.0前的版本会有生成空格。

4、使用before和after双伪元素清除浮动

使用方法 将上面的clearfix样式替换成如下

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

    .clearfix {
        *zoom: 1;
    }
登录后复制

优点 代码更简洁

缺点 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

5、总结

1、在网页主要布局时使用:after伪元素方法并作为主要清理浮动方式.文档结构更加清晰;
2、在小模块如ul里推荐使用overflow:hidden;(同时留意可能产生的隐藏溢出元素问题);
登录后复制

本文来自PHP中文网,CSS教程栏目,欢迎学习  

以上是为什么要清除浮动?怎样清除?(float)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
float最大值为多少 float最大值为多少 Oct 11, 2023 pm 05:54 PM

float最大值:1、在C语言中,float最大值是3.40282347e+38,根据IEEE 754标准,float类型的最大指数为127,尾数的位数为23,通过这种方式,最大浮点数为3.40282347e+38;2、在Java语言中,float最大值是3.4028235E+38;3、在Python语言中,float最大值是1.7976931348623157e+308。

html怎么对齐输入框 html怎么对齐输入框 Apr 05, 2024 am 10:18 AM

使用 HTML 对齐输入框的方法有:使用 text-align 属性指定 left、right 或 center 来对齐输入框文本。使用 float 属性将输入框浮动到页面左侧或右侧,以影响其相对对齐方式。

float精度能到多少 float精度能到多少 Oct 17, 2023 pm 03:13 PM

float精度能到6到9位小数。根据IEEE754标准,float类型可以表示的有效数字位数为大约6到9位。需要注意的是,这只是理论上的最大精度,实际使用中由于浮点数的舍入误差,float类型的精度往往会更低。在计算机中进行浮点数运算时,由于浮点数的精度限制,可能会出现精度损失的情况。为了提高浮点数的精度,可以使用更高精度的数据类型,如double或者long double。

float32字节包括哪些 float32字节包括哪些 Oct 10, 2023 pm 04:07 PM

float32字节包括符号位、指数位和尾数位,用于表示32位浮点数。详细介绍:1、符号位(1位),用来表示数字的正负,0表示正数,1表示负数;2、指数位(8位),用来表示浮点数的指数部分,通过指数位,可以调整浮点数的大小范围;3、尾数位(23位),用来表示浮点数的尾数部分,尾数位存储了浮点数的小数部分。符号位决定了浮点数的正负,指数位和尾数位共同决定了浮点数的大小和精度。

清除浮动有什么方法 清除浮动有什么方法 Feb 22, 2024 pm 04:00 PM

清除浮动有什么方法,需要具体代码示例在网页布局中,浮动是一种常用的布局方法,可以让元素脱离文档流,并相对其他元素进行定位。然而,使用浮动布局时常常会遇到一个问题,就是父元素无法正确地包裹浮动元素,导致页面产生布局错乱的情况。所以,我们需要采取措施来清除浮动,使得父元素能够正确地包裹浮动元素。清除浮动的方法有多种,下面将介绍常用的几种方法,并给出具体的代码示例

c语言中float什么意思 c语言中float什么意思 Oct 12, 2023 pm 02:30 PM

C语言中的float是一种数据类型,用于表示单精度浮点数,浮点数是一种用科学计数法表示的实数,可以表示非常大或非常小的数值。float类型的变量可以存储小数点后6位有效数字的数值,在C语言中,使用float类型可以进行浮点数的运算和存储,其变量可以用于表示小数、分数、科学计数法等需要精确表示的实数,与整数类型不同,浮点数可以表示小数点后的数字,并且可以进行小数的四则运算。

清除浮动的5种方式有哪些 清除浮动的5种方式有哪些 Nov 20, 2023 pm 04:27 PM

清除浮动的5种方式分别是:1、使用clear属性;2、使用overflow属性;3、使用伪元素clearfix;4、使用flex布局;5、使用grid布局。详细介绍:1、使用clear属性,这是最常用的清除浮动的方法,可以在浮动元素后面添加一个元素,并为其添加“clear: both;”样式;2、使用overflow属性,可以为父元素设置”overflow: auto;“等等。

数据库float长度有哪些 数据库float长度有哪些 Oct 10, 2023 pm 03:57 PM

常见的数据库float长度有:1、MySQL中的float类型长度,可以是4个字节或8个字节;2、Oracle中的float类型长度,可以是4个字节或8个字节;3、SQL Server中的float类型长度,固定为8个字节;4、PostgreSQL中的float类型长度,可以是4个字节或8个字节等等。

See all articles