第一個案例是讓兩個元素分別向左和向右對齊,若是是過去,我必定會用float來實現,但其實用table能夠這麼作:css
* { box-sizing: border-box; } .content { display: table; border: 1px solid #06c; padding: 15px 5px; max-width: 1000px; margin: 10px auto; min-width: 320px; width: 100%; } .box { width: 100px; height: 100px; border: 1px solid #ccc; text-align: center; display: inline-block; font-size: 40px; line-height: 100px; } .right { text-align: right; display: table-cell } .left { text-align: left; display: table-cell }
<div class="content"> <div class="left"> <div class="box">B</div> </div> <div class="right"> <div class="box">A</div> </div> </div>
第二個案例咱們先看看圖:html
遇到上面這種佈局,通常會用float來作,或者把每一個li設置成display:inline-block;來作,而且都要給他們設置一個寬度,並且最痛苦的是5個li若是你設置width:20%;他們必定會掉下來,若是li都設置成display:table-cell;就不會出現這種狀況,即便不設置寬度他們也會在一行顯示,你在加多一行他也不會掉下來,依舊會在同樣顯示。佈局
* { box-sizing: border-box; } .content { display: table; border: 1px solid #06c; padding: 15px 5px; max-width: 1000px; margin: 10px auto; min-width: 320px; width: 100%; } .content ul { display: table; width: 100%; padding: 0; border-right: 1px solid #ccc; } .content ul li { display: table-cell; border: 1px solid #ccc; text-align: center; height: 100px; border-right: none; line-height: 100px; }
<div class="content"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </div>
<div class="content"> <div class="img-box"> <img src="http://jsfiddle.net/img/logo@2x.png" alt="logo" /> </div> </div>
* { box-sizing: border-box; } .content { display: table; border: 1px solid #06c; padding: 15px 5px; max-width: 1000px; margin: 10px auto; min-width: 320px; width: 100%; } .img-box{ height: 150px; width: 100px; border:1px solid red; display: table-cell; vertical-align: middle; text-align: center; background-color:#4679bd; }
上圖中的左側的box的高度始終跟隨右側的box的高度變化而變化google
<div class="content"> <div class="img-box"> <img src="http://jsfiddle.net/img/logo@2x.png" width="70" alt="logo" /> </div> <div class="text-box"> <span>王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。</span> </div> </div>
* { box-sizing: border-box; } .content { display: table; border: 1px solid #06c; padding: 15px 5px; max-width: 1000px; margin: 10px auto; min-width: 320px; width: 100%; } .img-box{ width: 100px; border:1px solid red; display: table-cell; vertical-align: middle; text-align: center; background-color:#4679bd; } .text-box{ margin-left: 20px; border: 1px solid #ddd; padding: 10px; }
上面的案例不對右側的box設置display:table-cell,只對左側設置,因此就會出現左側跟隨右側高度變化而變化。spa
若是要實現無論兩個box哪一個高度產生變化另外一個就跟隨,只須要把右側的box也設置成display:table-cell就能夠實現了。.net
<div class="content"> <div class="left-box"> <img src="https://www.google.com.hk/images/srpr/logo11w.png" width="70" alt="logo" /> </div> <div class="right-box"> <span>王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。王尼瑪和陳尼瑪都是年輕有爲的騷年,有一天他們相遇了,而後發現都對對方一見傾心後,因此就愉快的生活在了一塊兒。。。。。</span> </div> </div>
* { box-sizing: border-box; } .content { display: table; border: 1px solid #06c; padding: 15px 5px; max-width: 1000px; margin: 10px auto; min-width: 320px; width: 100%; } .left-box { float:left; margin-right: 10px; padding-top:5px; } .right-box { display: table-cell; padding: 10px; border: 1px solid #ccc; margin-right: 10px; vertical-align: top; }
移動端佈局由於有display:box這等屬性,因此table-cell相對就排不上什麼大用場,不過在移動端你要用table-cell也不是不能夠,根據本身對屬性的理解去使用就能夠了。htm