您现在的位置是:网站首页> 编程资料编程资料
详解IE浏览器的haslayout属性及相关兼容性问题解决浏览器hack总结 详细的浏览器兼容性的快速解决方法HTML5的video标签的浏览器兼容性增强方案分享浅谈各种浏览器下的CSS Hack兼容性写法CSS3中的Opacity多浏览器透明度兼容性问题火狐浏览器怎么切换到IE兼容模式?浅谈浏览器的兼容性(必看篇)
2021-09-04
1123人已围观
简介 haslayout是IE浏览器专有的属性,然而这个属性却同样会给不同版本的IE带来浮动问题等一些列兼容性上面的麻烦...这里我们就来详解IE浏览器的haslayout属性及相关兼容性问题解决
IE,这个令所有网站设计人员讨厌,但又不得不为它工作的浏览器。不论是6、7还是8,它们都有一个共同的渲染标准haslayout,所以haslayout 是一个非常有必要彻底弄清除的概念。大多 数IE下的显示错误,就是源于它。
什么是Layout呢?
"Layout" 是 IE 的一个私有属性,并不是W3C标准。它决定了一个对象(就是一个标签div、li等)在内容中如何显示、与周围对象的位置关系、以及怎样响应程序或用户产生的事件。
这个属性可以被一些css强制激活。一些HTML标签默认具有haslayout。
PS:一个对象的layout属性被激活,它的具体表现就是haslayout=true。我们可以用IE Developer Toolbar工具看到被激活的对象带有"haslayout = -1"的属性。
下面这些标签默认拥有haslayout属性:
- <html>, <body>
- <table>, <tr>, <th>, <td>
- <img>
- <hr>
- <input>, <button>, <select>, <textarea>, <fieldset>, <legend>
- <iframe>, <embed>, <object>, <applet>
- <marquee>
你可能就问:微软干嘛要设layout这个东西呢?当一个对象的layout被激活时,它以及它的子对象的定位和尺寸计算将独立进行,不受附近对象 的干扰。也就是说它拥有一个独立的布局(layout)。因此浏览器要花费更多的代价来处理拥有haslayout的对象。为了提高性能,微软增加了 layout这个IE私有的概念。
怎样激活layout?
下面列出的css属性可以激活对象的layout:
- position: absolute
设置绝对定位可能会引发新的问题。
- float: left|rightright
IE下的浮动也会产生一些莫名其妙的问题。
- display: inline-block
当一个内联元素需要haslayout属性时就需要用它,但是IE本身不支持inline-block的,只是表现得像标准里说的inline-block。
1.width: 除'auto'外的任意值
优先考虑使用该属性。
2.height: 除'auto'外的任意值
对 IE6 及更早版本来说很常用,该方法被称为霍莉破解(Holly hack),即设定这个元素的高度为 1% (height:1%;)。但是要注意,当这个元素的 overflow 属性被设置为 visible 时,这个方法就失效了。
3.zoom: 除'normal'外的任意值
又一个ie私有属性,不兼容标准。zoom:1可以在测试或者不追求标准的情况下使用,效果不错。
- writing-mode: tb-rl
ie私有属性,不推荐用。
IE7 还有一些额外的属性:
1.min-height: (任意值)
2.max-height: (除 none 外任意值)
3.min-width: (任意值)
4.max-width: (除 none 外任意值)
5.overflow: (除 visible 外任意值)
6.overflow-x: (除 visible 外任意值)
7.overflow-y: (除 visible 外任意值)
8.position: fixed
重置haslayout
在没有其它属性激活layout的情况下,使用下面的css可以重置haslayout属性:
1.width, height (设为 "auto")
2.max-width, max-height (设为 "none")(在 IE 7 中)
3.position (设为 "static")
4.float (设为 "none")
5.overflow (设为 "visible") (在 IE 7 中)
6.zoom (设为 "normal")
7.writing-mode (从 "tb-rl" 设为 "lr-t")
display 属性的不同:当用"inline-block"激活了haslayout 属性时,就算在一条独立的规则中覆盖这个属性为"block"或"inline",haslayout 这个标志位也不会被重置为 false。
把 mid-width, mid-height 设为它们的默认值"0"仍然会赋予 hasLayout,但是 IE 7 却可以接受一个不合法的属性"auto"来重置 hasLayout。
触发 hasLayout 清除浮动
样例:
- haslayout-clear-float:{width:1px}
或
- .haslayout-clear-float:{height:1px}
或
- .haslayout-clear-float:{zoom:1}
'Layout' 是 IE 的专有概念,它决定了元素如何对其内容进行定位和尺寸计算,与其他元素的关系和相互作用,以及对应用还有使用者的影响。
'Layout' 可以被某些 CSS property(特性)不可逆的触发,而某些 HTML 元素本身就具有 layout 。
'Layout' 在 IE 中可以通过 hasLayout 属性来判断一个元素是否拥有 layout ,如 object.currentStyle.hasLayout 。
'Layout' 是 IE 浏览器渲染引擎的一个内部组成部分。在 IE 浏览器中,一个元素要么自己对自身的内容进行组织和计算大小, 要么依赖于包含块来计算尺寸和组织内容。为了协调这两种方式的矛盾,渲染引擎采用了 'hasLayout' 属性,属性值可以为 true 或 false。 当一个元素的 'hasLayout' 属性值为 true 时,我们说这个元素有一个布局(layout),或拥有布局。
相关内容
- 分享CSS3制作卡片式图片的方法CSS3实现圆角、阴影、透明效果并兼容各大浏览器css3圆角边框和边框阴影示例css3圆角样式分享自定义按钮样式让IE6、IE7、IE8支持CSS3的圆角、阴影样式CSS3的Border-radius轻松制作圆角CSS3实现DIV圆角效果完整代码 CSS制作箭头图标代码(圆,三角形,椭圆) HTML5 Canvas中绘制椭圆的4种方法html5 canvas里绘制椭圆并保持线条粗细均匀的技巧在html5的Canvas上绘制椭圆的几种方法总结
- CSS3制作缩略图的详细过程IE7下生成高质量CSS缩略图CSS3制作圆角图片和椭圆形图片HTML5实践-图片设置成灰度图Dreamweaver中实现双背景图片导航菜单的代码网页设计中对于图片格式与设计关系的详解用ASP.NET实现下载远程图片保存到本地的方法 保存抓取远程图片的方法巧用CSS3 border实现图片遮罩效果代码CSS图片垂直居中实现方法详解 用CSS实现的图片透明度链接效果代码 实测图片的HTTP请求
- 浅谈CSS浮动的那点事儿深入理解css布局之定位与浮动清除css浮动的三种方法小结CSS使用float属性设置浮动元素的实例教程CSS浮动所差生的内容溢出问题及清除浮动的方法小结CSS3定位和浮动详解浅谈CSS浮动的特性
- css布局模型全面了解解析CSS的box model盒模型及其内的子元素布局控制CSS3弹性盒模型flex box快速入门心得(必看篇)CSS弹性盒模型flex在布局中的应用详解几个CSS3的flex弹性盒模型布局的简单例子演示CSS网页布局的核心内容:CSS盒模型掌握盒模型轻松DIV CSS网页布局
- 浅谈css中的clip裁剪用法CSS中的clip-path区域裁剪属性使用教程CSS裁剪属性clip使用的实例教程
- css优先级计算方法(推荐)CSS优先级计算的规则详解CSS中的选择器优先级顺序详解CSS中的选择器优先级及样式层叠问题解决CSS z-index 层级关系优先级的概念CSS优先级的两种理解方式
- 浅谈css margin重叠CSS 之margin知识点(必看)css布局之负margin妙用及其他实现CSS的margin属性在页面布局中的使用攻略细说CSS中margin属性的使用 深入解析CSS中margin属性的使用CSS中使用负margin值来调整居中位置CSS属性探秘系列(六):margin解决margin 外边距合并问题
- 浅谈css元素居中css 不定宽高的元素居中布局解决方案CSS实现元素居中原理解析CSS元素居中布局的简单方法CSS实现定位元素居中的方法html元素水平居中、垂直居中、水平垂直居中于其父级元素的方法css控制div中元素居中的示例css实现元素居中的N种方法
- 纯CSS3绘制打火机动画火焰效果利用css实现浮雕效果示例代码html5使用canvas实现跟随光标跳动的火焰效果分享16款燃烧的火焰效果英文字体大宝库CSS3实现文字浮雕效果,镂刻效果,火焰文字
- 如何判断PC端浏览器内核老生常谈css中float的用法CSS3实现iPhone滑动解锁功能代码响应式设计你需要了解的知识点CSS特殊性、继承与层叠CSS布局基础BFC CSS3绘制有活力的链接下划线css样式图片、渐变、相关小知识(必看)纯CSS3绘制各种不规则图形图标样式特效源码