美文网首页前端技巧
css清除浮动的方法

css清除浮动的方法

作者: 恬雅过客 | 来源:发表于2016-02-06 12:34 被阅读26次

    首先来看个栗子:
    css代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
    .main {width:300px;height:auto;padding:10px;background:#ccc;}
    .main .left {width:100px;height:50px;background:red;float:left;}
    .main .right {width:100px;height:50px;background:blue;float:left;}
    .footer {width:300px;height:20px;background:green;}
    </style>
    </head>
    <body>
    <div class="main">
    <div class="left"></div>
    <div class="right"></div>
    <div class="clear"></div>
    </div>
    <div id="footer"></div>
    </body>
    </html>

    结果如果所示:


    解决这种问题有几种方法:
    1. 在父级添加 overflow:hidden
      优点:不存在结构和语义化问题,代码量极少
      缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素
    2. 父元素也设置浮动(加个float:left/right)
      优点:不存在结构和语义化问题,代码量极少
      缺点:使得与父元素相邻的元素的布局会受到影响,不可能一直浮动到body,不推荐使用
    3. 父元素设置 display:table
      优点:结构语义化完全正确,代码量极少
      缺点:盒模型属性已经改变,由此造成的一系列问题,得不偿失,不推荐使用
    4. 使用 :after 伪元素
      优点:需要注意的是 :after 是伪元素,不是伪类(某些CSS手册里面称之为“伪对象”),很多清除浮动大全之类的文章都称之为伪类,不过csser要严谨一点,这是一种态度。由于IE6-7不支持:after,使用 zoom:1 触发 hasLayout。
      缺点:兼容性不是很好。
    5. 在浮动的元素后面添加空标签 <div class="clear"></div> 清除浮动
      优点:简单明了
      缺点:无意义的空标签,不利于语义化

    个人比较偏向于:after的方式(苹果网站就是采用此种方式)

    参考

    相关文章

      网友评论

        本文标题: css清除浮动的方法

        本文链接:https://www.haomeiwen.com/subject/jlhykttx.html