IE的haslayout的触发
原文连接:http://www.cnblogs.com/yunxuange/archive/2012/09/19/2693886.html
layout是Windows上的IE浏览器产生许多bug的根源。如果遇到一个IE bug首先应该做的事情之一就是尝试应用规则迫使元素拥有layout。
layout(布局)概念是Windows上的IE特有的(IE Mac 和 windows 上的 IE 是完全不同的两个东西,它们各自拥有自己的渲染引擎。),并且它不是css属性。拥有layout的元素负责本身及其子元素的尺寸和定位;不拥有 layout的元素,它的尺寸和位置由最近的拥有layout的父元素控制。
可以使用JavaScript函数hasLayout查看一个元素是否拥有布局,函数返回true即该元素拥有layout,否则返回false。hasLayout是一个只读属性。
在默认情况下拥有layout的元素包括:
- body
- 标准模式中的html
- table
- tr/td
- img
- hr
- input/select/textarea/button
- iframe/embed/object/applet
- marquee
设置以下css属性会自动地使元素拥有layout:
- position: absolute 或 fixed
- float: left 或 right
- display: table 或 table-cell 或 inline-block 或 inline-table
- overflow: hidden 或 scroll 或 auto(IE7会,IE6不会)
- width: 除 “auto” 之外的任何值
- height: 除 “ auto” 之外的任何值
- min-width: 任何值(IE6不支持此属性)
- max-width: 除 “none” 之外的任何值(IE6不支持此属性)
- min-height: 任何值(IE6不支持此属性)
- max-height: 除 “none” 之外的任何值(IE6不支持此属性)
- zoom: 除 “normal” 外的任何值(Microsoft属性——不能通过W3C检验)
- writing-mode: tb-rl(Microsoft属性——不能通过W3C检验)
layout产生的影响:
- 拥有layout的元素是IE产生浮动Bug的根源
- 拥有layout的文本元素不会围绕浮动元素
- 拥有layout的元素不进行收缩
- layout元素对浮动进行自动清理
- 拥有layout的列表元素(ul/ol/dl/li)会表现异常
- 拥有layout的元素背景图像定位(background-position)会产生偏差
- 相对定位(position: relative)的元素不能获得layout
- 拥有layout的元素之间外边距(margin)不叠加
- 在不拥有layout的块级(display:block)链接上,单击区域只覆盖文本
IE的haslayout的触发的更多相关文章
- hasLayout与BFC的触发条件
hasLayout与BFC是分别在IE和其他浏览器上的两个作用很相近的概念,在很多时候,我们需要触发它们去实现有些效果.例如清除浮动时需要触发hasLayout与BFC:很多自适应的两栏和三栏布局(两 ...
- hasLayout && Block Formatting Contexts
转自:http://www.smallni.com/haslayout-block-formatting-contexts/ 因为本人脑子不好使,自己打印出了一张hasLayout和Block For ...
- BFC and Haslayout
一.BFC(Block Formatting Context) 相关网址:http://www.cnblogs.com/dolphinX/p/3508869.html 1. 怎样才能形成BFC flo ...
- hasLayout与Block formatting contexts的学习(下)
BFC布局规则: 内部的Box会在垂直方向,一个接一个地放置. Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠 每个元素的margin box的左边, ...
- margin折叠及hasLayout && Block Formatting Contexts
margin折叠的产生有几个条件: 这些margin都处于普通流中,并在同一个BFC中: 这些margin没有被非空内容.padding.border 或 clear 分隔开: 这些margin在垂直 ...
- IE7 浏览器下面设置text-indent属性变成margin属性BUG
问题来源 今天做项目的时候发现了一个问题,在使用text-indent属性对元素进行缩进是发现在360浏览器下发生了元素偏移,跟margin-left的效果一样,打开f12发现3607.1浏览采用的i ...
- 【深入BFC】 关于CSS中float布局,清除浮动,和margin合并的原理解析,解开你心中的那些困惑!
BFC的通俗理解: Block Formatting Context(块级格式化上下文)是W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. ...
- CSS浏览器兼容性与解析问题终极归纳
1.怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式.为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯. 2.IE6双边距问题:在 ...
- display:inline 和display:inline-block和display:block的区别
之前讲过块级元素使用display:block 行内元素使用display:inline 那么今天我们就来区分一下display:inline,display:inline-block和display ...
随机推荐
- add以及update
const addressData = { name: this.post('name'), mobile: this.post('mobile'), province_id: this.post(' ...
- c#代码片段新建(sinppet)
在c#里面我们经常用到 1.if 然后按2下Tab,出来下面一段代码 if (true) { } 2.propfull private int myVar; public int MyProperty ...
- C# 读Autofac源码笔记(1)
最近在看Autofac的源码. Autofac据说是.net中最快的IOC框架,具体没有实验,于是看看Autofac具体是怎样实例化实体. image.png 如上图所示,Autofac使用的是表 ...
- 【原创】vim插件安装简介
一.安装vundle(vim插件管理软件): git clone https://github.com/VundleVim/Vundle.vim 拷贝目录到 ~/.vim/bundle/Vundle. ...
- 语法解析 rs.next()
ResultSet.next()方法将指针从当前位置下移一行.ResultSet 指针最初位于第一行之前:第一次调用 next 方法使第一行成为当前行:第二次调用使第二行成为当前行,依此类推. 如果新 ...
- vc6.0 Buile菜单下 Profile的作用
Profile的作用 帮助你分析并发现程序运行的瓶颈,找到耗时所在,同时也能帮助你发现不会被执行的代码.从而最终实现程序的优化. Profile的组成 Profile包括3个命令行工具:PREP,PR ...
- javascript滚动到大于一定距离显示隐藏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [ActionSprit 3.0] FMS客户端与服务器端交互(传参)
客户端as: import flash.net.NetConnection; import flash.events.NetStatusEvent; var nc:NetConnection = ne ...
- [Swift]字符串根据索引获取指定字符,依据ASCII实现字符和整数的相互转换
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...
- Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决
备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...