幅/高さに影響を与えずにDIVパディングを変更するにはどうすればよいですか?


93

固定幅と高さを指定したいdivと、元のDIVの幅/高さを減らしたり増やしたりせずに変更できるパディングがあります。そのためのCSSトリックはありますか、またはパディングを使用する代替はありますか?

回答:


72

解決策は、固定された外側のdivを使用して、パディングされたdivをラップすることです

HTML

<div class="outer">
    <div class="inner">

        <!-- your content -->

    </div><!-- end .inner -->
</div><!-- end .outer -->

CSS

.outer, .inner {
    display: block;
}

.outer {
    /* specify fixed width */
    width: 300px;
    padding: 0;
}

.inner {
    /* specify padding, can be changed while remaining fixed width of .outer */
    padding: 5px;
}

明確にしたくないのですが、よくわかりませんが、これは水平方向のパディングでのみ機能しますか?高さとして:自動は幅のように親を埋めません:自動。
Jonathan Azulay 2013年

196

これをCSSで宣言してください。

* { 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
     box-sizing: border-box; 
}

このソリューションは、追加のラッパーを使用せずに実装できます。

これにより、ブラウザーはdivの「外側」の幅に従って幅を計算します。つまり、幅からパディングが差し引かれます。


それは.....私は初心者だけでこのプロパティを検索していますし、それは偉大な人物の作品の魅力のように動作します
ニダ

1
それを使用するときに注意すべき副作用はありますか?
ラディジュン

15
この解決策は受け入れられた解決策よりも優れており、プレフィックスをもう使用しない方が安全です。shouldiprefix.com

@adswebwork私の時間を大幅に節約してくれました。ありがとうございました。
Hardik Chaudhary、2018

17

IE6ボックスモデルをシミュレートしているように見えます。CSS 3プロパティのbox-sizing:border-boxを使用してこれを実現できます。これはIE8でサポートされていますが、Firefoxの場合は使用する必要が-moz-box-sizingあり、Safari / Chromeの場合はを使用します-webkit-box-sizing

IE6は既に高さを間違って計算しているので、そのブラウザーでは問題ありませんが、IE7についてはわかりません。Quirksモードでも同じように高さが計算されると思います。


css3はiPadのようにまだ非常に新しいです:)
Ryan

9

このトリックを試してください

div{
 -webkit-box-sizing: border-box; 
 -moz-box-sizing: border-box;    
 box-sizing: border-box;      
}

これにより、ブラウザーはdivの「外側」の幅に応じて幅を計算します。つまり、幅からパディングが差し引かれます。


5
これは@adswebworkの答えと同じですよね?私はそれがどのように機能するかの説明に感謝しますが、それはおそらくコメントとしてより良いでしょう
craq

1
同じ答えを投稿する理由
Andrew

4

ブラウザー間で一貫した結果を得るには、通常、div内にもう1つ追加しdivて、明示的な幅を指定せず、を指定しmarginます。marginシミュレートしますpadding外側のdivのために。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.