高度相等的列

如下图所示效果,可以使用表格实现,本文采用在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让它左移*/
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,703评论 1 92
  • 本课来自http://www.imooc.com/learn/9请不要用作商业用途。 HTML5 HTML介绍 H...
    PYLON阅读 8,636评论 0 5
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 10,160评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 8,952评论 0 6
  • 来到你面前 你的眼角绽放着仅有一瓣的桃花 还留有淡淡的忧愁 不知是否可以为你拭去 但你终是无主的那一簇
    倚水之滨阅读 1,526评论 0 2

友情链接更多精彩内容