我有一个div,它的指定宽度是300px,边框宽度是2px。为什么2px的边框会导致div的宽度变成304px?如果我想让它有一个边框但仍然是300px宽怎么办?
div
.test { width: 300px; height: auto; border: 2px solid black; }
<div class="test"> </div>
qkf9rpyu1#
您偶然发现的是CSS盒子模型的基础。您可以使用box-sizing属性进行操作,该属性有两个可能的值:1.内容框(默认)1.边框
box-sizing
(source: W3Schools.com)默认情况下,边框将添加到容器的宽度/高度。看看使用border-box时会发生什么:
border-box
.test { width: 300px; height: auto; border: 2px solid black; box-sizing: border-box; }
这将确保宽度保持不变,并包括框边框。
krcsximq2#
由于边界围绕着div的所有边,因此它既存在于div的左边也存在于div的右边。您必须计算边界的宽度两次。因此div的最终宽度将是300 + 2*2 = 304px。
304px
ev7lccsx3#
如果希望border位于所有4个面上,而不增加元素的宽度,则可以改用outline:
border
.test{ width:300px; height:auto; background-color:#A8F9C0; float:left; outline:2px solid black; }
<div class="test">Test</div>
您还可以使用插入box-shadow:一个二个一个一个
2jcobegt4#
正确而清晰的答案是box-sizing: border-box;将其添加到类测试中,您的问题就解决了。
box-sizing: border-box;
i2loujxw5#
2 px边框是否导致div的宽度为302 px不,它不是。当你设置一个元素的宽度时,你就是在设置一个元素的内容区域。但是,您所指的是外部宽度,即宽度+填充+边框要了解两者的区别,请查看以下框模型的工作原理https://developer.mozilla.org/en-US/docs/Web/CSS/width还有这些链接。
宽度:http://api.jquery.com/width/内部宽度:http://api.jquery.com/innerwidth/外部宽度:http://api.jquery.com/outerwidth/
干杯,快乐编码!
4urapxun6#
在CSS 2中,您必须将div Package 在另一个元素中(请注意,您不应该将内部元素的宽度设置为100%,并让它自动扩展):
var width=$("#test").width(); $("#result").html('Javascript says: The inner Width of element is '+width);
#wrapper{ width:300px; } #test{ border:2px solid #000000; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="wrapper"> <div id="test"> </div> </div> <br> <div id="result"></div>
在CSS 3中使用框大小调整:一个三个三个一个
6条答案
按热度按时间qkf9rpyu1#
您偶然发现的是CSS盒子模型的基础。
您可以使用
box-sizing
属性进行操作,该属性有两个可能的值:1.内容框(默认)
1.边框
(source: W3Schools.com)
默认情况下,边框将添加到容器的宽度/高度。
看看使用
border-box
时会发生什么:这将确保宽度保持不变,并包括框边框。
krcsximq2#
由于边界围绕着
div
的所有边,因此它既存在于div
的左边也存在于div
的右边。您必须计算边界的宽度两次。因此div
的最终宽度将是300 + 2*2 =304px
。ev7lccsx3#
如果希望
border
位于所有4个面上,而不增加元素的宽度,则可以改用outline:您还可以使用插入box-shadow:
一个二个一个一个
2jcobegt4#
正确而清晰的答案是
box-sizing: border-box;
将其添加到类测试中,您的问题就解决了。i2loujxw5#
2 px边框是否导致div的宽度为302 px
不,它不是。当你设置一个元素的宽度时,你就是在设置一个元素的内容区域。
但是,您所指的是外部宽度,即宽度+填充+边框
要了解两者的区别,请查看以下框模型的工作原理https://developer.mozilla.org/en-US/docs/Web/CSS/width
还有这些链接。
宽度:http://api.jquery.com/width/
内部宽度:http://api.jquery.com/innerwidth/
外部宽度:http://api.jquery.com/outerwidth/
干杯,快乐编码!
4urapxun6#
在CSS 2中,您必须将div Package 在另一个元素中(请注意,您不应该将内部元素的宽度设置为100%,并让它自动扩展):
在CSS 3中使用框大小调整:
一个三个三个一个