CSS如何清除浮动

css代码如下   <div>开始</div>    <div class="parent">      <div class="first">      </div>    </div>    <div class="step"></div>  &...

css代码如下

  <div>开始</div>
    <div class="parent">
      <div class="first">
      </div>
    </div>
    <div class="step"></div>
  <div class="last">结束</div>


first元素浮动了,于是last元素往上追加,被遮挡了。

    * {
      margin: 0;
      padding: 0;
    }
    .first {
      float: left;
      width: 100px;
      height: 100px;
      background: red;
    }


由于浮动的元素是不占位置的,那么我们需要用到清除浮动的技术。


了解之前先了解一下BFC,叫块级格式化上下文,是一个独立的渲染区域。


BFC里页面上独立的容器,子元素不会影响到外面,外面也无法影响到里面。


如何形成BFC

flot不为none

position为fixed和absolute

display为flex,inline-flex,table,table-cell,table-caption,inline-block

overflow为auto,scroll,hidden

了解了这个多,我们解决上面的问题,只要创建PFC就可以了,添加样式,使用下面的任意一种即可

    .parent {
      display: inline-block;
      /* height: 100px; */
      /* display: table-cell; */
      /* display: table-caption; */
      /* display: flex; */
      /* display: inline-flex; */
      /* overflow: hidden; */
      /* overflow: scroll; */
      /* overflow: auto; */
    }


table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)

table-caption 此元素会作为一个表格标题显示(类似 <caption>)


浮动的元素没有高度,所以可以给浮动的父元素添加高度即可。


clear属性

clear 属性清除浮动的原理是什么?

采用 BFC 解决高度塌陷和clear 属性清除浮动相比的优势是什么?


clear语法:

clear : none | left | right | both


取值:

none : 默认值。允许两边都可以有浮动对象

left : 不允许左边有浮动对象

right : 不允许右边有浮动对象

both : 不允许有浮动对象


w3.org官方的解释是:「元素盒子的边不能和前面的浮动元素相邻」。


设置了clear的元素将不像前一个浮动元素对齐,换行重新开始。

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
王凯
王凯

92 篇文章

作家榜 »

  1. admin 651 文章
  2. 粪斗 185 文章
  3. 王凯 92 文章
  4. 廖雪 78 文章
  5. 牟雪峰 12 文章
  6. 李沁雪 9 文章
  7. 全易 2 文章
  8. Stevengring 0 文章