css的float,浮动

之前页面布局经常使用的是float+position,但是有个问题就是,给元素设置float会脱离文档流,就相当于是在页面中不再占有位置,只是飘在该位置上面。

原理与position类似。

 

页面效果:

期望效果:

 

实现代码:

1.html:

<div class="contrainer">
  <div class="div1">
    <div class="left">Left</div>
    <div class="right">Right</div>
  </div>
  <div class="div2">
    div2
  </div>
</div>

2.css:

.contrainer{
  .div1{
    background:#000080;
    border:1px solid #ff0000;
    // height:200px;
  }
  .div2{
    background:#800080;
    border:1px solid red;
    height:100px;
    margin-top:10px
  }
  .left{
    float:left;
    width:20%;
    height:200px;
    background:#DDD
  }
  .right{
    float:right;
    width:30%;
    height:80px;
    background:#DDD
  }
}

正常页面应该是下面这个样子,

 

原因:

想要div1和div2垂直显示,div1下的两个div是并列显示的,因此设置了浮动,但是设置之后由于脱离了文档流,div2直接跳到上面了,div1及div1下的两个div撑不起来。

所以需要对其他元素设置清除浮动,取消设置的浮动所对其他元素带来的影响。

 

清除浮动原理:

就是需要实现虽然元素设置了浮动,但是还是需要占有自己的位置,不能脱离文档流。

 

清除浮动有哪些方式?比较好的方式是哪一种?

(1)父级div定义height
(2)结尾处加空div标签clear:both
(3)父级div定义伪类:afterzoom
(4)父级div定义overflow:hidden
(5)父级div定义overflow:auto
(6)父级div也浮动,需要定义宽度。
(7)父级div定义display:table
(8)结尾处加br标签clear:both
(Q2) 比较好的是第3种方式,好多网站都这么用。

 

posted @ 2020-06-01 18:16  苏小落  阅读(182)  评论(0编辑  收藏  举报