css display inline block 相容性問題寫法

來源:互聯網
上載者:User
今天在寫布局的時候發現的一個bug,如果不這樣就達不到預期的效果,無法兩行排列,原來ie6、ie7下對display:inline-block不支援,所以需要用到css hack才可以相容性:

IE6、IE7不識別inline-block但可以觸發塊元素。

其它主流瀏覽器均支援inline-block。

解決IE6、IE7相容性的方法:

1、首先設定inline-block觸發塊元素,具有了layout的特性,然後設定display:inline使塊元素呈現內嵌元素,此時layout的特性不會消失。

2、直接設定display:inline,使用zoom:1觸發layout。

相容所有瀏覽器的方法是:


CSS Code複製內容到剪貼簿

  1. display:inline-block; /* 現代瀏覽器 +IE6、7 inline 元素 */

  2. *display:inline; /* IE6、7 block 元素 */

  3. *zoom:1;

下面簡單介紹下:

1、執行個體示範效果



2、display:inline-block作用?

使用display:inline-block屬性,可以使行內元素或塊元素能夠變成行內塊元素,簡單直白點講就是不加float屬性就可以定義自身的寬、高,同時又能使該元素輕鬆在父元素置中顯示!

3、什麼時候會用到display:inline-block?

在網站布局中,很多時候,子項目中使用行內元素如span或塊元素li標籤且標籤個數不定,而我們又想讓這一塊不管個數有多少個(子項目的總體寬度不定),始終都能置中顯示!這個時候display:inline-block就能派上用場了!

4、ie6/7支援display:inline-block這個屬性嗎?

在內嵌元素上定義display:inline-block屬性,發現IE6、IE7中的顯示效果同其它瀏覽器一致,但事實是ie7及更低版本的ie瀏覽器不支援display:inline-block這個屬性!
正確的解釋是"使用inline-block屬性在IE下會觸發layout,因此元素上設定的width、height是能生效的,所以也就有了同其它瀏覽器一致的顯示效果",而不能說IE6/7支援 display:inline-block!

5、行內元素只需定義display:inline-block,顯示效果各瀏覽器都是一致,IE7下塊元素如何? display:inline-block 的效果??

在IE下,display: inline-block只是觸發了元素的layout。比如將display: inline-block設定到p上,只能保證這個p擁有塊元素的特徵(可以設定寬度,高度等),但還是會產生換行。接下來要設定display: inline,使其不產生換行。將display:inline-block;*display:inline;寫在同一個樣式上,inline-block屬性是不會觸發元素的layout的,因此我們還要額外加上 *zoom:1來觸發layout!

6、IE7下塊元素如何相容 display:inline-block寫法?

實際有效方法共有2種:

方法1:直接讓塊元素設定為內聯對象呈遞(設定屬性 display:inline),然後觸發塊元素的 layout(如:zoom:1 等)。相容各瀏覽器的代碼如下: p {display:inline-block;*display:inline; *zoom:1;...}
方法2:先使用 display:inline-block 屬性觸發塊元素,然後再定義 display:inline,讓塊元素呈遞為內聯對象(兩個display 要先後放在兩個 CSS 樣式聲明中才有效果,這是 IE 的一個經典 bug ,如果先定義了 display:inline-block,然後再將 display 設回 inline 或 block,layout 不會消失)。代碼如下(…為省略的其他屬性內容): p {display:inline-block;...}p {*display:inline;}

7、display:inline-block元素間會產生多餘空白怎麼解決?

display:inline-block元素間會產生多餘空白,這是inline-block本身特性!
嚴格來講不算BUG,使用font-size設定可以解決,解決display:inline-block元素間多餘空白的相關文章:http://www.jb51.net/css/76707.html

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.