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解决移动页面上点击链接触发色块的问题
Jun 03 HTML / CSS
CSS3教程(8):CSS3透明度指南
Apr 02 HTML / CSS
CSS3的transition和animation的用法实例介绍
Aug 20 HTML / CSS
css3实现wifi信号逐渐增强效果实例
Aug 09 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
Aug 10 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
Mar 27 HTML / CSS
简单的HTML5初步入门教程
Sep 29 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
May 18 HTML / CSS
HTML5 Canvas 旋转风车绘制
Aug 18 HTML / CSS
HTML5中的拖放实现详解
Aug 23 HTML / CSS
如何给HTML标签中的文本设置修饰线
Nov 18 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
Jan 14 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,不用COM,生成excel文件
2006/10/09 PHP
php 禁止页面缓存输出
2009/01/07 PHP
php执行sql语句的写法
2009/03/10 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
一起来写段JS drag拖动代码
2010/12/09 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
Django中多种重定向方法使用详解
2019/07/17 Python
python collections模块的使用
2020/10/16 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
经典c++面试题四
2015/05/14 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
签约仪式策划方案
2014/06/02 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
售后服务承诺函格式
2015/01/21 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
Python编写冷笑话生成器
2022/04/20 Python