背景画像と色を一緒に使用できないのはなぜですか?


179

私がやろうとしているのは、background-colorとの両方を表示することですbackground-image。これにより、私の半分がdiv右側の影の背景画像を覆い、残りの左側が背景色を覆います。

しかし、を使用するbackground-imageと、色が消えます。


7
あなたのCSSコードは何ですか?
outis

回答:


299

要素の背景として色と画像の両方を使用することは完全に可能です。

background-colorbackground-imageスタイルを設定します。画像が要素よりも小さい場合は、background-positionスタイルを使用して右に配置し、background-repeatスタイルを使用して背景全体が繰り返されて覆われないようにする必要があります。

background-color: green;
background-image: url(images/shadow.gif);
background-position: right;
background-repeat: no-repeat;

または複合スタイルを使用するbackground

background: green url(images/shadow.gif) right no-repeat;

複合スタイルbackgroundを使用して両方を個別に設定した場合、最後のスタイルのみが使用されます。これが、色が表示されない理由の1つです。

background: green; /* will be ignored */
background: url(images/shadow.gif) right no-repeat;

要素の一部のみを覆うように背景画像を明確に制限する方法はないので、背景色を表示するには、画像が要素よりも小さいか、または透明領域があることを確認する必要があります。


3
これをどのように機能させるのですか?background: -webkit-linear-gradient(bottom, rgb(222,222,222) 19%, rgb(201,201,201) 50%, rgb(219,219,219) 80%); AND background-image: url(icon.png) no-repeat right;グラデーションと画像アイコンの両方を適用するにはどうすればよいですか?助けてください。
Anish Nair 2013年


2
RE:@AnishNair- background:は省略形であり、指定された画像がないと想定し、上を歩くbackground-image
sheriffderek

1
これが問題の原因でした-ありがとうございます! あなたは、別途の両方を設定するには、複合スタイルの背景を使用する場合は、最後のものだけではそれがあなたの色が表示されていない理由を一つの可能な理由ですが、使用されます:
GeminiDakota

30

画像に色を付けるには、CSS3 backgroundを使用して画像とをスタックしますlinear-gradient。以下の例では、linear-gradient実際のグラデーションなしでaを使用しています。ブラウザーはグラデーションを画像として扱い(実際にはビットマップを生成してオーバーレイすると思います)、したがって実際には複数の画像を積み重ねています。

background: linear-gradient(0deg, rgba(2,173,231,0.5), rgba(2,173,231,0.5)), url(images/mba-grid-5px-bg.png) repeat;

あなたがpngを持っていたら、水色の色合いのグラフ用紙を生成します。重ね順はメンタルモデルとは逆に機能し、最初のアイテムが上になる場合があることに注意してください。

Mozillaによる優れたドキュメント、ここ:

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Using_multiple_backgrounds

グラデーションを構築するためのツール:

http://www.colorzilla.com/gradient-editor/

注-IE11では機能しません!その理由がわかったときは、そのはずなので、アップデートを投稿します。



12

この回答に追加するには、画像自体が透明な背景であることを確認してください。


良い追加。これは、.pngの代わりに.jpgを使用したときに起こりました
corbin '24

1
コメントとしてより良い答えとしてこれを投稿しないでください。
Iharob Al Asimi 2015

2
これはいつから?実際には創設世代。それは荒れた西であり、規則はありませんでした。あなたは初心者がすべてを黄金の盛り合わせで提供しました;-)
Itay Moav -Malimovka

2

background-imageとをbackground-color一緒に使用する例を次に示します。

.box {
  background-image: repeating-linear-gradient( -45deg, rgba(255, 255, 255, .2), rgba(255, 255, 255, .2) 15px, transparent 15px, transparent 30px);
  width: 100px;
  height: 100px;
  margin: 10px 0 0 10px;
  display: inline-block;
}
<div class="box" style="background-color:orange"></div>
<div class="box" style="background-color:green"></div>
<div class="box" style="background-color:blue"></div>


2

実際には、背景画像で背景色を使用する方法があります。この場合、背景部分は白または透明の色ではなく、指定された色で塗りつぶされます。

そのためには、次のbackgroundようにプロパティを設定する必要があります。

.bg-image-with-color {
    background: url("example.png") no-repeat, #ff0000;
}

後のカンマとカラーコードに注意してくださいno-repeat。これはあなたが望む背景色を設定します。

このYouTube動画これを発見しましたが、そのチャンネルや動画とは何の関係もありません。


1
私はこれを疑った、それがかなりうまくいくことに驚いた。ただし、互換性を調べる必要があります。+1
Nicky Thomas

0

画像の半分を透明にして、背景色が透けて見えるようにします。

それ以外の場合は、コンテナーdivの50%を占める別のdivを追加して、左または右にフロートさせます。次に、画像または色を適用します。


これは、背景画像が含まれているdivと同じ大きさであることを前提としています。
mr-euro、

0

Geckoは設定奇妙なバグがあるbackground-colorためhtmlセレクタがアップカバーするbackground-imageにもかかわらず、body要素のbody要素効果では、より大きなzのインデックスを持っており、あなたがすべき身体のを見ることができるようにbackground-image一緒にhtml background-colorシンプルなロジックに純粋に基づきます。

ヤモリバグ

以下は避けてください...

html {background-color: #fff;}
body {background-image: url(example.png);}

回避策

body {background-color: #fff; background-image: url(example.png);}

0

こんにちは、私はbackground-imageとbackground-colorを組み合わせる別の方法を試しました:

HTML

<article><canvas id="color"></canvas></article>

CSS

article {
  height: 490px;
  background: url("Your IMAGE") no-repeat center cover;
  opacity:1;
} 

canvas{
  width: 100%; 
  height: 490px; 
  opacity: 0.9;
}

ジャバスクリプト

window.onload = init();

var canvas, ctx;

function init(){
  canvas = document.getElementeById('color'); 
  ctx = canvas.getContext('2d'); 
  ctx.save();  
  ctx.fillstyle = '#00833d'; 
  ctx.fillRect(0,0,490,490);ctx.restore();
}

うまくいったかどうか教えてくださいありがとう


-3
background:url(directoryName/imageName.extention) bottom left no-repeat; 
background-color: red;

2
これはどのように/なぜ質問に答えますか?回答を編集して詳しく説明してください。
Artjom B. 14

このような2行は不要です。1つの宣言に入れることができます。このページの他の例を参照してください。 background: red url(directoryName/imageName.extention) bottom left no-repeat;
2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.