浮动的优缺点,如何清除浮动?

什么是浮动?

元素浮动以后可以想做或向右移动,直到它的外边缘碰到包含它的框或者另外一个浮动元素的边框为止。元素浮动以后会脱离正常的文档流,所以文档的普通流中的框就变现的好像浮动元素不存在一样。

浮动的好处

  • 在图片周围包含文字
    在图片周围包含文字
  • 创建网页布局
    创建网页布局

    浮动的缺点

  • 无法撑起父元素。

  • 同级别的兄弟元素会围绕在周围。

清除浮动

这是一个浮动的demo:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>清除浮动</title>
<style>
.parent{
    background:rgba(244,130,132,1.00);
    border:1px solid rgba(201,197,197,1.00);
}
.f{
    float:left;
    background:rgba(113,229,239,1.00);
    border:1px solid rgba(0,0,0,1.00);  
    width:100px;
    height:100px;
}
</style>
</head>
<body>
<div class="parent">
    <div class="f"></div>
</div>
</body>
</html>

如图:
-元素浮动在左侧,父元素没有被撑起来。
元素浮动在左侧,父元素没有被撑起来。

在解决浮动元素产生的问题中有很多方法,但是也有一些方法解决了问题以后又产生了新的问题,得不偿失,我一般使用after伪元素来清楚浮动,不会产生别的问题。

1.添加额外标签清除浮动。

<div class="parent">
    <div class="f"></div>
    //添加额外标签并且添加clear属性
    <div style="clear:both"></div>
</div>

优点:通俗易懂,容易掌握。
缺点:添加了无意义的空标签,后期不好维护。

2.添加<br>标签,使用<br>标签本身的的clear属性

<div class="parent">
    <div class="f"></div>
    //使用br标签本身的clear属性
    <br clear="all">
</div>

优点:通俗易懂,容易掌握。
缺点:添加了无意义的空标签,后期不好维护。

3.父元素设置overflow:hidden

<div class="parent" style="overflow:hidden">
    //将父元素的overflow设置为hidden
    <div class="f"></div>
</div>

优点:代码量少。
缺点:内容较多时不换行的文件会被隐藏,无法显示溢出元素。不推荐使用。

4.父元素设置overflow:auto

<div class="parent" style="overflow:hidden">
    //将父元素的overflow设置为auto
    <div class="f"></div>
</div>

优点:代码量少。
缺点:多个嵌套后,firefox某些情况会造成内容全选;IE中 mouseover 造成宽度改变时会出现最外层模块有滚动条。不推荐使用。

5.父元素也设置成浮动元素

<div class="parent" style="float:left">
    //将父元素也设置成浮动元素
    <div class="f"></div>
</div>

优点:代码量少
缺点:又产生了新的浮动问题,影响了和父元素同级别元素的布局。不推荐使用。

6.父元素设置display:table

<div class="parent" style="display:table">
    //将父元素设置display:table
    <div class="f"></div>
</div>

优点:代码量少。
缺点:盒模型属性已经改变,由此造成的一系列问题,得不偿失,不推荐使用。

7.使用伪元素:after(推荐使用)

//在css中添加:after伪元素
.parent:after{
    content:"";
    visibility:hidden;
    display:block;
    width:100%;
    height:0;
    clear:both;
}

<div class="parent">
    <div class="f"></div>
</div>

优点:结构和语义正确,没有多余的标签,一般不会产生新的问题。
缺点:复用方式不当会造成代码量增多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值