BFC与hasLayout之间的故事
刚拒绝了一个很有诱惑的公司,不是不想去,而是对现在的能力还不确定,希望能够进一步提高自己的技能,所有想写博客了,监督自己的学习进度·········现在还没有开放博客,希望成熟一些后再开放吧!
进入正题啦啦啦!
一、什么是BFC(Block Formatting Content)?
IE用的是hasLayout而非IE浏览器用的即是BFC(块格式化上下文)
1、BFC是W3C CSS2.1中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素之间的关系和相互作用。在创建了BFC的元素中,其子元素会一个挨着一个的放置,垂直方向上他们的起点是一个包含块的顶部,两个相邻元素的垂直距离取决于margin值,但是呢,相邻的块级元素的垂直边距会折叠(collpase)(我是这么理解的:就是设置margin:10px,但是显示是5px,不知正确否?)
2、在BFC中,每一个元素的左外边与包含块的左边相接触(对于从右到左的格式化,右外边接触右边),即使存在浮动也会如此(尽管一个元素的内容区域会因为浮动而压缩)(不是很理解这个)。除非这个元素也创建了新的BFC。
3、在CSS3中对BFC有了新的定义:http://www.w3.org/TR/css3-box/#block-level0,CSS3中将BFC 叫做 flow root。
二、怎么才能触发BFC呢?只要满足下面其中之一的要求即可
1、float不能为none; 2、overflow(不能为visibile); 3、display:(table-cell\table-caption\inline-block);4、position:(任何值除了static\relative)
Tips:我们有时会用overflow:hidden去清楚浮动。就是因为它可以触发元素的块格式化上下文(IE6,7要申明zoom:1),这个方法确实简单,但是相当粗暴。
三、什么是hasLayout?
这个属性是IE特有的,与其他浏览器没有一毛线的关系,霸道吧。说起IE就是痛啊!
1、Layout是IE浏览器渲染引擎的一个内部组成部分。在IE中,一个元素要么对自己的自身内容进行组织和计算要么就是依赖其包含块来计算和组织内容。为了协调这两种方式的矛盾,渲染引擎采用了'hasLayout'属性,属性值可以为true或者flase,当一个元素的hasLayout为true时,我们就说这个元素有一个布局(Layout),或者拥有布局,这个时候就不用依赖其包含块了而是靠自身内容。
2、在IE中,我们可以通过'hasLayout'属性可以判断一个元素是否拥有Layout。如object.currentStyle.hasLayout。
3、很多IE6下的bug都是因为没有触发hasLayout而造成的。所有我们在解决bug时候就是去触发元素的布局。
四、怎么触发元素hasLayout呢?
1、有些元素因为默认就拥有布局所以就不用触发了,如(html,body,table,th,tr,td,img,hr,input,button,select,textarea,fileldset,legend,iframe,embed,object,applet,marquee)
2、而其他元素就没有了,没有的话怎么触发呢?当然是用css去触发了,如下属性。
display:inline-block, height(除auto以外的所有值), widht(除auto以外的所有值), float:right或left, position:absolute, writing-mode:tb-rl; zoom:(除normal外的任何值)
IE7还有一些额外的元素,如下:请看!
1、如果父元素的子元素有浮动,父元素的高度塌陷怎么解决?那么在父元素上激活hasLayout和BFC就可以清楚浮动了,最常见的是zoom:1(IE6下),overflow:hidden(激活标准浏览器下的MFC)
2、浮动元素和常规元素的重叠问题
当浮动元素右边跟随的是常规流元素会重叠
设置常规流元素.bfc{overflow:hidden; zoom:1}激活hasLayout和BFC便可解决问题,如下图:
![](http://images.cnitblog.com/blog/544423/201307/03142433-abadff255af74181a56e4d80a929b6e9.jpg)
BFC与hasLayout之间的故事的更多相关文章
- BFC and Haslayout
一.BFC(Block Formatting Context) 相关网址:http://www.cnblogs.com/dolphinX/p/3508869.html 1. 怎样才能形成BFC flo ...
- 文本溢出、垂直外边距合并、BFC、hasLayout
今天学习文本溢出,又遇到了一些小问题,先上图: 关于文本溢出推荐:http://www.cnblogs.com/yzg1/p/5089534.html 从里面学习到单行文本和多行文本溢出, overf ...
- 谈BFC和haslayout
今天提到BFC和haslayout,就顺带在网上查查资料,总结一下它们. CSS2我们再熟悉不过,当然它里面我们需要掌握的,就是CSS2的选择器和布局,选择器总共31种.避开这个不说,我们说布局. 布 ...
- BFC与hasLayout
BFC与hasLayout都是CSS布局上的概念. 几个月前在微博上才了解什么是BFC,算是对布局有点初步的了解. hasLayout则是IE6.7产生许多bug的根源. 一.BFC Floats, ...
- BFC和haslayout
待补充 参考链接:http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html 标准浏览器: BFC(block formatt ...
- CSS的BFC和hasLayout及其应用场景
前端精选文摘:BFC 神奇背后的原理 一.BFC是什么? 先介绍 Box.Formatting Context的概念. Box: CSS布局的基本单位 Box 是 CSS 布局的对象和基本单位, 直观 ...
- BFC和haslayout(IE6-7)(待总结。。。)
支持BFC的浏览器(IE8+,firefox,chrome,safari) Block Formatting Context(块格式化上下文)是W3C CSS2.1规范中的一个慨念,在CSS3中被修改 ...
- BFC 和 haslayout
在解释 BFC 是什么之前,需要先介绍 Box.Formatting Context的概念. Box: CSS布局的基本单位 Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很 ...
- BFC与HasLayout的理解
1.(Block Formatting Contexts)BFC 定义 BFC(Block formatting context)直译为"块级格式化上下文".它是一个独立的渲染区域 ...
随机推荐
- Ubuntu下为 Flash插件方法
1.下载flash插件,地址:http://get.adobe.com/cn/flashplayer/ 下载tar格式的install_flash_player_11_linux_x86_64.tar ...
- Google正确搜索方法
以下是目前所有的Google搜索命令语法,它不同于Google的帮助文档,因为这里介绍了几个Google不推荐使用的命令语法.大多数的Google搜索命令语法有它特有的使用格式,希望大家能正确使用.我 ...
- iOS开发中一些常用的方法
1.压缩图片 #pragma mark 处理图片 - (void)useImage:(UIImage *)image { NSLog(@"with-----%f heught-----%f& ...
- Python之美[从菜鸟到高手]--Python垃圾回收机制及gc模块详解
http://blog.csdn.net/yueguanghaidao/article/details/11274737
- 【转】三次握手与accept()函数
1. 客户端发送SYN给服务器 2. 服务器发送SYN+ACK给客户端 3. 客户端发送ACK给服务器 4. 连接建立,调用accept()函数获取连接
- 【转】补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
有个兄弟发了一个站内的私信给我,内容如下: 时间:2014-03-05 09:08:19 大哥,debian 的BBB版本没有图形界面吧 我安装后只有文本界面 我突然意识到,我前面有没有说清楚的地方, ...
- TCP/IP协议原理与应用笔记14:电路交换 和 分组交换
1. 电路交换: (1)建立连接 (2)数据传输 (3)拆除连接 2. 分组交换 (1)数据报: 根据网络的特性,将数据报分成不同大小的部分,经过不同网路传递到相同的目的地.如下: 这里A--X 和 ...
- vim字符编码设置
vim 编码方式的设置 和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux ...
- 别了 oi——一篇高三狗的滚粗遗言
/* 开始于2015年12月 结束于2016年11月 一年的oi生涯有很多值得怀念的事 还记得去年旺哥找我学oi 当时是一脸的蒙逼 要知道 高二才开始搞是很晚了 然而 也就是那一晚之后 许多事情都变了 ...
- spring MVC fromeWork 與webwork2 mvc 比較
http://www.blogjava.net/xxxzheng/articles/7614.html 在当今的MVC framework里,似乎Webwork2逐渐成为主流, Webwork2+Sp ...