私はhtml入力を持っています。
入力にpadding: 5px 10px;
は、親 div の幅 (流動的) の 100% が必要です。
ただし、を使用するwidth: 100%;
と、入力が次のようになり100% + 20px
ます。これを回避するにはどうすればよいですか?
私はhtml入力を持っています。
入力にpadding: 5px 10px;
は、親 div の幅 (流動的) の 100% が必要です。
ただし、を使用するwidth: 100%;
と、入力が次のようになり100% + 20px
ます。これを回避するにはどうすればよいですか?
box-sizing: border-box
それを修正するための迅速で簡単な方法です:
これは、最新のすべてのブラウザと IE8+ で動作します。
ここにデモがあります:http://jsfiddle.net/thirtydot/QkmSk/301/
.content {
width: 100%;
box-sizing: border-box;
}
最新のブラウザーでは、ブラウザーのプレフィックス付きのバージョン (-webkit-box-sizing
など) は必要ありません。
これがbox-sizing
、CSS を使用する理由です。
あなたの例を編集したところ、Safari、Chrome、Firefox、Opera で動作するようになりました。それをチェックしてください:http://jsfiddle.net/mathias/Bupr3/ 私が追加したのはこれだけです:
input {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
残念ながら、IE7 などの古いブラウザはこれをサポートしていません。古い IE で動作するソリューションを探している場合は、他の回答を確認してください。
のような明確なソリューションを使用せずに実行できbox-sizing
ます。width~=99%
padding
とborder
margin
= border-width
+horizontal padding
padding
と等しい水平方向の入力のラッパーに追加しますmargin
HTML マークアップ:
<div class="input_wrap">
<input type="text" />
</div>
CSS:
div {
padding: 6px 10px; /* equal to negative input's margin for mimic normal `div` box-sizing */
}
input {
width: 100%; /* force to expand to container's width */
padding: 5px 10px;
border: none;
margin: 0 -10px; /* negative margin = border-width + horizontal padding */
}
css calc() を使用する
超シンプルで素晴らしい。
input {
width: -moz-calc(100% - 15px);
width: -webkit-calc(100% - 15px);
width: calc(100% - 15px);
}
ここに見られるように: Div 幅 100% から固定量のピクセルを差し引いたもの
webvitaly による ( https://stackoverflow.com/users/713523/webvitaly )
元のソース: http://web-profile.com.ua/css/dev/css -width-100prc-minus-100px/
他のスレッドでほとんど見逃していたので、これをここにコピーしました。
私が15pxのパディングを持つコンテナにいると仮定すると、これは私が常に内側の部分に使用するものです:
width:auto;
right:15px;
left:15px;
これにより、内側の部分が、両側の 15px よりも小さい幅に引き伸ばされます。
codeontrack.comからの推奨事項を次に示します。これには、優れたソリューションの例があります。
div の幅を 100% に設定する代わりに auto に設定し、
<div>
が display: block ( のデフォルト<div>
) に設定されていることを確認してください。
入力ボックスのパディングをラッパー要素に移動します。
<style>
div.outer{ background: red; padding: 10px; }
div.inner { border: 1px solid #888; padding: 5px 10px; background: white; }
input { width: 100%; border: none }
</style>
<div class="outer">
<div class="inner">
<input/>
</div>
</div>
ここの例を参照してください:http://jsfiddle.net/L7wYD/1/
width:auto; の違いを理解してください。および幅:100%; 幅:自動; (AUTO)MATICALLY は、パディングを含むラッピング div の正確な指定に合わせて幅を計算します。幅 100% は幅を広げ、パディングを追加します。
これを試して:
width: 100%;
box-sizing: border-box;
容器に包んではどうでしょう。コンテナは次のようなスタイルにする必要があります。
{
width:100%;
border: 10px solid transparent;
}
あなたはこれを行うことができます:
width: auto;
padding: 20px;