尝试向覆盖在主背景上的 div 应用灰度滤镜。不确定是否可以使用 jQuery、CSS3 或 HTML5 实现这一点。我尝试了一些新的 CSS3/HTML5 技术,但没有成功。
我无法将它保存为两个图像,因为背景需要拉伸至全尺寸,所以它在每个屏幕上都不完全相同。
我正在制作一个早期草稿,想知道是否应该放弃这个想法。如果您指点我方向,我可以自己解决问题。
您可以使用CSS滤镜:
#mydiv{
-webkit-filter: grayscale(1);
}
请注意,目前此方法仅适用于Chrome和Safari浏览器。
background-size:200% 100%
,以使其与背景大小相同。然后我们应用CSS3灰度和早期版本。最后再在图片上覆盖一个伪元素以加深图像的颜色。测试并可在Chrome 25、Firefox、IE9(我假设7、8也可)下使用。 jsFiddle
.gray {
background:url(https://www.google.com.au/logos/2013/maria_sibylla_merians_366th_birthday_-1256008-hp.jpg);
width:50%;
height:100%;
background-size:200% 100%;
position:relative;
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: url(grayscale.svg); /* Firefox 4+ */
filter: gray; /* IE 6-9 */
}
.gray:after {
display:block;
content:"";
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
background-color:#000;
opacity:.7;
}
body {
margin:0;
background:url(https://www.google.com.au/logos/2013/maria_sibylla_merians_366th_birthday_-1256008-hp.jpg);
height:100%;
background-size:100% 100%;
}
html {
height:100%;
}
.divOnTop {
background: white;
mix-blend-mode: saturation;
}
注意 z-index 属性的设置。
了解更多混合模式的相关内容:
https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode
#background_div{background-color:rgba(150,150,150,0.5);}
前三个值是红、绿、蓝的数量,第四个值是不透明度的百分比。1 = 100%不透明,0.5 = 50%不透明/透明。
希望这能帮到你...
2022年:现在您可以使用广泛支持的浏览器(除IE外)将所有内容变为灰度。
您也不必使用webkit
前缀:
filter: grayscale(1);
然而,在撰写本文时,它的支持情况各不相同 - Chrome、Edge、Safari、Opera都支持,但令人惊讶的是Firefox不支持。也许需要一些时间等待主流浏览器的支持。但我不认为IE会支持它。
这里有一个例子,第一行块是彩色的,然后第二行块也是彩色的,但被使用背景过滤器的覆盖层覆盖了。
.content, .overlay {
position: absolute;
width: 100%;
height: 50%;
}
.content.second-content, .overlay {
top: 50%;
}
.overlay {
backdrop-filter: grayscale(1);
}
.content .color {
display: inline-block;
position: relative;
height: 100%;
width: 30%;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.yellow {
background-color: yellow;
}
<div class="content">
<div class="color red"></div>
<div class="color blue"></div>
<div class="color yellow"></div>
</div>
<div class="content second-content">
<div class="color red"></div>
<div class="color blue"></div>
<div class="color yellow"></div>
</div>
<div class="overlay">
</div>
您可以将背景图片设置为其背后图像的灰度版本。这应该是可以解决的。您只需要正确地定位背景即可。
background-position
将黑白图像定位到正确位置。 - deflime