(以降、「テキストボックス」と呼びます)を に設定して<input type="text">
、親コンテナを埋めようとしています。これは、テキストボックスにパディングを与えるまで機能します。これがコンテンツの幅に追加され、入力フィールドがオーバーフローします。Firefox では、これはコンテンツを標準に準拠してレンダリングする場合にのみ発生することに注意してください。quirks モードでは、別のボックス モデルが適用されるようです。width
100%
最新のすべてのブラウザーで動作を再現するための最小限のコードを次に示します。
#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
テキストボックスに設定しても)。
編集: David のソリューションはもちろん機能します。ただし、HTML を変更したくはありません。特に、セマンティック機能のないダミー要素を追加したくありません。これは、私が絶対に避けたいディビティスの典型的なケースです。これは最後の手段のハックにすぎません。