首页 > 代码库 > Layout
Layout
Layout
‘Layout’ 是 IE 浏览器渲染引擎的一个内部组成部分。在 IE 浏览器中,一个元素是依赖祖先元素来管理自身尺寸和内容, 一个是自己负责管理自身尺寸和内容。为了协调这两种方式的矛盾,渲染引擎采用了 ‘hasLayout’ 属性,属性值可以为 true 或 false。 当一个元素的 ‘hasLayout’ 属性值为 true 时,我们说这个元素’hasLayout’,即拥有布局。
一个元素’hasLayout’就是指该元素自己负责管理自身尺寸和几乎所有子元素(除了那些同样拥有layout的子元素,因为这些拥有layout的子元素同样是自己负责管理自身的尺寸和后代)。
元素如何才能拥有layout
有一些元素默认就拥有layout,例如:
<img>
<table> <tr> <th> <td>
<hr>
<input> <select> <textarea> <button>
<marquee>
<iframe>
<object> <applet> <embed>
<html> <body>
其它元素在满足一定条件时也会拥有layout,
例如:
position:absolute
的元素
float: left | right
的元素
display: inline-block
的元素
在严格模式下,块级元素设置宽度/高度(值不能为auto
)后会拥有layout
在compat模式下,任何元素赋值宽度/高度(值不能为auto
)后都会具备layout
设置zoom属性(值不为normal
)的元素具备layout
跟父级元素的布局流不相同的元素(rtl to ltr)
当元素满足以上任何一个条件时在IE6、7中都会拥有layout。还有一些CSS属性只在IE7中能让元素拥有layout,例如:
overflow: hidden | scroll | auto
的元素
overflow-x|-y: hidden | scroll | auto
的元素
min-width | min-height: 任意值(包括0)
的元素
max-width | max-height: 除 “none” 之外的任意值
的元素
Layout