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>

  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/qyuan/p/9487411.html
Copyright © 2011-2022 走看看