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系列教程:背景图片(背景大小和多背景图) 应用说明
Dec 19 HTML / CSS
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
Nov 18 HTML / CSS
css3高级选择器使用方法
Dec 02 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
Jun 02 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
Oct 08 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
Dec 17 HTML / CSS
HTML5事件方法全部汇总
May 12 HTML / CSS
HTML5不支持标签和新增标签详解
Jun 27 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
Dec 07 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
Jan 11 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 HTML / CSS
奇妙的 CSS shapes(CSS图形)
Apr 05 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
PHP安装全攻略:APACHE
2006/10/09 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
2017/04/13 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
vuex actions传递多参数的处理方法
2018/09/18 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
Python兔子毒药问题实例分析
2015/03/05 Python
python将图片文件转换成base64编码的方法
2015/03/14 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
Java语言的优势
2015/01/10 面试题
上课迟到检讨书100字
2014/01/11 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
离婚案件原告代理词
2015/05/23 职场文书
高中生军训感言
2015/08/01 职场文书