背景と背景色の違いは何ですか


273

を使用して背景色を指定することの違いは何ですか backgroundとはbackground-color

スニペット#1

body { background-color: blue; }

スニペット#2

body { background: blue; }

回答:


257

これらは2つの異なるプロパティであることを前提としています。具体的な例でbackgroundは、実際には省略形であるため、結果に違いはありません。

background-color
background-image
background-position
background-repeat
background-attachment
background-clip
background-origin
background-size

したがって、のほかにbackground-colorbackgroundショートカットを使用して、他のbackground-*プロパティを2回以上繰り返すことなく、1つ以上の値を追加することもできます 。

どちらを選択するかは基本的にあなた次第ですが、スタイル宣言の特定の条件にも依存する可能性があります(たとえば、親要素からbackground-color他の関連するbackground-*プロパティを継承するときのみをオーバーライドする必要がある場合、またはすべての値を削除する必要がある場合)を除くbackground-color)。


それではbackground、5つの属性のいずれかへのショートカットにすぎませんか?したがって、背景の位置、色、画像がある場合、実際の生活では実用的ではありませんか?
スタニゲーター2012

16
これらの属性すべて1行で指定できるため、非常に実用的です。公式ドキュメントを
クリスチャン

3
違いがあります。背景色を使用すると、子要素間に透明なギャップがあるdivがあります。しかし、背景だけを使用すると、完全に安定します。プロパティまたは動作のいずれかに検証可能な違いがあります。
user1873073 2013年

2
Fwiw、@ ChristianVargaのリンクから:'background'プロパティは、個々の背景プロパティ(つまり、 'background-color'、 'background-image'、 'background-repeat'、 'background-attachment'および ' background-position ')をスタイルシートの同じ場所に配置します。有効な宣言が与えられた場合、「background」プロパティは最初にすべての個別の背景プロパティを初期値に設定し、次に宣言で指定された明示的な値を割り当てます。例:P { background: url("chess.png") gray 50% repeat fixed }
ruffin


157

background以前のbackground-colorbackground-imageなどのすべての仕様に優先します。基本的には省略形ですが、リセットもあります。

私は時々それを使ってbackground、テンプレートのカスタマイズで以前の仕様を上書きします。

background: white url(images/image1.jpg) top left repeat;

次のようになります:

background: black;

だから、すべてのパラメータは、( 、background-imagebackground-position)、background-repeatデフォルト値にリセットされます。


12
これはより完全な答えです。リセット部分は非常に重要な違いです。
ドラケン、

1
developer.mozilla.org/en-US/docs/Web/CSS/background- >すべてのcss省略プロパティと同様に、省略されたサブ値はすべて初期値に設定されます> background-image:none background-position:0% 0%background-size:auto auto background-repeat:repeat background-origin:padding-box background-clip:border-box background-attachment:scroll background-color:transparent
MarcoZen

85

CSSのパフォーマンス

backgroundvs background-color

18色見本の比較で一回、小さな長方形としてページ100回レンダリングバックグラウンドで1回地色

背景vs背景色

これらの数値は単一のページのリロードによるものですが、その後の更新ではレンダリング時間が変更されましたが、パーセントの違いは基本的に毎回同じでした。

これは、Safari 7.0.1でbackground-colorの代わりにbackgroundを使用した場合、約42.6msの節約であり、ほぼ2倍の速さです。Chrome 33もほぼ同じようです。

これは正直に私を驚かせました。なぜなら、最も長い間、2つの理由があります。

  • 私は通常、CSSプロパティの明示性を常に主張します。これは、特に背景の場合、将来の具体性に悪影響を与える可能性があるためです。
  • ブラウザーが見るbackground: #000;と本当に見えると思いましたbackground: #000 none no-repeat top center;。ここにはリソースへのリンクはありませんが、どこかで読んだことを覚えています。

参照: https : //github.com/mdo/css-perf#background-vs-background-color


13
私はこれのためにここに来ました- 結果に本当に本当に本当に驚いています。この回答をありがとう。
Mave

また、パフォーマンスが優れているため、すべてのCSS省略表現の方が優先されると言えますか?
Levent Divilioglu 2016年

5
@LeventDiviliogluテスターが言ったように:These kind of tests are cheats and always going to be somewhat inaccurate from the real world github.com/mdo/css-perf#updated-conclusions-from-averages
l2aelba

24

次のようなbackgroundすべてのbackgroundプロパティを設定できます。

  • background-color
  • background-image
  • background-repeat
  • background-position

ではbackground-colorあなただけの背景の色を指定することができます

background: url(example.jpg) no-repeat center center #fff;

対。

background-image: url(example.jpg);
background-position: center center;
background-repeat: no-repeat;
background-color: #fff;

より詳しい情報

(キャプション:背景-省略形プロパティを参照)


7

違いの1つ:

このように画像を背景として使用する場合:

background: url('Image Path') no-repeat;

その後、「background-color」プロパティで上書きすることはできません。

ただし、背景を使用して色を適用する場合は、background-colorと同じで、オーバーライドできます。

例:http : //jsfiddle.net/Z57Za/11/およびhttp://jsfiddle.net/Z57Za/12/


3

どちらも同じです。そこ複数の背景セレクタ(つまりはbackground-colorbackground-imagebackground-position)、あなたはシンプルなのいずれかを介してそれらにアクセスすることができbackgroundセレクタまたは複数の特定の1。例えば:

background: blue url(/myImage.jpg) no-repeat;

または

background-color: blue;
background-image: url(/myImage.jpg);
background-repeat: no-repeat;

3

違いは、background省略表現プロパティがいくつかの背景関連プロパティを設定することです。たとえば、色の値のみを指定した場合でも、他のプロパティは初期値、たとえばbackground-imageに設定されるため、すべてが設定されますnone

これは、これらのプロパティの他の設定を常にオーバーライドすることを意味するものではありません。これは、通常は誤解されている通常のルールによるカスケードに依存します。

実際には、省略形の方が安全な傾向があります。これは、別のスタイルシートから背景画像などの予期しない背景プロパティを誤って取得しないようにするための予防策です(完全ではありませんが、便利です)。その上、それはより短いです。ただし、これは「すべての背景プロパティを設定する」ことを意味することを覚えておく必要があります。


2

違いはありません。どちらも同じように機能します。

CSS背景プロパティは、要素の背景効果を定義するために使用されます。

背景効果に使用されるCSSプロパティ:

  • 背景色
  • 背景画像
  • バックグラウンドリピート
  • 背景添付ファイル
  • 背景の位置

バックグラウンドプロパティには、このすべてのプロパティが含まれており、1行で記述することができます。


1

これが最良の答えです。ショートハンド(バックグラウンド)はリセットとDRY(ロングハンドと組み合わせる)のためのものです。


1

ページ上で小さな四角形として100回レンダリングされた18の色見本の比較。1回は背景で、もう1回は背景色で。

CSSパフォーマンス実験を再現しましたが、結果は今日とは大きく異なります。

background

Chrome 54:443(µs / div)

Firefox 49:162(µs / div)

エッジ 10:56(µs / div)

background-color

Chrome 54:449(µs / div)

Firefox 49:171(µs / div)

エッジ 10:58(µs / div)

ご覧のとおり、違いはほとんどありません。


1

backgroundbackground-color以下のようないくつかの背景関連のショートカットです。

background-color
background-image
background-repeat
background-attachment
background-position 

W3Cから以下のステートメントを読んでください。

背景-省略プロパティ

コードを短くするために、単一のプロパティですべての背景プロパティを指定することもできます。これは、省略プロパティと呼ばれます。

backgroundの略記プロパティはbackgroundです。

body {
  background: white url("img_tree.png") no-repeat right top;
}

省略プロパティを使用する場合、プロパティ値の順序は次のとおりです。

background-color
background-image
background-repeat
background-attachment
background-position

他の値がこの順序である限り、プロパティ値の1つが欠落しているかどうかは関係ありません。


1

background-colorでグラデーションを設定できないことがわかりました。

これは機能します:

background:linear-gradient(to right, rgba(255,0,0,0), rgba(255,255,255,1));

これはしません:

background-color:linear-gradient(to right, rgba(255,0,0,0), rgba(255,255,255,1));

1

background 以下の略記プロパティです。

 - background-color
 - background-image
 - background-repeat
 - background-attachment
 - background-position

あなたはここですべてのプロパティの詳細情報を見ることができます

プロパティの順序

ほとんどのブラウザー実装では(おそらく古いブラウザーで問題が発生する可能性があると思います)、次の場合を除いて、プロパティの順序は重要ではありません。

  • background-originand background-clip:このプロパティが両方とも存在する場合、最初のプロパティはを参照し-origin、2番目のプロパティはを参照し-clipます。

    例:

    background: content-box green padding-box;

    以下と同等です。

    background-origin: content-box;
    background-color: green;
    background-clip: padding-box;
  • background-size常に従うbackground-position必要があり、プロパティは/

  • background-positionが2つの数値で構成される場合、最初の数値は水平方向の値、2番目の数値は垂直方向の値です。


0

Outlook用のメールを生成するときに気づきました...

/*works*/
background: gray;

/*does not work*/
background-color: gray;

0

これで継承を試すことができることを理解したら、かなりきちんとしたことができます。ただし、最初にこのドキュメントの背景を理解しましょう

CSS3では、要素に複数の背景を適用できます。これらは、最初に提供した背景を上に置き、最後の背景を後ろにリストして、互いの上に重ねられます。最後の背景のみに背景色を含めることができます。

したがって、次の場合:

background: red;

赤はリストされている最後の値なので、彼は背景色を赤に設定しています。

人がするとき:

background: linear-gradient(to right, grey 50%, yellow 2%) red;

レッドは再び背景色であるしかし、あなたはグラデーションが表示されます。

    .box{
        border-radius: 50%;
        width: 200px;
        height: 200px;
        background: linear-gradient(to right, grey 50%, yellow 2%) red;
    }

    .box::before{
       content: "";
       display: block;
       margin-left: 50%;
       height: 50%;
       border-radius: 0 100% 100% 0 / 50%;
       transform: translateX(70px) translateY(-26px) rotate(325deg);
       background: inherit;
    }
    <div class="box">
      
     </div>

今、background-colorと同じこと:

    .box{
        border-radius: 50%;
        width: 200px;
        height: 200px;
        background: linear-gradient(to right, grey 50%, yellow 2%) red;
    }

    .box::before{
       content: "";
       display: block;
       margin-left: 50%;
       height: 50%;
       border-radius: 0 100% 100% 0 / 50%;
       transform: translateX(70px) translateY(-26px) rotate(325deg);
       background-color: inherit;
    }
    <div class="box">
      
     </div>

これが発生する理由は、これを実行しているときに、

background: linear-gradient(to right, grey 50%, yellow 2%) #red;

最後の数字は背景色を設定します。

次に、背景(グラデーションを取得)または背景色を継承する前に、赤を取得します。


-2

ドキュメントに表示されていないことに気付いたのは、 background: url("image.png")

上記のような短い手で画像が見つからない場合、使用した場合のように無視されるのではなく、302コードが送信されます。

background-image: url("image.png") 

-2

背景と背景色に関するバグがあります

CSSのバックグラウンドでWebページを作成するときに、バックグラウンドを使用するときのこの違い:#fff // Mask image( "top item、text or image"))のブロックに乗り越えることができるので、常にバックグラウンドを使用する方が良い-安全な使用のための色。


すみません、意味がありません。回答を編集して、さらに詳しく説明できますか?
Syfer 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.