課程
/前端開發(fā)
/HTML/CSS
/CSS深入理解之line-height
在低版本瀏覽器下,比如ie6,如果對inline-block元素設(shè)置了width或height屬性,是不是會變?yōu)閴K級別元素?
2018-06-20
源自:CSS深入理解之line-height 6-1
正在回答
ie7及更低版本的ie瀏覽器不支持display:inline-block這個屬性!?正確的解釋是”使用inline-block屬性在IE下會觸發(fā)layout,因此元素上設(shè)置的width、height是能生效的,所以也就有了同其它瀏覽器一致的顯示效果”,而不能說IE6/7支持?display:inline-block!
在IE下,display: inline-block只是觸發(fā)了元素的layout。比如將display:?inline-block設(shè)置到div上,只能保證這個div擁有塊元素的特征(可以設(shè)置寬度,高度等),但還是會產(chǎn)生換行。接下來要設(shè)置display:?inline,使其不產(chǎn)生換行。將display:inline-block;*display:inline;寫在同一個樣式上,inline-block屬性是不會觸發(fā)元素的layout的,因此我們還要額外加上?*zoom:1來觸發(fā)layout!
IE7下塊元素如何兼容 display:inline-block寫法
方法1:直接讓塊元素設(shè)置為內(nèi)聯(lián)對象呈遞(設(shè)置屬性 display:inline),然后觸發(fā)塊元素的 layout(如:zoom:1等)。兼容各瀏覽器的代碼如下: div {display:inline-block;*display:inline; *zoom:1;…}
解釋:dispaly:inline-block照顧的是ie8+的瀏覽器,這是正常的設(shè)置,在低版本的ie下設(shè)置行內(nèi)塊有2個條件,一個是行內(nèi),一個是設(shè)置寬高,觸發(fā)layout即可設(shè)置寬高,而div設(shè)置了寬高后還是會換行,layout不是為水平而設(shè)置的,所以為塊級元素轉(zhuǎn)行內(nèi)塊加上了*display:inline屬性,但是display:inline不會觸發(fā)layout,于是加上zoom:1重新觸發(fā)layout,于是就形成了一個可以“設(shè)置寬高的行內(nèi)元素”
方法2:先使用 display:inline-block 屬性觸發(fā)塊元素,然后再定義 display:inline,讓塊元素呈遞為內(nèi)聯(lián)對象(兩個display 要先后放在兩個 CSS 樣式聲明中才有效果,這是 IE 的一個經(jīng)典bug ,如果先定義了 display:inline-block,然后再將 display 設(shè)回 inline 或 block,layout不會消失)。代碼如下(…為省略的其他屬性內(nèi)容): div {display:inline-block;…}div{*display:inline;}
jindong 提問者
舉報
帶領(lǐng)大家深入理解line-height的定義,還有實際應(yīng)用經(jīng)驗分享
1 回答p標(biāo)簽是屬于塊級元素還是內(nèi)聯(lián)元素?
2 回答內(nèi)聯(lián)元素的高度不是line-height決定的吧
1 回答為什么我在父級塊元素設(shè)置行高跟盒子高度一致時,里面的img會垂直居中,搞不懂啊
1 回答內(nèi)聯(lián)元素的行高由什么決定?line-height???
2 回答內(nèi)聯(lián)元素的高度是由行高決定的&&高度的表現(xiàn)不是行高 是否矛盾? 為什么line-height是由文本間的基線來計算的,但是單行文本卻有l(wèi)ine-height
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-06-26
ie7及更低版本的ie瀏覽器不支持display:inline-block這個屬性!?
正確的解釋是”使用inline-block屬性在IE下會觸發(fā)layout,因此元素上設(shè)置的width、height是能生效的,所以也就有了同其它瀏覽器一致的顯示效果”,而不能說IE6/7支持?display:inline-block!
在IE下,display: inline-block只是觸發(fā)了元素的layout。比如將display:?inline-block設(shè)置到div上,只能保證這個div擁有塊元素的特征(可以設(shè)置寬度,高度等),但還是會產(chǎn)生換行。接下來要設(shè)置display:?inline,使其不產(chǎn)生換行。將display:inline-block;*display:inline;寫在同一個樣式上,inline-block屬性是不會觸發(fā)元素的layout的,因此我們還要額外加上?*zoom:1來觸發(fā)layout!
IE7下塊元素如何兼容 display:inline-block寫法
方法1:直接讓塊元素設(shè)置為內(nèi)聯(lián)對象呈遞(設(shè)置屬性 display:inline),然后觸發(fā)塊元素的 layout(如:zoom:1等)。兼容各瀏覽器的代碼如下: div {display:inline-block;*display:inline; *zoom:1;…}
解釋:dispaly:inline-block照顧的是ie8+的瀏覽器,這是正常的設(shè)置,在低版本的ie下設(shè)置行內(nèi)塊有2個條件,一個是行內(nèi),一個是設(shè)置寬高,觸發(fā)layout即可設(shè)置寬高,而div設(shè)置了寬高后還是會換行,layout不是為水平而設(shè)置的,所以為塊級元素轉(zhuǎn)行內(nèi)塊加上了*display:inline屬性,但是display:inline不會觸發(fā)layout,于是加上zoom:1重新觸發(fā)layout,于是就形成了一個可以“設(shè)置寬高的行內(nèi)元素”
方法2:先使用 display:inline-block 屬性觸發(fā)塊元素,然后再定義 display:inline,讓塊元素呈遞為內(nèi)聯(lián)對象(兩個display 要先后放在兩個 CSS 樣式聲明中才有效果,這是 IE 的一個經(jīng)典bug ,如果先定義了 display:inline-block,然后再將 display 設(shè)回 inline 或 block,layout不會消失)。代碼如下(…為省略的其他屬性內(nèi)容): div {display:inline-block;…}div{*display:inline;}