布局神器display:table-cell


元素兩端對齊

    第一個案例是讓兩個元素分別向左和向右對齊,如果是過去,我一定會用float來實現,但其實用table可以這么做:

    

* {
    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>

  

自動平均划分每個小模塊,使其一行顯示

第二個案例我們先看看圖:

        遇到上面這種布局,一般會用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的高度始終跟隨右側的box的高度變化而變化

<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,只對左側設置,所以就會出現左側跟隨右側高度變化而變化。

如果要實現不管兩個box哪個高度產生變化另一個就跟隨,只需要把右側的box也設置成display:table-cell就可以實現了。

 

彈性、響應式布局

<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也不是不可以,根據自己對屬性的理解去使用就可以了。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM