清除浮动的方法及原因

  • 为什么要清除浮动
  • 清除浮动的方法
    • 方法1:为父元素设置高度
    • 方法2:在受影响的父元素内部末尾添加块级元素-如div
    • 方法3:伪元素清除法
    • 方法4:给父元素设置overflow: hidden;
  • BFC解释清除浮动效果
    • 为什么父元素的overflow: hidden;能有清除浮动效果呢?
      • BFC概念:
      • BFC盒子的特点:
      • 创建BFC盒子的其他方法:

为什么要清除浮动

标准流 / 文档流:默认情况下,块级元素上下摆放,行内元素左右摆放。
浮动:可以脱离文档流,改变元素排列规则
清除浮动原因:
在父盒子没有设置高度的情况下,父盒子高度默认由子盒子撑开,当子盒子浮动脱离文档流不再占位后,父盒子高度会变为0。即造成了父盒子高度的塌陷。
或某个元素浮动导致它不占位,会对后续元素的排列造成影响。
所以要清除浮动

清除浮动的方法

方法1:为父元素设置高度

缺点:高度写死会导致盒子大小固定,不利于实现下拉加载数据

  <!--html--><div class="father"><div class="son"></div></div>
 /* css */ .father{width: 300px;background-color: #8686ec; /* 【解决】为父元素添加高度 */height: 100px;}.son{/* 子元素脱离文档流,父元素高度为0 */float: left; width: 100px;height: 100px;background-color: #d69797;}

方法2:在受影响的父元素内部末尾添加块级元素-如div

缺点:当需要清除浮动的元素很多时,网页的html结构中会出现很多空的div标签,使网页结构复杂了。

    <div class="father"><div class="son"></div><!-- 【解决】在父元素的结束标签前 添加一个块级元素 + clear:both --><div class="clear"></div></div>
         .father{width: 300px;background-color: #8686ec; }.son{/* 子元素脱离文档流,父元素高度为0 */float: left; width: 100px;height: 100px;background-color: #d69797;}.clear{clear: both;}

方法3:伪元素清除法

原理与2类似-----相当于在父级元素的内部末尾添加了一个块级内容。

    <!-- 添加clearfix类名 --><div class="father clearfix"><div class="son"></div></div>
        .father{width: 300px;background-color: #8686ec; }.son{/* 子元素脱离文档流,父元素高度为0 */float: left; width: 100px;height: 100px;background-color: #d69797;}/* 【解决】伪元素清除浮动 *//* 谁要清除浮动,给谁添加clearfix类 */.clearfix::after{content:"";display: block;clear: both;}

方法4:给父元素设置overflow: hidden;

<div class="father"><div class="son"></div>
</div>
    .father{width: 300px;background-color: #8686ec; /* 【解决】为父元素添加overflow:hidden */overflow: hidden;clear: both;}.son{/* 子元素脱离文档流,父元素高度为0 */float: left; width: 100px;height: 100px;background-color: #d69797;}

BFC解释清除浮动效果

为什么父元素的overflow: hidden;能有清除浮动效果呢?

因为 overflow:hidden;可将当前盒子变为BFC盒子

BFC概念:

块级格式化上下文(BFC),是web页面的可视CSS渲染的一部分,是块盒子的布局过程中产生的区域。即BFC是一个区域,这个区域的一些特点,会达到清除浮动的效果

BFC盒子的特点:

  • BFC盒子会默认包裹内部的子元素,包括标准流和浮动的子元素都包括在内。
  • BFC盒子本身与子元素之间不存在margin-top的塌陷问题。

创建BFC盒子的其他方法:

  • 添加浮动的元素是BFC盒子
  • 行内块级元素是BFC盒子
  • overflow属性不取visible时,都是BFC盒子
/* 创建BFC盒子的其他方法---把father盒子变为BFC盒子*/
.father{/*方法1*/float: left;/*方法2*/display: inline-block;/*方法3*/overflow: hidden;
}

css清除浮动的方法及原因相关推荐

  1. div为空的时候 浮动没有效果_3种CSS清除浮动的方法

    点击上方 "前端技术精选" 关注,星标或者置顶 12点00分准时推送,第一时间送达 作者:html中文网 | 编辑:前端妹 来源:html.cn/web/css/19613.htm ...

  2. css为什么要用浮动_3种CSS清除浮动的方法

    点击上方 "前端技术精选" 关注,星标或者置顶 12点00分准时推送,第一时间送达 作者:html中文网 | 编辑:前端妹 来源:html.cn/web/css/19613.htm ...

  3. CSS清除浮动的方法

    我们先看看浮动导致什么样的效果. 正常没有浮动的案例如下: <!DOCTYPE html> <html><head><meta charset="u ...

  4. web前端css清除浮动的方法总结

    方法1:祖先加高法 //不常用,不能适应页面的快速变化 如果一个元素要浮动,那么它的祖先元素一定要有高度.有高度的盒子,才能关住浮动. 只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元 ...

  5. CSS 清除浮动的方法

    CSS中利用float属性可以使元素脱离文档流浮动到父元素的左侧或者浮动的父元素的右侧,这时如果对元素使用浮动属性,会导致父元素不能被撑开. CSS代码: .wrapper{width: 40em;b ...

  6. CSS清除浮动的方法及原理

    为什么清除浮动 1.浮动的缺点: 浮动虽然可以便于页面布局,但同时会产生一些问题,也就是我们常说的"副作用".一个元素设置了浮动(即 float 值为 left, right 或 ...

  7. 前端开发面试题—CSS清除浮动的方法

  8. 活学活用,CSS清除浮动的4种方法

    清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近. CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受. 1.结尾处加空div标签 ...

  9. css清除浮动无效,css清除浮动的处理方法

    根据<精彩绝伦的css> JS Bin .news{ outline:1px solid pink } .col{ float: left; width:33%; outline:1px ...

最新文章

  1. 软工作业3: 词频统计
  2. 元素重叠及position定位的z-index顺序
  3. _mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':no such file or directory
  4. 【mysql解决办法】insert into select 想插入的数据如果部分为空怎么办?
  5. Linux文件的切分和结合
  6. CodeForces - 1549F1 Gregor and the Odd Cows (Easy)(几何+数论)
  7. Leet Code OJ 27. Remove Element [Difficulty: Easy]
  8. linux中df和ls区别,linux系统文件大小ls、df、du命令的区别
  9. Mybatis, 实现一对多
  10. 零基础学python知乎-零基础应该选择学习 java、php、前端 还是 python?
  11. 代码流程图_助力理解js代码,进阶JavaScript代码能力——js2flowchart
  12. 二维随机变量期望公式_多维随机变量函数的分布
  13. Android入门笔记13
  14. 实战分析PHP大马隐藏后门——案例一
  15. Linux: 介绍make menuconfig中的每个选项含义【转】
  16. 学习vb6.0视频教程网址
  17. 百度网盘下载加速(pc端)
  18. 星际争霸十大挖掘性操作
  19. 【luogu P5320】勘破神机(数学)(数列特征方程)(第一类斯特林数)
  20. 第二十二章 SQL命令 CREATE TRIGGER(二)

热门文章

  1. html 输入框变红色,为什么CAD的动态输入框变成红色?
  2. 什么是编码?什么是解码?
  3. 【java】统计正数和负数的个数然后计算这些数的平均值
  4. 服务器硬盘与普通硬盘有什么区别?
  5. memcpy越界引起的segment fault
  6. MFC错误0xc000007b 应用程序无法正常启动 的一种原因
  7. FFmpeg源码分析:内存管理系统
  8. 王道数据结构2.2.4——1、设计递归算法删除不带头结点的单链表L中所有值为x的结点
  9. 中科红旗倒下,谁来挑战windows
  10. oracle 建分区索引_Oracle的分区表和Local索引创建与维护