如果容器宽度为500px,标签宽度为30%,输入框宽度为70%,那么一切都应该适合,但问题是输入框左右边框为4px,并且向左和向右填充2px,使其比它宽6px。
我们可以通过使宽度不是70%,但是68%或者其他东西来破解它,但这有些骇人听闻。有办法处理吗? (我们不能进行CSS重置,因为输入框通常需要一个边框,假设我们不使用轮廓来破解它,它不会占用任何空间。)
CSS:
#my-container { width: 500px }
#first-name-label { display: inline-block; width: 30% }
#first-name { display: inline-block; width: 70% }
以下是一些例子:
答案 0 :(得分:1)
这样的事情怎么样: http://jsfiddle.net/hNaM7/21/
#my-container { width: 500px }
#first-name-label { display: inline-block; width: 30% }
#first-name { display: inline-block; width: 70%; margin: 0 -3px;}
答案 1 :(得分:1)
http://www.paulirish.com/2012/box-sizing-border-box-ftw/
*,:before,:after {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
#my-container {
width:500px;
}
#first-name-label {
display:inline-block;
width:30%;
}
#first-name {
display:inline-block;
width:70%;
}
答案 2 :(得分:1)
宽度不准确的原因是因为它们设置为box-sizing:content-box;
,这是box-sizing
的默认设置。在CSS中计算width
和height
时,会在border
和padding
的外部计算width
和height
,并添加额外的空间,即使它设置为width:100%;
。为了抵消这种情况,您只需将带边框的元素设置为box-sizing:border-box;
即可。这会在宽度和高度计算中带来边框和填充。
试试这个:
#my-container { width: 500px; }
#first-name-label { display: inline-block; width: 30%; }
#first-name {
display:inline-block;
width: 70%;
-webkit-box-sizing: border-box; /* Safari, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
}
或者如果您想更具体地说明文字输入,请尝试以下操作:
input[type=text] {
-webkit-box-sizing: border-box; /* Safari, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
}
CSS语法:
box-sizing: content-box|border-box|initial|inherit;
浏览器支持:
Chrome (any): box-sizing
Opera 8.5+: box-sizing
Firefox (any): -moz-box-sizing
Safari 3: -webkit-box-sizing (unprefixed in 5.1+ versions)
IE8+: box-sizing
如果您想了解更多相关信息,可以在此处找到有关盒子大小的内容丰富的文章:
答案 3 :(得分:0)
你试过吗
border-style: hidden
它应该有助于缓解表格元素中的边界冲突,这是你遇到的同样问题。