table實現等高的優點

實現左右兩端等高佈局的方法,常見的方法有負margin。css

負margin有一個缺點,好比實現下圖樣式:html

一行三列等高佈局,經過負margin徹底能實現,但難點在於每一列的底部有陰影(box-shadow)。因爲採用負margin,須要將父級設置overflow:hidden,所以底部的陰影將消失。除此以外,全部須要在底部渲染的都會出問題,好比背景圖在底部,若採用負margin,則底部背景圖是沒法看到的。這是致命缺點。佈局

如今所要實現的效果是:一行三列,寬度平分,自適應,等高,且實現陰影。spa

若是沒有實現陰影要求,徹底能夠經過負margin+width:33.33333%實現,如今則不能。code

table自己就是等高的,且不須要overflow:hidden,所以陰影也能實現。同時table有fixed佈局,即固定等分佈局,這樣就實現了。htm

假設html:結構以下ci

<div class="wrap">
  <div class="column">第一列,內容不定</div>
  <div class="column">第二列,內容不定</div>
  <div class="column">第三列,內容不定</div>
</div>

給父級和列設置樣式:table

.wrap{
  display:table;
  table-layout:fixed;
  border-collapse:separate;
  border-spacing:15px 0;
  width:100%;
}
.column{
  display:table-cell;
  box-shadow:  0px 10px 20px #888888; 
}

table-layout:fixed是實現等分的關鍵。單元格的寬度默認是根據單元格中的內容自動調整的,設置了這個樣式,則單元格的寬度不是根據內容自動調整,而是根據指定的寬度顯示,若單元格內容超過指定寬度,則換行顯示。這裏咱們沒有指定寬度,則默認是平分每一個單元格的寬度,這點真特麼是太好用了。class

border-spacing:15px 0;默認單元格是緊挨着的,但咱們採用table的佈局用於一行三列的顯示,固然不但願三列緊挨着,彼此有15px的間距。這個樣式就解決了緊挨着的問題,單元格左右有15px的間距,上下爲0。比較惋惜的是,這個樣式只能設置水平和垂直的間距,不能單獨設置上右下左的間距,這也是沒辦法的,由於咱們這裏是討巧,用table的佈局實現咱們想要的效果,而不是實現真正的表格。渲染

相關文章
相關標籤/搜索