私はこの問題を何年も抱えており、以前にも同様の質問を見たことがありますが、要素にwidth: 100%
を設定すると、パディング、マージン、境界線が増加するという事実に対処したものはありません。 幅。
これを見てください フィドル 。
一番上の白いテキストボックスは、幅が100%
に設定された標準のテキストボックスです。ご覧のとおり、マージン、パディング、境界線の設定により、親がオーバーフローします。
緑色のテキストボックスは、position: absolute
を使用してdivのようなスタイルになっています。これは、Webkitブラウザーでは夢のように機能しますが、他の場所では機能しません。
赤いdivはコントロールです-入力をそのように動作させたい。
テキスト入力を最新のすべてのブラウザの赤いdivのように動作させる、つまり親のパディング内に収めるために使用できるハック/トリックはありますか?私のFiddleを編集するか、自分で作成して回答を添えてください。ありがとうございます。
あなたはできる:
input#classic
{
width: 100%;
padding: 5px;
margin: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
オーバーフローが発生していたため、margin
を削除し、box-sizing
を設定して、要素の幅を含むボーダーとパディング。
calc
を使用してマージンを補正します。box-sizing
パディング用
input#classic
{
padding: 5px;
margin: 5px;
width: -webkit-calc(100% - 10px);
width: -moz-calc(100% - 10px);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
display:table-cell
プロパティで試してください
display:table;
display:table-cell;
それがあなたを助けるかもしれません
このリンクを確認してください