那我们来看一下什么haslayout?
haslayout是IE渲染引擎的一个内部组成部分。在IE中,一个元素计算大小和组织内容,要么对自身的内容进行计算大小和组织内 容,要么依赖于父元素来计算尺寸和组织内容。为了调节这两个不同的概念,渲染引擎采用了haslayout的属性,属性值可以为true或false。当 一个元素的 haslayout属性值为true时,我们说这个元素有一个布局(layout)。
在ie下有一些标签是本身就拥有haslyout的,大家以后用到的时候要注意一下。例如:
具有haslyout的HTML标签 有:<table>、<td>、<body>、<img>、<hr>、<input>、<select>、<textarea>、<button>、<iframe>、<embed>、<object> <applet>、<marquee>、< html>、< tr>、< th>、<fieldset>、< frameset>、<frame> 等(未完全统计)。
那是我们怎么才可以激活haslayout?
1.
通过设置CSS能够获得的haslayout的属性有:display: inline-block;、height: (任何值除了auto);、float: (left或right);、position: absolute;、 width: (任何值除了auto);、writing-mode: tb-rl;、zoom: (除normal外任意值);、 min-height: (任意值);、
max-height: (除none外任意值);、min-width: (任意值);、max-width:
(除none外任意值);、overflow: (除visible外任意值);、overflow-x: (除visible外任意值);、overflow-y: (除visible外任意值);、 position: fixed;(未完全统计)
2.
对于内联元素(默认即为内联的元素,如span,或display:inline; 的元素),width和height只在IE5.x下和IE6或更新版本的quirks模式下触发hasLayout。而对于IE6,如果浏览器运行于标 准兼容模式(具有Doctype的模式)下,内联元素会忽略width或height属性,所以设置width或height不能在此种情况下令该元素具 有layout
3.
zoom总是可以触发hasLayout,但是在IE5.0中不支持。
4.
这个元素的高度为1%(height:1%;)。但是在这个元素的overflow属性被设置为visible时,就失效了。
5.
对IE7来说,最好的方法是设置元素的最小高度为0px(min-height0px;)
如果大家想进一步了解haslayout的问题,可以参加一下网站:
没有评论:
发表评论