【发布时间】:2012-06-13 11:42:49
【问题描述】:
从this example 可以看出,input 似乎“溢出”了它的父级div。我想在input 中添加填充而不使其溢出其父级。
我想知道每个浏览器(包括 IE、Firefox、Chrome 等)的最佳解决方案/解决方法。
【问题讨论】:
-
查看上一个问题的答案:width: 100%-padding?
从this example 可以看出,input 似乎“溢出”了它的父级div。我想在input 中添加填充而不使其溢出其父级。
我想知道每个浏览器(包括 IE、Firefox、Chrome 等)的最佳解决方案/解决方法。
【问题讨论】:
不要将内部 div 的宽度指定为100%。一个 div 将自动适应其父容器的宽度。 Demo
【讨论】:
/2/ 以恢复我认为的原始代码。但事实并非如此。我的错。
看起来输入在 div 内,但位于左上角。因为输入占据了 div 的 100% 的宽度,所以它掩盖了 div 的红色背景。 div 较长,因此它伸出底部,使输入看起来像是在顶部。执行以下操作:
【讨论】:
填充会增加对象的宽度。一种选择是从输入中删除左/右填充并仅使用文本缩进,尽管这会删除右填充。
.inside{
background: blue;
border: none;
padding-bottom: 10px;
padding-top: 10px;
text-indent: 10px;
width: 100%;
}
或者,您可以使用百分比,并从宽度中减去该值,而不是使用硬编码的像素宽度作为填充:
.inside{
padding: 3%;
width: 94%;
}
【讨论】:
你可以看到this answer,但是如果你不喜欢它,你可以使用box-sizing这样的CSS3属性:
input {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
【讨论】: