所以当我像这个例子那样设置输入文本框时,因为默认情况下它有边框和填充,所以宽度将超过200px.
<div style="width:200px; background-color:red;">
<input type="text" name="fname" style="width:100%;"/>
</div>
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过将类设置为输入标记并使用此CSS标记它来强制文本框适合200px
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法让这个文本框正确的大小,即填写100%,因为我想要它做?我不能使用固定尺寸.我正在使用CSS主题,因此在编译时不知道文本框填充,边距等.它们可以由用户即时更改.因此,无论文本框的填充,边框和边距是什么,解决方案都必须正常工作.
mrt*_*man 25
我想你已经回答了自己的问题.box-sizing: border-box;
实际上是唯一一种让元素适合其父元素的CSS方法.css-tricks在这里详细介绍了这一点.
http://css-tricks.com/box-sizing/
我不知道除了使用javascript执行某些计算然后修改输入元素之外你可以使用的任何其他CSS.
您可以在不使用box-sizing
诸如之类的不明确解决方案的情况下完成此操作width~=99%
。
jsFiddle 上的演示:
HTML 标记:
<div class="input_wrap">
<input type="text" />
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div {
padding: 6px 17px; /* equal to negative input's margin for mimic normal `div` box-sizing */
}
input {
width: 100%; /* force to expand to container's width */
border: 7px solid #DFDFDF;
padding: 0 10px;
margin: 0 -17px; /* negative margin = border-width + horizontal padding */
}
Run Code Online (Sandbox Code Playgroud)