CSS包含100%宽度的输入文本

时间:2012-01-21 08:02:42

标签: html css

所以当我像这个例子那样设置输入文本框时,因为默认情况下它有一个边框和填充,将比200px宽。

<div style="width:200px; background-color:red;">
    <input type="text" name="fname" style="width:100%;"/>
</div>

我知道我可以通过将类设置为输入标记并使用此CSS标记它来强制文本框适合200px

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;    
box-sizing: border-box;

有没有更好的方法让这个文本框正确调整大小,即按我希望的方式填充100%?我不能使用固定尺寸。我正在使用CSS主题,因此在编译时不知道文本框填充,边距等。它们可以由用户即时更改。因此,无论文本框的填充,边框和边距是什么,解决方案都必须正常工作。

4 个答案:

答案 0 :(得分:23)

我想你已经回答了自己的问题。 box-sizing: border-box;实际上是唯一能让元素适合其父元素的CSS方法。 css-tricks在这里详细介绍了这一点。

http://css-tricks.com/box-sizing/

我不知道除了使用javascript执行某些计算然后修改输入元素之外你可以使用的任何其他CSS。

答案 1 :(得分:3)

<div style="width:200px; background-color:red;">
    <input type="text" name="fname" style="width:100%;border:1px;padding:4px;margin:-5px"/>
</div>

答案 2 :(得分:3)

是。可以>。

您可以不使用box-sizing不清晰的解决方案(例如width~=99%)来执行此操作。 Demo on jsFiddle
enter image description here

HTML标记:

<div class="input_wrap">
    <input type="text" />
</div>

<强> 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 */ 
}   

答案 3 :(得分:2)

<div style="width:200px; height:22px; background-color:red;">
    <input type="text" name="fname" style="width:97%;margin-left:1%;"/>
</div>

但严重的是,这里是jsfiddle