inline-block和inline,block,table,table-cell的區別是什麼,就是之間有什麼特性?
01-05
如題,就比如說。瀏覽器是如何渲染block,block相比其他的有什麼區別,在渲染上有什麼區別??
瀉藥
這題太大了。
的確你得好好看看 CSS 2 的 9(可視化布局模型) 、10(可視化布局模型細節)、17 (表格)這三章才行。簡單說下一些明顯差異。- inline-block 是寬高margin設定有效,參與行內格式化上下文,在行內對齊時使用它自己的框底邊為基線對齊位置(大致是吧,雖然某些替換元素實現的不一定)
- linline 無視寬高設定,無視上下margin設定,參與行內格式化上下文,在行內對齊時使用它內文字基線作為基線對齊位置
- block 寬高設定有效margin有效,參與塊格式化上下文,如果處於行內框內,則行內框會被迫打斷一分為二成兩個新行內框。
- table ,參與塊格式化上下文,大體同 block。
- inline-table,處於行內格式化上下文中,大體同 inline-block。但是基線是以單元格(所謂的table box)底邊為準,而不是以整個表的包裹框為準。
- table-call , 這個最複雜,比如沒有 margin,可跨多行列,不能超過行組列組最後一個框,匿名狀態中float和position可能會破壞其 table-call 狀態等。(寫到這好像有點明白了,貌似這個是要問如果非td th 啥的給了 table-call 會咋樣吧)
大致這樣吧……
基礎:
Visual formatting model詳解:Visual formatting model details要系統了解就看這個。默認display:block的元素(塊元素):
- 默認獨佔一行
- 沒有寬度時,默認撐滿一排
- 支持所有css(width,height,上下margin 上下padding)
- 同排可以繼續跟同類的標籤
- 寬度由內容撐開
- 不支持寬高
- 不支持上下的margin和padding
- html源碼裡面的空格會被識別出來(換行也會被當作是空格展現到頁面上)
塊和內嵌的轉換:
display:block 顯示為塊
display:inline 顯示為內嵌
display:inline-block- 塊在一行顯示;
- 行內屬性標籤支持寬高;
- 沒有寬度的時候內容撐開寬度
- 代碼空格/換行被解析;
我在codepen上面試了下www:
inline:
在行內對齊時使用父元素輪廓線作為對齊位置inline-block:
在行內對齊時使用父元素邊框線作為對齊位置block:
tabl-cell:
元素作為表格單元格顯示看了高票答案補充個inline-table:元素作為內聯表格顯示(同inline-block)詳見w3c css教程
推薦閱讀:
※對於CSS布局中CSS Grid Layout 和CSS Box Alignment兩大模塊有何看法?
※有哪些好方法能處理 display: inline-block 元素之間出現的空格?
※transform-style:preserve-3d能力檢測?
※HBuilder 編輯器有什麼故事?
※CSS3 動畫在 iOS 上為什麼會因為頁面滾動也停止?