css之clearfix的用法深入理解(必看篇)


Posted in HTML / CSS onMay 21, 2023

如果有一个DIV作为外部容器,内部的DIV如果设置了float样式,则外部的容器DIV因为内部没有 clear,导致不能被撑开。看下面的例子:

Div布局如下:

css之clearfix的用法深入理解(必看篇)

Css代码如下:

.out{border:1px solid #F00; width:500px;}   
.inner1{width:200px; height:200px; float:left; border:1px solid #00F;}   
.inner2{width:200px; height:200px; float:left; border:1px solid #0F0;}

IE和FF显示如下图:

css之clearfix的用法深入理解(必看篇)

传统的人解决方法:

css之clearfix的用法深入理解(必看篇)

但是,这么多加一个DIV有点不妥。一是多了一个没有意义的DIV,二是在用dojo做Drag & Drop的时候,由于这个DIV是容器DIV的一个字节点,如果这个节点被移动,则会造成排版上的Bug:如果要显示的蓝框的DIV被移到这个DIV之后,则因为clear:both,它会被强制换一行显示。所以,最好使用下面clearfix方法。外层div加上clearfix样式。

clearfix定义如下:

.clearfix:after{visibility:hidden;display:block;font-size:0;content: " ";clear:both;height:0;}   
.clearfix{*zoom:1;}

css之clearfix的用法深入理解(必看篇)

这样修改以后显示正常。

那段代码是用来清除浮动的。

以下代码可以这么解释:

.clearfix:after {       <----在类名为“clearfix”的元素内最后面加入内容;   
    content: ".";     <----内容为“.”就是一个英文的句号而已。也可以不写。   
    display: block;   <----加入的这个元素转换为块级元素。   
    clear: both;     <----清除左右两边浮动。   
    visibility: hidden;      <----可见度设为隐藏。注意它和display:none;是有区别的。仍然占据空间,只是看不到而已;   
    height: 0;     <----高度为0;   
    font-size:0;    <----字体大小为0;   
}

整段代码就相当于在浮动元素后面跟了个宽高为0的空div,然后设定它clear:both来达到清除浮动的效果。(这个css的原理是经过使用 after伪对象,它将在应用clearfix的元素结尾添加content中的内容,也就是一个".",并且把他设置为块级元素 (display="block");高度设置为0,clear="both",然后将其内容隐藏掉(visibility="hidden").这样就会撑开此块级元素.)

之所以用它,是因为,你不必在html文件中写入大量无意义的空标签,又能清除浮动。

.clearfix { *zoom:1;}   <----这是针对于IE6的,因为IE6不支持:after伪类,这个神奇的zoom:1让IE6的元素可以清除浮动来包裹内部元素。具体意思的话,不用深究,听说微软的工程师自己都无法解释清楚。height:1%效果也是一样。

以上这篇css之clearfix的用法深入理解(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

 
HTML / CSS 相关文章推荐
详解CSS3中Media Queries的相关使用
Jul 17 HTML / CSS
老生常谈CSS中的长度单位
Jun 27 HTML / CSS
CSS3属性 line-clamp控制文本行数的使用
Mar 19 HTML / CSS
HTML5 canvas基本绘图之绘制阴影效果
Jun 27 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
Nov 13 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
May 03 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
Jun 25 HTML / CSS
html5教程制作简单画板代码分享
Dec 04 HTML / CSS
用HTML5制作数字时钟的教程
May 11 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
Jul 22 HTML / CSS
Canvas波浪花环的示例代码
Aug 21 HTML / CSS
详解CSS开发过程中的20个快速提升技巧
May 21 HTML / CSS
CSS中calc(100%-100px)不加空格不生效
May 07 #HTML / CSS
HTML中link标签属性的具体用法
May 07 #HTML / CSS
css弧边选项卡的项目实践
May 07 #HTML / CSS
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
May 07 #HTML / CSS
CSS实现鼠标悬浮动画特效
CSS link与@import的区别和用法解析
May 07 #HTML / CSS
html,css,javascript是怎样变成页面的
May 07 #HTML / CSS
You might like
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
js module大战
2019/04/19 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
python画环形图的方法
2020/03/25 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
低碳环保口号
2014/06/12 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
婚内分居协议书范文
2014/11/26 职场文书
催款函范文
2015/06/24 职场文书
高中美术教学反思
2016/02/17 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis