zoukankan      html  css  js  c++  java
  • 浮动

    1.为什么浮动?

      默认块级元素是独占一行的,而浮动就是让块级元素共处一行;那么为什么不设置成行内块级元素呢,因为它会有空隙。    

      

          浮动           行内快

      行内元素浮动起来就会自动变成块元素;

      float:left/right

    2.清除浮动

      为什么要清除浮动呢?在未给父元素设置固定高度的时候,浮动元素使其父元素高度塌陷;假设给父元素设置了边框,当其子元素设置浮动后,浮动元素将无法撑开父元素边框

      

           未浮动           浮动后

      这是因为当“元素设置浮动后,会自动脱离文档流”,也就是元素浮动后,就不在整个文档流的管辖范围内,那么它之前存在父元素内的高度就会随着浮动不存在了,而此时父元素会默认自己里面没有内容。

      当其中一个子元素设置浮动,而后面元素没有设置浮动,浮动元素会脱离文档流不在占据位置,后面未浮动的元素会占据它的位置。

      

           未浮动                                   红色浮动绿色未浮动

    3.解决方法

      1.给父元素一个固定高度,此方法适用于子元素高度已知并且固定的情况

      2.在浮动元素后面添加一个空的div,并给此元素设置clear:both,这样无疑是增加了无意义的标签,这种标签太多不好。

      3.overflow:hidden;

        ●隐藏溢出,当内容超过其父元素时,该属性可以将溢出的部分裁减掉,使页面更加美观。

        清除浮动,当子元素浮动时,给父元素加overflow:hidden,按照它的第一个特性,应该将子元素超出的部分裁减掉,但是子元素有浮动,无法裁剪,所以只能由父元素增加高度去包裹住子元素,使得父元素拥有了高度,而这个高度是跟随子元素自适应的高度,这样就把浮动的子元素包含在父元素内了。

      4.:after  伪类

        利用伪类来清除浮动,其效果跟创建一个空的div并设置其为clear:both;是一样的,只不过这里的伪类代替了空的div元素。

        .clraefix{
                  zoom:1;/*解决低级IE的问题*/
              }
              .clearfix:after{
                  content:"";/*加一个空内容*/
                  clear:both;/*清除浮动*/
                  display:block;/*确保该元素是一个块级元素*/
              }

     <div class="div clearfix ">
            <div class="div1">我是浮动元素1</div>
            <div class="div2">我是浮动元素2</div>
        </div>

  • 相关阅读:
    正则表达式分类
    数据思维二三事
    关于编程语言的一些趣史
    重构后端模板文件的一种实践
    为什么程序员需要知道互联网行业发展史
    探秘JS的异步单线程
    Nerd的畅销产品
    Nerd的套现ATM机
    网络传输与加密 (2)
    网络传输与加密
  • 原文地址:https://www.cnblogs.com/qyuan/p/9487411.html
Copyright © 2011-2022 走看看