DIV+CSS的布局已經讓表格布局幾乎很少用到,除非表格語義性很強的情況。
display:table解決了一部分需要使用表格特性但又不需要表格語義的情況,
尤其是DIV+CSS很不方便解決的問題,比如以下兩種情況:
一、父元素寬度固定,想讓若干個子元素平分寬度
通常的做法是手動設置子元素的寬度,如果設置百分數不一定能整除,設置具體的數值又限制了父元素的寬度固定,很煩。
可以使用display:table來解決:
.parent{display: table; width: 1000px;} .son{display: table-cell;}
如此一來,就算是三個或者六個元素也可以很方便均分父元素的寬度了。
二、塊級子元素垂直居中
想讓一個div或p在父元素中垂直居中一直是很多人解決不了的問題(注意直接對塊級元素使用vertical-align是不能解決這個問題的,vertical-align定義行內元素的基線相對於該元素所在行的基線的垂直對齊),同樣可以使用display:table方便解決:
.parent {display: table;} .son {display: table-cell; vertical-align: middle;}
將塊級子元素的display設置為table-cell之后再使用vertical-align就可以了。
注意:雖然display:table解決了避免使用表格的問題,但有幾個需要注意的:
(1)display: table時padding會失效
(2)display: table-row時margin、padding同時失效 (3)display: table-cell時margin會失效