CSS彩色滤镜叠加

时间:2015-12-20 06:25:12

标签: css css3

我正在尝试在图片上创建颜色叠加层,就像在此应用中一样(图片上的绿色叠加层):

http://i.imgur.com/4XK9J6G.png

对我来说,看起来他们只是在图像上添加一种颜色。看起来他们正在使用某种绿色过滤器。我怎样才能用CSS模拟这个?

这是我开始的JSFiddle:https://jsfiddle.net/5ar4713h/embedded/result/

HTML

<img src="http://www.planwallpaper.com/static/images/canberra_hero_image.jpg" />

CSS

img {
  display: block;
}

/* Filter */
img:after {
  content: "";
}

2 个答案:

答案 0 :(得分:10)

CSS过滤器的组合是一种方法,但没有看到实际的源页面,很难确定。

&#13;
&#13;
.wrap {
  width: 400px;
  height: 400px;
  margin: 1em auto;
  position: relative;
}

.wrap img {
  -webkit-filter: sepia(100%) hue-rotate(90deg) saturate(400%);
  filter: sepia(100%) hue-rotate(90deg) saturate(400%);
}
&#13;
<div class="wrap">
<img src="http://lorempixel.com/image_output/nature-q-c-400-400-6.jpg" alt="" />
</div>
&#13;
&#13;
&#13;

或者,一个带有透明绿色覆盖的简单灰度滤镜。

&#13;
&#13;
.wrap {
  width: 400px;
  height: 400px;
  margin: 1em auto;
  position: relative;
}
.wrap:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 50%;
  height: 100%;
  background: rgba(0, 150, 0, 0.75);
}
.wrap img {
  -webkit-filter: grayscale(100%);
  filter: grayscale(100%);
}
&#13;
<div class="wrap">
  <img src="http://lorempixel.com/image_output/nature-q-c-400-400-6.jpg" alt="" />
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如Paulie_D回答所示,一个可能性是使用过滤器。

另一个可能性是使用混合模式。

您可以使用发光度,它获取前图像的亮度和后图像的颜色

或者你可以使用颜色,反之亦然。

这取决于哪种布局能更好地适应您的需求

body {
  background-color: gray;
}

div {
  display: inline-block;
  width: 360px;
  height: 270px;
  position: relative;
  border: solid 1px black;
  margin-right: 40px;
}

.inner {
  position: absolute;
  left: 50px;
  top: 50px;
  width: 100%;
  height: 100%;
  background-color: red;
  border-radius: 50%;
}

.green {
  background-color: green;
}

.image {
  background-image: url("https://placekitten.com/1000/750");  
  background-size: cover;
}

.color {
  mix-blend-mode: color;
}

.luminosity {
  mix-blend-mode: luminosity;
}
<div class="image">
  <div class="inner green color"></div>
</div>
<div class="green">
  <div class="inner image luminosity"></div>
</div>