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