haslayout到底是什么?
haslayout是IE的私有概念,HTML部分元素默认拥有haslayout,而通过部分的CSS,可以给haslayout不为true的HTML元素触发为true。也就是说,如果某个HTML元素拥有haslayout属性,那么这个元素的haslayout的值一定只有true,否则,这个元素就没有haslayout,haslayout一旦被触发,就不可以逆转,haslayout为只读属性。
查看haslayout的值
通过IE Developer Toolbar可以查看IE下HTML元素是否拥有haslayout,在IE Developer Toolbar下,拥有haslayout的元素,通常显示为“haslayout = -1”。
那些HTML元素默认拥有haslayout?
<html>, <body> <table>, <tr>, <th>, <td> <img> <hr> <input>, <select>, <textarea>, <button> <iframe>, <embed>, <object>, <applet> <marquee>
在IE下,哪些CSS属性可以触发haslayout为true?
IE6: position: absolute, float: left|right, display: inline-block, width: 任意值, height: 任意值, zoom: 任意值 IE7: overflow: hidden|scroll|auto, position: fixed, min-width: 任意值, max-width: 除 none 之外的任意值, min-height: 任意值, max-height: 除 none 之外的任意值
那么,了解haslayout有何意义呢?haslayout可以解决IE很多奇怪的bug和渲染bug,通常通过触发haslayout为true来解决。接下来,就了解下因为haslayout的临床表现:
- 负边框问题,下载这个demo然后去掉IE6注释,对比标准浏览器和IE6下不同的表现,并且用IE develop toolbar查看不同表现的HTML元素的haslayout。
- 滤镜,IE的私有滤镜只有在元素被触发haslayout后,滤镜才会被执行。
未完待续。。。
No comments:
Post a Comment