1. 程式人生 > >高度相等的列--CSS方法

高度相等的列--CSS方法

isp chap ack 圖片 限制 技術 over left 兩個

如下圖所示效果,可以使用表格實現,本文采用在CSS中實現。

技術分享

標記如下:

<div class="wrapper">
    <div class="box">
        <h1>Andy Budd</h1>
        <p> ... </p>
        <div class="bottom"></div>
    </div>
    <div class="box">
        <h1>Richard Rutter</h1>
        <
p> ... </p> <div class="bottom"></div> </div> <div class="box"> <h1>Jeremy Keith</h1> <p> ... </p> <div class="bottom"></div> </div> </div>

在實例中,有3個div,每列一個div,每個div中包括標題、內容、空的div,這個空的div作為底角的鉤子

,將這3個div放入容器div中,使用容器div限制高度,下述代碼給框設置樣式:

.wrapper {
    width: 100%;
}
.box {
    width: 250px;
    margin-left: 20px;
    float: left;
    display: inline;
    padding: 20px;
    background: #89ac10 url(chapter08/img/top.gif) no-repeat left top;  /*圖片使得上面兩個角成為圓角*/
}

運行結果如下:產生3個高度不一致的列

技術分享

產生高度相等的三列的關鍵技術在於:給每個框設置大的底內邊距(220px),然後用數值相似的負外邊距(-200px)來消除這個高度。

.wrapper {
    float: left;
    border: solid 1px black;
    width: 100%;
}
.box {
    width: 250px;
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 20px;
    padding-bottom: 220px;
    margin-bottom: -200px;
    margin-left: 20px;
    float: left;
    display: inline;
    background: #89ac10 url(chapter08/img/top.gif) no-repeat left top;
}

通過給容器浮動、添加邊框,可以看到這樣導致每個列溢出容器元素。

技術分享
.wrapper {
    border: solid 1px black;
    width: 100%;
    overflow:hiddden;
}
.box {
    width: 250px;
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 20px;
    padding-bottom: 220px;
    margin-bottom: -200px;
    margin-left: 20px;
    float: left;
    display: inline;
    background: #89ac10 url(chapter08/img/top.gif) no-repeat left top;
}

如果把容器的overflow設置為hidden,列在最高點被剪裁,220px和-200px形成的20px的差值在每個框的底部形成可見的內邊距。

技術分享

下面把列的底邊定位在正確的位置,需要它們與容器的底部對齊:為此,把容器的position設置為relative,然後將空div的position設置為absolute,再將它們的bottom設置為0,只要給它們設置正確的寬高,就能應用底部背景圖像。

.wrapper {
    border: solid 1px black;
    width: 100%;
    overflow:hiddden;
    position: relative;
}
.box {
    width: 250px;
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 20px;
    padding-bottom: 220px;
    margin-bottom: -200px;
    margin-left: 20px;
    float: left;
    display: inline;
    background: #89ac10 url(chapter08/img/top.gif) no-repeat left top;
}
.bottom {
    position: absolute;
    bottom: 0;
    height: 20px;
    width: 290px;
    background: #89ac10 url(chapter08/img/bottom.gif) no-repeat left bottom;
    margin-left: -20px;/*因為在.box中設置了margin-left為20px,則.bottom向右移動了20px(如最後一圖),所以設置-20px讓它左移*/
}
技術分享 技術分享

高度相等的列--CSS方法