CSS中box-sizing的使用

在进行网页布局的过程中经常会遇到一个问题,即一个DIV包裹着另一个DIV,里面的DIV宽度设为100%以后,再为它设置padding,里面的DIV会跑出来。如下图:


外层DIV为wrap,内层DIV为content,CSS代码:

<pre name="code" class="css">#wrap {width: 500px;height: 300px; background-color: #333;}
#content{width: 100%; padding: 0 50px;background-color: #999;word-break:break-all}
 可以看到内层DIV溢出了。 

此时我们当然可以对外层DIV设置overflow:hidden,但是内层的padding就无法达到其应有的效果了,如下图:

此处CSS代码除了加了一句overflow:hidden以外没有变化,就不打出来了。可以看到此时内层DIV的右内边距是不起作用的,因为它被隐藏住了。

通过查阅资料发现了还有box-sizing这个属性。它有三个值,从W3C上找到它们的描述:

content-box:这是由 CSS2.1 规定的宽度高度行为。宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。border-box: 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。inherit 规定应从父元素继承 box-sizing 属性的值。

所以说我们之前内部DIV溢出的情况,也就是应为它是在宽度和高度之外绘制元素的内边距和边框。我们将box-sizing设为border-box之后它就变成了下图的样子:

可见此时我们的内边距都起作用了。

附上代码:

#wrap {width: 500px;height: 300px; background-color: #333;}
#content{width: 100%; padding: 0 50px;background-color: #999;box-sizing: border-box; word-break:break-all}

这样我们终于就得到想要的效果了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值