首页 > 代码库 > 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