尝试对主背景上方的 div 应用灰度过滤器。想知道这对于 jQuery、CSS3 或 HTML5 是否可行。我正在使用一些新的 CSS3/HTML5 技术,但没有成功。
我不能将它保存为两个图像,因为背景需要拉伸全尺寸,所以它不会在每个屏幕上都完全相同。
我正在做一个早期的草稿,我只是想知道我是否应该放弃这个想法。如果您指出我正确的方向,我可以弄清楚。
您可以使用 CSS 过滤器:
#mydiv{
-webkit-filter: grayscale(1);
}
请记住,这目前适用于 Chrome 和 Safari。
您不能在 CSS 中应用“我身后的一切灰度”过滤器。
如果您不介意全屏丢失纵横比(这可能与您的云图像无关),这是一种技术。它在背景顶部放置一个宽度为一半的 div,并使用background-size:200% 100%
它使其大小与背景相同。然后我们应用 CSS3 灰度和它的旧版本。然后在顶部放置一个伪元素以使图像变暗。
经过测试并适用于:Chrome 25、Firefox、IE9(我也假设为 7、8)。
.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%;
}
您可以通过对顶部的 div 应用 mix-blend-mode 来做到这一点,背景为白色:
.divOnTop {
background: white;
mix-blend-mode: saturation;
}
注意 z-index。
有关混合混合模式的更多信息:
https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode
CSS 使使用 rgba 值提供“灰度”或透明背景变得简单。或者,您可以使用透明图像。
一个例子在这里http://jsfiddle.net/TtSUD/
在您的 CSS 中,您将 rgba 值应用于背景,如下所示:
#background_div{background-color:rgba(150,150,150,0.5);}
前三个值是红色绿色和蓝色的量,第四个值是不透明度的百分比。1 = 100% 不透明,0.5 = 50% 不透明/透明。
希望这可以帮助...
然而,在撰写本文时,它已经混合了各种支持——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>
2022:您现在可以通过对浏览器的广泛支持(IE 除外)对所有内容进行灰度化。您也不必使用webkit
前缀:
filter: grayscale(1);
您可以将背景图像设为其背后图像的灰度版本。那应该行得通。你只需要正确定位背景。