CSSでパディングプロパティが幅または高さを変更しないようにするにはどうすればよいですか?


227

DIVsでサイトを作成しています。DIVを作成するときを除いて、すべてがうまくいきます。私はこれらを次のように作成します(例):

newdiv {
    width: 200px;
    height: 60px;
    padding-left: 20px;
    text-align: left;
}

padding-leftプロパティを追加すると、幅がDIV220pxに変わり、200pxのままにしておきます。

DIVanotherdivまったく同じ名前の別の名前を作成しnewdiv、その中に配置しnewdivnewdivが、パディングがなく、anotherdivがあるとしますpadding-left: 20px。同じことを取得しnewdivます。幅は220pxになります。

この問題を解決するにはどうすればよいですか?


3
残念ですが、IEがこれをどのように処理するかが好きです...私にはもっと理にかなっています...
Nicu Surdu

回答:


390

プロパティを追加:

-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box;    /* Firefox, other Gecko */
box-sizing: border-box;         /* Opera/IE 8+ */

注:これ、バージョン8より前のInternet Explorerでは機能ません


14
これは境界線の優れたソリューションですが、パディングにどのように役立ちますか?
加藤

6
これは純粋な魔法です!-誰もが知っている、嫌いなボックスモデルを修正します!むしろスペックよりも- -すなわち、それは仕方の直感は、それが必要示唆して動作しますが、限り私はどちらか任意の仕様を破壊しない知っている:Dこの記事の明確化、それだけでなく... stackoverflow.com/questions/779434/...
technicalbloke

2
@technicalblokeあなたのリンクはこの質問に戻ります。
mhenry1384 2012年

11
おっと、コックをコピーして貼り付けます。これは私が共有するつもりだっ
technicalbloke

1
多くの人は、幅について検討する必要があります:以下の自動トリック。ブラウザー全体で機能し、コードが少ないなど
Ryan Shillington



11

divのサイズを変更せずにdiv内のテキストをインデントしたい場合は、text-indentではなくCSS を使用してくださいpadding-left

.indent {
  text-indent: 1em;
}
.border {
  border-style: solid;
}
<div class="border">
  Non indented
</div>

<br>

<div class="border indent">
  Indented
</div>


1
これは、固定幅のdivで機能することがわかった唯一のソリューションです。box-sizingは、パディングが幅に影響を与えるのを残念ながら止めませんでした。そのため、この素晴らしい小さなプロパティを指摘してくれたトンに感謝します。
ステボ


1

padding-leftプロパティを追加すると、DIVの幅が220pxに変わります

はい、それはまさに基準に準拠しています。それはそれが働くことになっている方法です。

newdivとまったく同じanotherdivという名前の別のDIVを作成し、それをnewdiv内に配置するとしますが、newdivにはパディングがなく、anotherdivにはpadding-left:20pxがあります。同じことが得られ、newdivの幅は220pxになります。

いいえ、newdivの幅は200pxのままです。


2
グッファ、それは標準がまったく機能するはずのものではありません。パディングが適用される要素の寸法に影響を与えることは絶対に想定されていません。最大の敬意をもって、「パディング」と「マージン」を混同している可能性はありますか?
da5id 2009

1
はい、パディングは間違いなく要素の寸法に影響するはずです。混乱しているのはあなただと思います...マージンが要素の寸法に影響することをどのように提案しますか?
グッファ

実は、私たちはどちらも正しいと思います。私は標準を完全に忘れてしまった効果に対処するのに慣れています。私はここで良い説明を見つけましたquirksmode.org/css/box.html
da5id

だから、私の謝罪はグファさん。しかし、実用的な目的(結局のところ、これが私たちが話していることです)のために、私のアドバイスはまだいいのですか?
da5id 2009

さて、あなたは箱モデルのバグがある限りは正しいですが、それはこの質問には当てはまりません... :)
Guffa

-1

20pxのパディングがある場合はdivの幅を160pxに変更するだけで、divの幅に40pxが追加されるため、divを通常の外観に保ち、余分な幅で歪まないようにするには、幅から40pxを引く必要があります。あなたのテキストはすべて台無しにされました。


2
これは、@ rvarcherによって与えられる答えと同じです。
8bitjunkie 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.