我已经定义了容器的宽度百分比。我想添加一个边框(宽度右侧为3px),因为容器宽度为%,而边框宽度为px,我该如何调整容器的宽度?
<div class="wrap">
<div class="left">...</div>
<div class="right">...</div>
</div>
.wrap{
width:100%;
}
.left{
width:30%;
}
.right{
width:70%;
}
我想在.left的右侧添加3px边框。例如:
.left{
width:30%;
border:3px solid #000;
}
由于我在%中定义了宽度,重新调整.left宽度的最佳方法是什么。我可以粗略地将宽度减少到29%,但我想做的确切。
答案 0 :(得分:87)
使用box-sizing: border-box
属性。它修改了框模型的行为,以将填充和边框视为元素总宽度的一部分(但不是边距)。这意味着元素的设置宽度或高度包括为填充和边框设置的尺寸。在你的情况下,这意味着元素的宽度和边框的宽度将占用可用空间的30%。
对它的支持并不完美,但是如果不是所有现代浏览器,供应商前缀将会捕获大部分内容:
.left {
width: 30%;
border: 3px solid #000;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
可以在MDN和Quirksmode上找到更多信息。
According to Quirksmode,使用上面的3个供应商前缀(-moz-
,-webkit-
和-ms-
),您可以获得对所有浏览器的支持,甚至是IE8。
答案 1 :(得分:4)
最简单的跨浏览器方式是不在外部div上设置边框,而是将其设置在.left
内的NEW div上。简单,效果很好。
答案 2 :(得分:2)
这有点棘手,但请查看这篇文章以解决它:
box-sizing
属性也可能对您有用,请查看:
答案 3 :(得分:1)
只需将px
更改为vw
border-width: 10px;
到
border-width: 10vw;
它做了多少百分比....
答案 4 :(得分:0)
在我的情况下,我最终添加了一个外部 div,其填充大小与我希望原始边距的大小相同,宽度为 100%。这允许我将内部 div 宽度设置为 100%,完全适合内边距(这将作为我之前设置的边距)