实现4列等分布局,每列之间有间距

昨天被问到一个面试题:怎么实现四列等分布局,每列之间有间距,但是第一列和最后一列与窗口之间没有间距?
当时想的是直接获取宽度减去各个margin值然后除以4,最后去掉两端的间距就好了。但是面试官说要用到box-sizing实现。。。回来后就试了一下。
body结构:

<div class="parent">
        <p class="one">第一列</p>
        <p class="two">第二列</p>
        <p class="three">第三列</p>
        <p class="four">第四列</p>
</div>

分析:
如果直接给p设置width为25%,然后设置间距,这样会使一排排不下,最后一个p会被挤到换行,所以要设置p的box-sizing为border-box,使width的值以IE盒子模型的标准解析,即width=border+padding-left+padding-right+content,然后通过设置内边距来产生间距,最后通过设置parent的左右margin为负值来抵消两侧的间距。

实现:

<style type="text/css">
    *{
        margin: 0px;
        padding: 0px;
    }
    .parent{
        margin: 0 -10px; /*去掉第一个和最后一个div与窗口之间的间距*/
    }
    p{
        box-sizing: border-box; /*以IE盒子模型的width为标准*/
        padding: 0px 10px; /*设置div的内边距*/
        width: 25%; /*div等分成4部分*/
        height: 100px;
        float: left;
        background-clip: content-box; /*背景色用于内容*/
    }
    .one{
        background-color: red;
    }
    .two{
        background-color: blue;
    }
    .three{
        background-color: green;
    }
    .four{
        background-color: yellow;
    }
</style>

结果:

这里写图片描述

在网上还搜到其他的实现方法,这里给出链接:
http://www.cnblogs.com/xiaohuochai/p/5456695.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值