清除浮动的原因

假设一个 div 内部有个浮动的 div,当内部 div 的高度要比外层的父级 div 高度大时,将会导致父级 div 高度无法随着内部 div 的高度自适应,这是由于浮动元素已经脱离了正常文档流,因此无法对父级元素产生影响。举例如下:

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

此时,我们就需要手动来清除浮动。

加入空 div

这是我之前的做法,即在结尾处添加一个空的 div,并设置 clear: both 属性。

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

#clear {

clear: both;

}

A

B

这个方法看似简单,但是如果清除浮动的地方较多,会产生很多无意义的 div,对于整个 HTML 结构无疑是有弊端的。

设定父级 div 高度

这个方法有点 hard code,由于父级 div 无法高度自适应,因此我们可以直接给父级 div 设置一个固定的高度值,如上例,考虑到 border 的值,设定父级 div 高度为 52px。

复制代码代码如下:

#a {

width: 100px;

height: 52px;

border: 1px solid #ccc;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

这个方法很快速但也脆弱,一旦内部浮动元素高度发生变化就无效了,所以只能应用于高度固定的场景。

设定父级 div 属性 overflow

直接给父级 div 添加 overflow: hidden 或 overflow: auto 属性,这里以 overflow: hidden 为例。

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

overflow: hidden;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

这个看上去又简单又实用,但是你不能对父级 div 设置高度,一旦父级 div 设置了固定高度,那么浮动元素超出的部分也会被隐藏。

复制代码代码如下:

#a {

width: 100px;

height: 20px;

border: 1px solid #ccc;

overflow: hidden;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

当使用 overflow: auto 属性同时设定固定高度时效果为:

设置父级 div 伪类 before && after

这个方法即问题中介绍的新方法,对父级 div 设置伪类 before 和 after 的值。

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#a:before, #a:after {

content: "";

display: block;

clear: both;

height: 0;

visibility: hidden;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

这个方法应该是最佳方案,即不会产生无意义的空 div,同时当父级元素高度固定时并不会影响内部的浮动元素高度。但是唯一一点就是伪类的兼容性问题。对于低版本的 IE 浏览器我们可以使用:

复制代码代码如下:

#a {

zoom:1

}

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#a:before, #a:after {

content: "";

display: table;

clear: both;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

css清除浮动无效,CSS清除浮动方法总结相关推荐

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

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

  2. css设置height无效,CSS中设置height:100%无效的解决方案

    li 前面的缩进怎么去除? 异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 设置margin和padding为0或者为比较小的值就 ...

  3. CSS清除浮动大全共8种方法

    清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的 ...

  4. CSS清除浮动的几种常见方法

    文章目录 浮动 优点 缺点 清除浮动 一.额外标签法 实例 二.父级添加overflow属性 实例 三.使用:after 实例 四.使用双伪元素 实例 五.手动设置父级高度 实例 注意 浮动 当元素浮 ...

  5. css浮动(float)及清除浮动的几种实用方法

    CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...

  6. css --- [读书笔记] 浮动(float) 与 清除浮动

    说明 源代码 学习 1. 浮动 1.1 CSS布局的三种机制 网页布局的核心 - 利用 CSS 来摆放盒子 CSS提供了3种机制来设置盒子的摆放位置: 标准流.浮动和定位. 标准流: 块级元素(div ...

  7. CSS中文档流之普通流,浮动及定位、浮动特性及清除浮动的方式、定位模式,子绝父相搭配定位方式、z-index层级

    文档流: 普通流(normal flow): 字面意思是普通流或者标准流,也就是常说的文档流,指网页内标签正常是从上到下,从左到右排列的意思,css的定位机制有3种:普通流(标准流).浮动.定位. 浮 ...

  8. 0基础快速入门CSS技术栈(6)—图解详细阐述说透CSS的浮动及应用、浮动的扩展及清除浮动和详解快速·1photoshop切图(附详细案例源码解析过程)2021-01-07更新

    文章目录 1. 浮动(float)重点提炼 2. CSS 布局的三种机制 3. 为什么需要浮动? 3.1 example01 4. 什么是浮动(float) 4.1 作用 4.1.1 example0 ...

  9. html 清除浮动怎么写,清除浮动的css写法有哪些

    本文通过图文并茂的形式给大家介绍了CSS浮动与清除浮动的实例代码,非常不错,具有一定的参考借鉴价值,,需要的朋友可以参考下 一.float(浮动)是什么 float 属性定义元素在哪个方向浮动. fl ...

最新文章

  1. 某程序员以阿里为原型写小说!阿里员工:每件事都是真的!网友:建议拍成电视剧!...
  2. RxJava使用(二)filter 操作符
  3. 单端 平衡 音质区别_听上去「高大上」的平衡接口,到底有什么门道?
  4. 搭建解析内网 linux_Linux 搭建ngrok内网穿透
  5. linux dialog 源码,Linux dialog详解(图形化shell)
  6. PHp批量推送数据太慢,PHP非阻塞批量推送数据
  7. Java代码怎么取消订阅功能,RxJava2 中多种取消订阅 dispose 的方法梳理( 源码分析 )...
  8. java重复造轮子系列篇------发送邮件sendEmail
  9. 云桌面选不对,再好的产品也白用
  10. 笔记本计算机的连接无线网络,笔记本电脑连接无线网络受限解决方法
  11. 利用SMB协议共享电脑文件,发挥ipad生产力
  12. SPSS 随机区组秩和检验
  13. php判断是否夏令时,关于php:时区和夏令时问题
  14. 12306泄露数据可视化分析
  15. mysql获取当前日期的前一天_MySql取得日期(前一天、某一天)
  16. 基于ICP算法的三维点云数据拼接算法的实现
  17. 数据分析+数据挖掘暑期实习碎碎念
  18. [JVM]了断局:常量池 VS 运行时常量池 VS 字符串常量池
  19. 【干货】Veri SM 数字化服务管理中文概述-数字化世界,附高清下载
  20. 用友nc56 eclipse开发工具设置注意事项

热门文章

  1. 虚拟机kali做成服务器,VMware kali虚拟机环境配置方法
  2. thinkphp删除文章里的所有图片
  3. 品牌线上控价-如何管控授权商低价乱价
  4. vue遇到ie兼容问题如何处理_vue 兼容IE报错解决方案
  5. C语言中的atan 与atan2
  6. 嵌入式学习(第二周)
  7. web安全通信之JWT简介
  8. 手机共享网络给电脑解决重装windows7系统没有网卡USB驱动
  9. 龙之谷服务器互通信息,《龙之谷》合区合服互通列表 你还记得多少呢
  10. SELinux的使用