CSS屬性display:inline-block的深入理解_CSS教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
在使用 CSS 實(shí)現(xiàn)表現(xiàn)的時(shí)候,會(huì)經(jīng)常接觸到 display:inline-block 這一屬性,大都會(huì)對(duì)這一屬性感覺很模糊。
display:inline-block
將對(duì)象呈遞為內(nèi)聯(lián)對(duì)象,但是對(duì)象的內(nèi)容作為塊對(duì)象呈遞。旁邊的內(nèi)聯(lián)對(duì)象會(huì)被呈遞在同一行內(nèi),允許空格。
但對(duì)于這個(gè)屬性不是所有瀏覽器都識(shí)別。
支持的瀏覽器有:Opera、Safari。
但很遺憾,最流行的 IE 和 Firefox 卻不支持這個(gè)屬性(在 Firefox3 版本中將會(huì)支持 display:inline-block)。不過 Firefox 下卻有私有屬性 -moz-inline-box 和inline-block 形似,為什么是“形似”而不是“神似”呢?這是因?yàn)槭褂?-moz-inline-box 會(huì)帶來(lái)很多意想不到的后遺癥,比如使用這一屬性后,text-align 有時(shí)候就會(huì)有問題,還得改用 Firefox 的私有屬性 -moz-box-align 來(lái)解決。
建議:最好不要使用 Firefox 私有屬性 -moz-inline-box。
或許有朋友會(huì)對(duì)上面所說的 IE 也不支持 display:inline-block 屬性,表示疑問或者反對(duì)。說:“我在 IE 中對(duì) a 或者 span 等內(nèi)聯(lián)元素使用 display:inline-block 一直是有效的”。
其實(shí)不然,在IE中對(duì)內(nèi)聯(lián)元素使用 display:inline-block,IE 是不識(shí)別的,但使用 display:inline-block 在 IE 下會(huì)觸發(fā) layout,從而使內(nèi)聯(lián)元素?fù)碛辛薲isplay:inline-block 屬性的表像。從上面的這個(gè)分析,也不難理解為什么 IE 下,對(duì)塊元素設(shè)置 display:inline-block 屬性無(wú)法實(shí)現(xiàn) inline-block 的效果。這時(shí)塊元素僅僅是被 display:inline-block 觸發(fā)了 layout,而它本就是行布局,所以觸發(fā)后,塊元素依然還是行布局,而不會(huì)如 Opera 中塊元素呈遞為內(nèi)聯(lián)對(duì)象。
延伸一個(gè)問題:IE下塊元素如何實(shí)現(xiàn) display:inline-block 的效果?
有兩種方法:
1、先使用 display:inline-block 屬性觸發(fā)塊元素,然后再定義 display:inline,讓塊元素呈遞為內(nèi)聯(lián)對(duì)象(兩個(gè)display 要先后放在兩個(gè) CSS 聲明中才有效果,這是 IE 的一個(gè)經(jīng)典 bug ,如果先定義了 display:inline-block,然后再將 display 設(shè)回 inline 或 block,layout 不會(huì)消失)。代碼如下(…為省略的其他屬性內(nèi)容):
2、直接讓塊元素設(shè)置為內(nèi)聯(lián)對(duì)象呈遞(設(shè)置屬性 display:inline),然后觸發(fā)塊元素的 layout(如:zoom:1 等)。代碼如下:
本文作者:silence
display:inline-block
將對(duì)象呈遞為內(nèi)聯(lián)對(duì)象,但是對(duì)象的內(nèi)容作為塊對(duì)象呈遞。旁邊的內(nèi)聯(lián)對(duì)象會(huì)被呈遞在同一行內(nèi),允許空格。
但對(duì)于這個(gè)屬性不是所有瀏覽器都識(shí)別。
支持的瀏覽器有:Opera、Safari。
但很遺憾,最流行的 IE 和 Firefox 卻不支持這個(gè)屬性(在 Firefox3 版本中將會(huì)支持 display:inline-block)。不過 Firefox 下卻有私有屬性 -moz-inline-box 和inline-block 形似,為什么是“形似”而不是“神似”呢?這是因?yàn)槭褂?-moz-inline-box 會(huì)帶來(lái)很多意想不到的后遺癥,比如使用這一屬性后,text-align 有時(shí)候就會(huì)有問題,還得改用 Firefox 的私有屬性 -moz-box-align 來(lái)解決。
建議:最好不要使用 Firefox 私有屬性 -moz-inline-box。
或許有朋友會(huì)對(duì)上面所說的 IE 也不支持 display:inline-block 屬性,表示疑問或者反對(duì)。說:“我在 IE 中對(duì) a 或者 span 等內(nèi)聯(lián)元素使用 display:inline-block 一直是有效的”。
其實(shí)不然,在IE中對(duì)內(nèi)聯(lián)元素使用 display:inline-block,IE 是不識(shí)別的,但使用 display:inline-block 在 IE 下會(huì)觸發(fā) layout,從而使內(nèi)聯(lián)元素?fù)碛辛薲isplay:inline-block 屬性的表像。從上面的這個(gè)分析,也不難理解為什么 IE 下,對(duì)塊元素設(shè)置 display:inline-block 屬性無(wú)法實(shí)現(xiàn) inline-block 的效果。這時(shí)塊元素僅僅是被 display:inline-block 觸發(fā)了 layout,而它本就是行布局,所以觸發(fā)后,塊元素依然還是行布局,而不會(huì)如 Opera 中塊元素呈遞為內(nèi)聯(lián)對(duì)象。
延伸一個(gè)問題:IE下塊元素如何實(shí)現(xiàn) display:inline-block 的效果?
有兩種方法:
1、先使用 display:inline-block 屬性觸發(fā)塊元素,然后再定義 display:inline,讓塊元素呈遞為內(nèi)聯(lián)對(duì)象(兩個(gè)display 要先后放在兩個(gè) CSS 聲明中才有效果,這是 IE 的一個(gè)經(jīng)典 bug ,如果先定義了 display:inline-block,然后再將 display 設(shè)回 inline 或 block,layout 不會(huì)消失)。代碼如下(…為省略的其他屬性內(nèi)容):
示例代碼 [hl5o.cn]
div {display:inline-block;...}div {display:inline;}
2、直接讓塊元素設(shè)置為內(nèi)聯(lián)對(duì)象呈遞(設(shè)置屬性 display:inline),然后觸發(fā)塊元素的 layout(如:zoom:1 等)。代碼如下:
示例代碼 [hl5o.cn]
div {display:inline; zoom:1;...}
本文作者:silence
相關(guān)CSS教程:
CSS教程Rss訂閱Div+Css教程搜索
CSS教程推薦
- 特定選擇器控制權(quán)的多個(gè)CSS樣式表
- CSS教程:使用恰當(dāng)?shù)腦HTML元素及避免過多的使用div與span
- 使用CSS的最佳習(xí)慣
- CSS基礎(chǔ):text-overflow:ellipsis溢出文本顯示省略號(hào)的詳細(xì)方法
- CSS網(wǎng)頁(yè)設(shè)計(jì)中的解決方案
- CSS進(jìn)階:詳解CSS優(yōu)先級(jí)的讀法
- 用CSS定義列表項(xiàng)目效果
- CSS教程:詳解visibility屬性CSS控制內(nèi)容顯示
- CSS教程4、CSS的Text文本[翻譯Htmldog]
- font-size的控制em與px的終極PK!
猜你也喜歡看這些
- HTML表單標(biāo)記教程(1):
- HTML教程:收集的常用的HTML標(biāo)簽(4)
- HTML表格標(biāo)記教程(40):表頭的暗邊框色屬性BORDERCOLORDARK
- 網(wǎng)頁(yè)表單設(shè)計(jì)實(shí)例技巧五則
- 制作符合Web標(biāo)準(zhǔn)的超鏈接
- HTML初級(jí)教程段落
- HTML高級(jí)教程標(biāo)準(zhǔn)要點(diǎn)(xhtml)
- HTML高級(jí)教程 聲明
- HTML表格標(biāo)記教程(28):單元格的邊框色屬性BORDERCOLOR
- XHTML具有語(yǔ)義的標(biāo)簽:有關(guān)H1位置的討論
- 相關(guān)鏈接:
- 教程說明:
CSS教程-CSS屬性display:inline-block的深入理解
。