轉載自:https://segmentfault.com/a/1190000007007885
table標簽(display:table)
1) table可設置寬高、margin、border、padding等屬性。屬性值的單位可以使用px,百分比值。
2) table的寬度默認由內容的寬高撐開,如果table設置了寬度,寬度默認被它里面的td平均分,如果給某一個td設置寬度,那么table剩余的寬度會被其他的td平均分(有點類似flex布局)
3) 給table設置的高度起到的作用只是min-height的作用,當內容的高度高於設置的高度時,table的高度會被撐高。
tr標簽(display:table-row)
1) 給tr設置高度只起到min-height的作用,默認會平分table的高度。
2) tr中的td默認高度會繼承tr的高度,若給任一td設置了高度,其他td的高度也同樣變高。適合多列等高布局
3) 設置寬度、margin、都不起作用
td標簽(display:table-cell)
1) td默認繼承tr的高度,且平分table的寬度
2) 若table(display:table)不存在,給td設置的寬高不能用百分比只能用准確的數值
3) 給td設置vertical-align: middle; td元素里面(除float、position:absolute)所有的塊級、非塊級元素都會相對於td垂直居中
4) 給td設置text-align: center; td元素里面所有非block元素(除float、position:absolute)都會相對於td水平居中,雖然block元素不居中,但其中的文字或inline元素會水平居中