zoukankan      html  css  js  c++  java
  • 为什么要清除浮动以及方法

    1.问题起源

    html:

      <div class=“outer”>

        <div class="inside"></div>

        <div class="inside"></div>

       <div class="inside"></div>

      </div>

    css:

      .outer{

       border:1px solid black;

        }

      .inside{

       float:left;

       100px;

        height:100px

       }

    最外面的div没有设置高度,导致里面的3个div,没有撑开父元素。 在浏览器中运行的结果会是,子元素会显示在父元素的外部。

    2. 问题的原因与浮动定位有关。
    在CSS规范中,浮动定位不属于正常的页面流(page flow),是独立定位的。所以,只含有浮动元素的父容器,在显示时不考虑子元素的位置,就当它们不存在一样。这就造成了显示出来,父容器好像空容器一样。

    3.解决方法的有很多,只介绍一种常用的。在父元素添加伪类:after

    .outer:after{

      clear:both;

      display:block;

      content:"0020";

      height:0;

    }

    "content:"0020";"是在父容器的结尾处放一个空白字符,"height: 0;"是让这个这个空白字符不显示出来,"display: block; clear: both;"是确保这个空白字符是非浮动的独立

    但是,:after选择符IE 6不支持,也就是说上面的这段代码在IE 6中无效,这怎么办?
    我们添加一条IE 6的独有命令"zoom:1;"就行了,这条命令的作用是激活父元素的"hasLayout"属性,让父元素拥有自己的布局。IE 6会读取这条命令,其他浏览器则会直接忽略它。

    4.最终代码
    .outer:after {
    content: "020";
    display: block;
    height: 0;
    clear: both;
    }
    .outer{
    zoom: 1;
    }

  • 相关阅读:
    bzoj 3670: [Noi2014]动物园
    bzoj 2878: [Noi2012]迷失游乐园
    51nod 1348 乘积之和
    51nod 1514 美妙的序列
    AtCoder Grand Contest 002 D
    bzoj 3451 Normal
    LOJ #6119. 「2017 山东二轮集训 Day7」国王
    51nod 1752 哈希统计
    计蒜客 百度地图的实时路况
    Codeforces 549F Yura and Developers
  • 原文地址:https://www.cnblogs.com/suhaihong/p/6419313.html
Copyright © 2011-2022 走看看