如何實現瀏覽器兼容版的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 
相關文章
相關標籤/搜索