• 为什么overflow:hidden;属性可以清除浮动


    overflow:hidden;顾名思义,溢出容器部分隐藏。为什么它可以起到清除浮动的作用呢?我们来制造一个父容器不定高,子容器进行浮动的界面。

    <div class='parent'>
      <div class='left'></div>
      <div class='right'></div>
    </div>
    .parent {
      width:200px;
      background:#333333;
      overflow:hidden;
    }
    .left {
      float:left;
      width:50px;
      height:100px;
      background:red;
    }
    .right {
      float:right;
      width:80px;
      height:120px;
      background:green;
    }

    我们会发现这个不定高的父DIV有了高度,高度为子容器中最高的那个。如果去掉overflow:hidden,则父容器"消失"(因为没有高度了)。

    原因为何?BFC!!

    什么是BFC ? 

    BFC全称Block Formatting Context, 中文为「块级格式化上下文」。触发BFC有以下几种情况:

    1. float值不为none
    2. overflow值为auto,scroll或hidden
    3. display值为table-ceil,table-caption或inline-block的一种
    4. position值不为relative和static

    此处parent触发了BFC,形成块级上下文,不管子元素怎么浮动怎么脱离文档流,parent也必须要包含其中。所以会计算子容器的高度。取最大子容器高度才能包含。

     由于overflow有剪裁和出现滚动条等隐患,不适合作为整站通用类,于是,最后,类似清除浮动的通用类语句:

    .clearfix {
        *zoom: 1;
    }
    .clearfix:after {
        content: ''; display: table; clear: both;
    }

    两栏或多栏自适应布局的通用类语句是(block水平标签,需配合浮动):

    .cell {
        display: table-cell; width: 9999px;
        *display: inline-block; *width: auto;
    }
  • 相关阅读:
    javascript DOM操作
    DirectX编译出现link错误
    PPT快捷键
    Windows GDI笔记
    VC++键盘消息
    VC++6.0快捷键
    C#值类型和引用类型
    C#转义字符
    关于C#里“浅表副本”的解释
    C#中override和overload的区别
  • 原文地址:https://www.cnblogs.com/douglasvegas/p/6973206.html
Copyright © 2020-2023  润新知