宽度:100% – 填充?

我有一个htmlinput。

input有padding: 5px 10px; 我希望它是父div的宽度的100%(这是stream体)。

但是使用width: 100%; 导致input是100% + 20px我怎么能解决这个问题?

在这里阅读其他答案,或阅读这个答案: 宽度设置为100%时,div的内容是否比div更长?

box-sizing: border-box是一个快速,简单的方法来解决它:

这将适用于所有现代浏览器和IE8 +。

这是一个演示: http : //jsfiddle.net/thirtydot/QkmSk/301/

 .content { width: 100%; box-sizing: border-box; } 

如果你需要这个工作在IE7中,你可以阅读这个答案的旧版本 。

这就是为什么我们在CSS中有box-sizing

我编辑了您的示例,现在可以在Safari,Chrome,Firefox和Opera中使用。 检查出来: http : //jsfiddle.net/mathias/Bupr3/所有我添加的是这样的:

 input { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } 

不幸的是,像IE7这样的老式浏览器不支持这一点。 如果您正在寻找一种适用于旧式IE的解决scheme,请查看其他答案。

使用百分比填充,并从宽度中删除:

填充:5%;
宽度:90%;

你可以做到这一点,而不使用box-sizing不清晰的解决scheme,如width~=99%

演示jsFiddle
在这里输入图像说明

  • 保持input的paddingborder
  • 添加到input负水平margin = border-width + horizontal padding
  • 添加到input的包装水平padding等于上一步的margin

HTML标记:

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

CSS:

 div { padding: 6px 10px; /* equal to negative input's margin for mimic normal `div` box-sizing */ } input { width: 100%; /* force to expand to container's width */ padding: 5px 10px; border: none; margin: 0 -10px; /* negative margin = border-width + horizontal padding */ } 

使用css calc()

超级简单和真棒。

 input { width: -moz-calc(100% - 15px); width: -webkit-calc(100% - 15px); width: calc(100% - 15px); }​ 

如此处所示: Div宽度减去固定数量的像素
通过webvitaly( https://stackoverflow.com/users/713523/webvitaly
原始来源: http : //web-profile.com.ua/css/dev/css-width-100prc-minus-100px/

刚刚在这里复制这个,因为我几乎错过了在另一个线程。

假设我在一个15px的填充容器,这是我总是使用的内部部分:

 width:auto; right:15px; left:15px; 

这将拉伸内部的任何宽度应该less于15px任何一方。

干杯

安迪

你可以尝试一些定位技巧。 你可以把input放在一个div的position: relative和一个固定的高度,然后在input上有position: absolute; left: 0; right: 0; position: absolute; left: 0; right: 0; ,以及任何你喜欢的填充。

现场示例

这是来自codeontrack.com的推荐,它有很好的解决scheme例子:

将div的宽度设置为100%,将其设置为auto,并确保将<div>设置为display:block(默认为<div> )。

将input框的填充移动到包装元素。

 <style> div.outer{ background: red; padding: 10px; } div.inner { border: 1px solid #888; padding: 5px 10px; background: white; } input { width: 100%; border: none } </style> <div class="outer"> <div class="inner"> <input/> </div> </div> 

请看这里的例子: http : //jsfiddle.net/L7wYD/1/

只要了解宽度的差异:auto; 和宽度:100%; 宽度:自动; 将(自动)马上计算宽度,以适应包装的div包括填充确切的给定。 宽度100%展开宽度并添加填充。

把它裹在容器里怎么样? 容器应具有如下风格:

 { width:100%; border: 10px solid transparent; } 

尝试这个:

 width: 100%; box-sizing: border-box; 

我遇到过同样的问题。 像这样修复它:

 width: 100%; padding: 5px; /*--------------Now remove from padding what you've added---------------*/ margin:-5px; 

干杯

你可以这样做:

 width: auto; padding: 20px;