CSSを使用して背景を暗くする方法は?


99

テキストが含まれている要素があります。不透明度を下げるたびに、WHOLEボディの不透明度を下げます。background-image他のすべてではなく、単に暗くする方法はありますか?

background-image:url('http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png');

回答:


195

このコードを画像のCSSに追加するだけです

 body{
 background:
        /* top, transparent black, faked with gradient */ 
        linear-gradient(
          rgba(0, 0, 0, 0.7), 
          rgba(0, 0, 0, 0.7)
        ),
        /* bottom, image */
        url(http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png);
    }

リファレンス:linear-gradient()-CSS | MDN

更新:すべてのブラウザーがRGBaをサポートしているわけではないため、「フォールバック色」を使用する必要があります。この色は、ほとんどの場合、単色(完全に不透明)になりますbackground:rgb(96, 96, 96)。例:RGBaブラウザーのサポートについては、このブログを参照してください。


これに関するクロスブラウザの問題はありますか?
Jon P

9
background-imageとthisを別々に指定したい場合、プロパティは何ですか?
ペトルザ2016年

2
@Petruzaこの構文を使用せざるを得ないようです。読むの参照を「<イメージ>のデータ型に属し、彼らは唯一ここで、<イメージ>はSを使用することができますこのような理由から、線形勾配()背景色では動作しません使用することができます。<グラデーション>だから。および<color>データ型を使用する他のプロパティ "
Marco Panichi

18

:after擬似要素を使用します:

.overlay {
    position: relative;
    transition: all 1s;
}

.overlay:after {
    content: '\A';
    position: absolute;
    width: 100%; 
    height:100%;
    top:0; 
    left:0;
    background:rgba(0,0,0,0.5);
    opacity: 1;
    transition: all 0.5s;
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
}
.overlay:hover:after {
    opacity: 0;
}

ペンをチェック>

http://codepen.io/craigocurtis/pen/KzXYad


良好ですが、Windows 10のFirefox 47.0.1では動作しませんが、IEで動作します。Firefoxの修正はありますか?
ジョンマックス

2
@JohnMax Firefoxは現在正常に動作しています。数年待つだけです。
Craig O. Curtis

9

に設定background-blend-modeするdarkenことが目的を達成するための最も直接的で最も短い方法background-colorですが、ブレンドモードを機能させるには、最初に設定する必要があります。
これは、後でJavaScriptの値を操作する必要がある場合にも最適な方法です。

background: rgba(0, 0, 0, .65) url('http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png');
background-blend-mode: darken;

バックグラウンドブレンドに使用できますか


1
エッジまたはIE11は本当にブラウザではありません
stackdave

6

これでこれを行うことが可能かもしれません box-shadow

しかし、実際に画像に適用することはできません。単色の背景のみ

body {
  background: #131418;
  color: #999;
  text-align: center;
}
.mycooldiv {
  width: 400px;
  height: 300px;
  margin: 2% auto;
  border-radius: 100%;
}
.red {
  background: red
}
.blue {
  background: blue
}
.yellow {
  background: yellow
}
.green {
  background: green
}
#darken {
  box-shadow: inset 0px 0px 400px 110px rgba(0, 0, 0, .7);
  /*darkness level control - change the alpha value for the color for darken/ligheter effect */
}
Red
<div class="mycooldiv red"></div>
Darkened Red
<div class="mycooldiv red" id="darken"></div>
Blue
<div class="mycooldiv blue"></div>
Darkened Blue
<div class="mycooldiv blue" id="darken"></div>
Yellow
<div class="mycooldiv yellow"></div>
Darkened Yellow
<div class="mycooldiv yellow" id="darken"></div>
Green
<div class="mycooldiv green"></div>
Darkened Green
<div class="mycooldiv green" id="darken"></div>


2

絶対および負のz-indexとして配置された、背景用のコンテナを使用できます。http//jsfiddle.net/2YW7g/

HTML

<div class="main">
    <div class="bg">         
    </div>
    Hello World!!!!
</div>

CSS

.main{
    width:400px;
    height:400px;
    position:relative;
    color:red;
    background-color:transparent;
    font-size:18px;
}
.main .bg{
    position:absolute;
      width:400px;
    height:400px;
    background-image:url("http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png");
    z-index:-1;
}

.main:hover .bg{
    opacity:0.5;
}

2

すでにここにあるものに追加するには、以下を使用します。

background: -moz-linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7));
background: -webkit-linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7));
background: linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7));
filter: unquote("progid:DXImageTransform.Microsoft.gradient( startColorstr='#b3000000', endColorstr='#b3000000',GradientType=0 )");

... 70%線形グラデーションオーバーレイのクロスブラウザサポート用。画像を明るくするには、すべてのものを変更することができます0,0,0「によ255,255,255s」を。70%が少し多い場合は、を変更してください.7。そして、今後の参考のためにこれをチェックしてくださいhttp : //www.colorzilla.com/gradient-editor/


1

背景色を明るくしたり暗くしたい場合は、このcssコードを使用できます

.brighter-span {
  filter: brightness(150%);
}

.darker-span {
  filter: brightness(50%);
}

ありがとう、CSS フィルターについては知りませんでした。それが誰かを助ける場合のために、ここに私は使用できるステータスがあります(2020年3月)。
リードダンクル

0

私にとってフィルター/勾配アプローチは機能しませんでした(おそらく既存のCSSが原因で)、:before代わりに疑似スタイリングトリックを使用しました:

.eventBannerContainer {
    position: relative;
}
.eventBannerContainer:before {
    background-color: black;
    height: 100%;
    width: 100%;
    content: "";
    opacity: 0.5;
    position: absolute;
    display: block;
}
/* make any immediate child elements above our darkening mask */
.eventBannerContainer > * {
    position: relative;
}

デフォルト以来displayのために::beforeあるinlineそれは受け入れないだろうwidthheight
connexo 2016

@connexoに感謝します。関連するスタイルをコピーするときに見逃したようです。
Daniel Sokolowski、2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.