【发布时间】:2016-02-20 17:08:44
【问题描述】:
目标
当包含<li> 的图像具有active 类时,在图像顶部有一个彩色覆盖。它应该看起来像这样
所有图像上的默认叠加层也是深色的。但是激活时需要更换。下面的图像是较浅的黑白图像。
背景
我在这里找到了有关如何在图像顶部添加彩色叠加层的各种教程和答案。但大多数“图像”是一个 div 的background-image。
就我而言我无法更改 html 中元素的当前顺序。
问题
如何修改 CSS 以在图像上添加一个彩色图层?
默认图像为黑白。当<img> 的类为bw 时,它们将有一个深色覆盖。
如果包含<li> 处于活动状态,则深色叠加层将被橙色叠加层抵消。
所以看来我必须使用大量的继承才能取得成功。也许在bw 类之后有active 类?
li img.bw {
background: rgb(3,3,3); /* dark overlay */
opacity: .9;
}
li.active img.bw {
background: rgb(246,137,28); /* orange */
opacity: .5;
}
代码
Codepen上的演示
HTML
<li class="active">
<a href="">
<img class="bw" src="http://www-tc.pbs.org/prod-media/newshour/photos/2013/07/10/Tesla_circa_1890_slideshow.jpeg">
</a>
</li>
<li>
<a href="">
<img class="bw" src="http://www-tc.pbs.org/prod-media/newshour/photos/2013/07/10/Tesla_circa_1890_slideshow.jpeg">
</a>
</li>
CSS
/* demo only */
.li {
width: 100px;
height: 100px;
display: inline-block;
}
img { height: 200px; width: 160px;}
/* styles for overlay */
li img.bw {
background: rgb(3,3,3);
opacity: .9;
}
li.active img.bw {
background: rgb(246,137,28);
opacity: .9;
}
【问题讨论】:
-
很难准确地说出您想要什么,但是这个演示的行为是否符合您的预期? codepen.io/the_ruther4d/pen/ec6e314207d72ba3cdc5ec5d50638660
-
@JoshRutherford 有效。然而,只有当其中的
<img>具有class="bw"时,才会发生覆盖。或悬停时没有覆盖。我可以从这里修改。谢谢。