我试图让一个<input type="text">
(以下称为“文本框”)通过将其设置为width
来填充父容器100%
。这一直有效,直到我给文本框一个填充。然后将其添加到内容宽度并且输入字段溢出。请注意,在 Firefox 中,这仅在将内容呈现为符合标准时才会发生。在 quirks 模式下,另一个盒子模型似乎适用。
这是在所有现代浏览器中重现该行为的最小代码。
#x {
background: salmon;
padding: 1em;
}
#y, input {
background: red;
padding: 0 20px;
width: 100%;
}
<div id="x">
<div id="y">x</div>
<input type="text"/>
</div>
我的问题:如何让文本框适合容器?
注意:对于<div id="y">
,这很简单:只需设置width: auto
。但是,如果我尝试对文本框执行此操作,效果会有所不同,并且文本框将其默认行数作为宽度(即使我display: block
为文本框设置了)。
编辑:大卫的解决方案当然会奏效。但是,我不想修改 HTML——我尤其不想添加没有语义功能的虚拟元素。这是我想不惜一切代价避免的典型的葡萄膜炎。这只能是最后的手段。