如何实现浏览器兼容版的inline-block显示

display:inline-block兼容的问题,网上的答案最多的就是:html

display:inline-block;浏览器

*display:inline;htm

*zoom:1;blog

  知其然知其因此然,那么为何要这么作。在IE浏览器中,元素有一个haslayout属性(haslayout只能被触发,不能修改成IE浏览器规定之外的其余值),属性值能够为true或false。当一个元素的 haslayout属性值为true时,这个元素就有一个layout,当一个元素拥有一个layout时,它就能对本身和子孙元素进行尺寸计算和定位,这就意味着这个元素须要花更多的代价来维护自身和子孙元素。当一个元素“拥有layout”或“获得layout”,或者说一个元素“has layout”的时候,那么它的IE浏览器属性 haslayout 被设为了true 。一个“layout元素”能够是一个默认就拥有haslayout属性的元素或者是一个经过设置某些CSS属性获得haslayout 的元素。若是某个HTML元素拥有haslayout属性,那么这个元素的 haslayout的值必定为true。it

  如今知道了在IE浏览器中元素只要触发了元素的haslayout属性,它就能对本身和子孙元素进行尺寸计算和定位。那么怎么才能触发haslayout属性呢?(请看http://blog.sina.com.cn/s/blog_51048da701018o29.html)(如下内容引用自http://blog.sina.com.cn/s/blog_51048da701018o29.html)io

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 
相关文章
相关标签/搜索