当前位置:
- 首页
- /
- CSS
- /
- CSS:haslayout知多少
CSS:haslayout知多少
二、默认拥有haslayout属性<html>, <body><table>, <tr>, <th>, <td><img><hr><input>, <button>, <select>, <textarea>, <fieldset>, <legend><iframe>, <embed>, <object>, <applet><marquee>三、触发haslayout属性很多情况下,我们把 hasLayout的状态改成true 就可以解决很大部分ie下显示的bug。 hasLayout属性不能直接设定,你只能通过设定一些特定的CSS属性来触发并改变 hasLayout 状态。下面列出可以触发hasLayout的一些CSS属性值。display 启动haslayout的值:inline-block 取消hasLayout的值:其他值 -------------------------------------- width/height 启动hasLayout的值:除了auto以外的值取消hasLayout的值:auto ( 对 IE6 及更早版本来说很常用,该方法被称为霍莉破解(Holly hack),即设定这个元素的高度为 1% (height:1%;)。但是要注意,当这个元素的 overflow 属性被设置为 visible 时,这个方法就失效了。)--------------------------------------- position 启动hasLayout的值:absolute 取消hasLayout的值:static ---------------------------------------- float 启动hasLayout的值:left或right 取消hasLayout的值:none --------------------------------------- zoom 启动hasLayout的值:有值 取消hasLayout的值:narmal或者空值 (又一个ie私有属性,不兼容标准。)ie7还有一些额外的属性可以触发该属性(不完全列表): min-height: (任何值) max-height: (任何值除了none) min-width: (任何值) max-width: (任何值除了none) overflow: (任何值除了visible) overflow-x: (任何值除了visible) overflow-y: (任何值除了visible)position: fixed 四、发现及使用因元素hasLayout而导致的问题其实一般都很容易发现:往往是内容出现错位甚至完全不可见,比如含浮动或者绝对定位子元素的容器高度会塌陷,在ie6/ie7下我们为其添加zoom:1属性就触发了haslayout,从而修复高度塌陷的问题;再比如,我们经常会碰到ie6和ie7同时出现的bug,这个时候可以考虑是否源于 haslayout,可以添加一些可以触发haslayout的属性来解决。
来源: