CSSには幅にパディングが含まれますか?


146

IEでは、幅にパディングサイズが含まれているようです。FFでは幅は変わりません。両方を同じように動作させるにはどうすればよいですか?

ありがとう。


おそらく、標準準拠モードをアクティブにする必要があります。ただし、コードを確認しないと、それ以上のガイダンスは提供できません。
ジェフハバード

回答:


307
  • IEは、より便利で標準ではない「境界ボックス」ボックスモデルを使用していました。このモデルでは、要素の幅にはパディングとボーダーが含まれます。たとえば、次の
    #foo { width: 10em; padding: 2em; border: 1em; }
    ようになります10em

  • 対照的に、すべての標準を恐れるブラウザは、デフォルトで「コンテンツボックス」ボックスモデルになります。このモデルでは、要素の幅にはパディングやボーダーは含まれませ。たとえば、
    #foo { width: 10em; padding: 2em; border: 1em; }
    実際には16em幅が広くなります。10em+ 2em両側にパディング、+ 1em各エッジにボーダー。

有効なマークアップ適切なdoctype、および適切なヘッダーを備えた最新バージョンのIEを使用する場合は、標準に準拠します。それ以外の場合は、次のようにして、最新の標準に準拠したブラウザに「ボーダーボックス」を使用するように強制できます。

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

最初の宣言はOperaに必要で、2番目はFirefox用、3番目はWebkitとChrome用です。

これは、ブラウザがサポートするボックスサイズ宣言をテストするために何年も前に行った簡単なテストです。http//phrogz.net/CSS/boxsizing.html

Webkit(SafariおよびChrome)はpadding-box、宣言によるボックスモデルをサポートしていないことに注意してください。


2
コンテンツボックスモデルとボーダーボックスモデルの両方について言及する場合は+1。ただし、違いについて詳しく説明したい場合があります。
BoltClock

1
@BoltClockより厳密に回答するための推進力をありがとう。更新しました。
Phrogz、2011年

素敵な答え; 数日間、さまざまなオプションの名前を覚える(または見つける)ようにしてきました... +1 =)
デビッドはモニカ

誰もオペラを気にしません。
マイケルJ.カルキンス2015年

3
@whitelettersinblankpapers W3Schoolsがなぜ劣っているのか、次にW3C標準に導くはるかに優れたリファレンス参照してください。W3Schoolsへのリンクをこれ以上フォローしないでください。さらに、将来のWeb標準に関する検索エンジンのクエリに「MDN」を追加します。
Phrogz

27

単純なルールは、同じ要素にpadding / marginおよびwidthプロパティを使用しないようにすることです。つまり、これに似たものを使用します

<div class="width-div">
     <div class="padding-div">
     ...........
     ...........
     </div>
 </div>

私はこの方法を定期的に使用しており、ブラウザ間で問題が発生することはありません。
Kevin Beal

20

私はこの質問にぶつかりました。2年前の質問ですが、誰かがこのスレッドにぶつかった場合に備えて、これを追加することを考えました。

CSS3には、box-sizingプロパティがあります。設定したら、

.bigbox {
    box-sizing: border-box; 
    width: 1000px; 
    border: 5px solid #333;
    padding: 10px;
}

クラスの幅は1030pxではなく1000pxになります。もちろん、これは他の方法では解決できない問題を解決するため、液体divでピクセルサイズの境界線を使用するすべての人にとって非常に便利です。

さらに良いことに、ボックスサイズはIE7以下を除くすべての主要ブラウザでサポートされています。幅または高さの次元内すべてのアイテムを含めるには、box-sizingをborder-boxに設定します。集約デフォルトで幅および/または高さ、に他の項目には、「コンテンツ・ボックス」のボックス・サイズを設定することができます。

ブラウザの構文の現在の状態はわかりませんが、-mozおよび-webkitプレフィックスを含めています。

.bigbox{
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

はい、そしてポールアイリッシュは、これに関する素晴らしいブログ記事をここに持っています:paulirish.com/2012/box-sizing-border-box-ftw
デイブバートン

この回答は、3年前に書かれた承認済みの回答と同じ回答である場合、どのように多くの賛成票を持っていますか?
dippas

1

doctypeが宣言されていますか?私がhtmlをコーディングし始めたとき、私はこの問題を抱えていました。それは、doctypeが宣言されていないことが原因でした。私のお気に入りは:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
...
</html>

1

それでも問題が解決しない人のために、jQueryは2つのプロパティouterWidth ()を提供し、ボーダーの有無にかかわらずオブジェクトinnerWitdh ()を知っています...

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