700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > CSS之关于clearfix清除浮动方法

CSS之关于clearfix清除浮动方法

时间:2022-08-26 00:32:41

相关推荐

CSS之关于clearfix清除浮动方法

web前端|css教程

CSS,clearfix,清除浮动

web前端-css教程

一,什么是.clearfix

磁力播放网站源码,vscode中建jsp文件,刷ubuntu手机,tomcat配置777权限,云数据爬虫,php服务器套件,温州seo网络推广哪家强,开发博客网站代码,77模板lzw

你只要到Google或者Baidu随便一搜”css清除浮动”,就会发现很多网站都讲到”盒子清除内部浮动时可以用到.clearfix”。

易语言盗号源码,网络爬虫编译器vscode,iptux ubuntu,tomcat升级问题,sqlite 打开 db,jsp网页设计注册账号如何向邮箱发送验证,新网云服务器+控制台,滑动插件slip.js,iview前端框架,爬虫病毒英文,php进销存管理系统,seo外包上海,springboot架构版,响应式网站 企业模版,网页图片手动切换,企业门户模板,织梦cms 后台不能自动更新补丁,响应式404页面模板下载,旅行社旅游信息管理系统,同程网站程序lzw

.clearfix:after { content: " "; display: block; clear: both; height: 0;}.clearfix { zoom: 1;}

android商城类app源码,vscode 右键浏览器,ubuntu停止svn,tomcat设置远程连接,精选联盟爬虫,php5的特性,白云seo推广优化外包,视频图片小说免费网站源码,discuz 模板 缓存不更新lzw

上面的代码就是.clearfix的定义和应用,简单的说下.clearfix的原理:

1、在IE6, 7下zoom: 1会触发hasLayout,从而使元素闭合内部的浮动。

2、在标准浏览器下,.clearfix:after这个伪类会在应用到.clearfix的元素后面插入一个clear: both的块级元素,从而达到清除浮动的作用。

二,.clearfix的弊端

在上面的代码中可以看到,抛开IE6, 7不谈,.clearfix在标准浏览器下插入了一个clear: both的元素,这样很可能清除掉不必要的浮动。举例来说明:

Demohtml, body { padding: 0; margin: 0; } ul { margin: 0; padding: 0; } .clearfix:after {content: " ";display: block;clear: both;height: 0; } .clearfix {zoom: 1; }.left-col {background: red;float: left;width: 100px;height: 300px; } .right-col {margin-left: 100px; } .menu {border: 1px solid #000; } .menu li {float: left;display: block;padding: 0 1em;margin: 0 1em 0 0;background: #ccc; } .placeholder {background: yellow;height: 400px; }

Menu ItemMenu ItemMenu ItemMenu ItemMenu ItemMenu Item

上面的代码构成一个两列布局的页面。注意.menu这个菜单设置了边框,但是由于.menu的li元素是左浮动的,导致.menu没有高度,于是可以用.clearfix来清除.menu内部的浮动。代码如下:

Menu Item Menu Item Menu Item Menu Item Menu Item Menu Item

但是应用完.clearfix后,在标准浏览器下页面变得很乱,这是因为.clearfix:after把.left-col的浮动也给清除掉了。

三,重构.clearfix

在遭遇到上面的错误之后,分析一下除了.clearfix:after这种方式之外还有没有别的方法清除元素内部的浮动。答案是有的,在白话Block Formatting Contexts这篇文章中提到过构成Block Formatting Context的元素可以清除内部元素的浮动。那么只要使.clearfix形成Block Formatting Context就好了。构成Block Formatting Context的方法有下面几种:

float的值不为none。

overflow的值不为visible。

display的值为table-cell, table-caption, inline-block中的任何一个。

position的值不为relative和static。

很明显,float和position不合适我们的需求。那只能从overflow或者display中选取一个。因为是应用了.clearfix和.menu的菜单极有可能是多级的,所以overflow: hidden或overflow: auto也不满足需求(会把下拉的菜单隐藏掉或者出滚动条),那么只能从display下手。

我们可以将.clearfix的display值设为table-cell, table-caption, inline-block中的任何一个,但是display: inline-block会产生多余空白,所以也排除掉。剩下的只有table-cell, table-caption,为了保证兼容可以用display: table来使.clearfix形成一个Block Formatting Context,因为display: table会产生一些匿名盒子,这些匿名盒子的其中一个(display值为table-cell)会形成Block Formatting Context。这样我们新的.clearfix就会闭合内部元素的浮动。下面是重构之后的.clearfix。

.clearfix { zoom: 1; display: table; width: 100%;}

四,总结

在IE6, 7下面只要是触发了hasLayout的元素就可以清除内部浮动了。而在标准浏览器下面清除元素内部浮动的方法有很多,除了.clearfix:after这种方式,其余的方法无非就是产生新的Block Formatting Context以达到目的。如果可以做到在什么条件下用哪种方法,我认为这样就足够了……

更多CSS之关于clearfix清除浮动方法相关文章请关注PHP中文网!

相关文章:

深入解析clearfix清除浮动

css之clearfix的用法深入理解

浅谈css清除浮动clearfix和clear的用法介绍

整理的最全的css clearfix清除浮动的方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。