入力フィールドに追加box-sizing
します。
input{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
padding: 10px;
}
根底にある「問題」は、HTML/CSS のボックス モデルです。それぞれの MDN 記事の図でわかるように、各要素のボックスには、マージン ボックス、ボーダー ボックス、パディング ボックス、およびコンテンツ ボックスの 4 つの異なる領域があります。
width
メジャー (または) を要素に割り当てるheight
と、これらの領域の 1 つに適用されます。領域がコンテンツ ボックスなどの場合、要素のマージン、ボーダー、およびパディングの合計サイズが追加されます。したがって、ボックスの合計寸法を設定するのではなく、含まれているボックスの 1 つを設定します。
CSS プロパティbox-sizing
は、要素の寸法を計算するときに、どのボックスを使用するかをブラウザに伝えます。デフォルト値は ですcontent-box
。したがって、上記の例では、margin、border、および padding の値が追加されるため、要素が大きすぎます。ボックス モデルを に設定するとborder-box
、余白のみが寸法 (ここではゼロ) に追加され、要素が収まります。