当然,块元素上的width: 100%
会填充容器,但前提是边框,填充和边距为零。将这样的input
放入包含填充的div
中可以解决问题,但我很好奇为什么简单地input {display: block; width: auto;}
不起作用。建议?
答案 0 :(得分:2)
我同意centr0为什么width: auto
不起作用。
如果您确实希望input
为其容器的全宽,则以下方法有效。给出:
<div id="Container">
<form>
<input type="text" />
</form>
</div>
使用css执行此操作:
form {
padding: 0 0 0 14px;
}
input {
padding: 5px;
width: 100%;
margin: 0 0 0 -14px;
}
说明:显然,input
上的-14px边距会抵消添加到form
元素的填充。不那么明显的是14px
的来源。它等于input
的左/右5px填充加上input
元素边框宽度的默认值(在我测试的所有浏览器上为2px)。所以2 + 5 + 5 + 2 = 14。
要确保您是一致的跨浏览器,您需要明确将边框宽度设置为input
所需的宽度。如果你想要一个不同的填充(或更粗/更薄的边框),那么只需重做数学。 3px填充为10px而不是14px,7px填充为18px而不是14px。
对于该示例,您可以将#Container
的宽度(也可以是body
本身,只是默认为页面宽度的100%)设置为您想要的宽度,以及上面的CSS应该匹配它的宽度。
答案 1 :(得分:1)
如果我没记错的话,输入的默认大小不会超过其容器的宽度。 “width:auto;”就像将“重置”样式恢复为默认值一样。
答案 2 :(得分:0)
如果你没有使用Reset CSS Stylesheet,那么输入元素将具有浏览器设置的一些默认样式,这可能包括填充和边距。
另外,width:auto
会给浏览器默认。试试width:100%
答案 3 :(得分:-1)
重置容器的填充可以解决问题。
td {
padding: 0 1em;
}