CSS mix-blend-mode
属性妙用:摆脱父级背景色限制,实现图片滤色效果
在CSS中使用mix-blend-mode
属性实现图片滤色效果时,常常需要父元素提供背景色作为混合参考。然而,这容易与页面其他元素的背景色冲突。本文提供一种巧妙的解决方案,在不依赖父级背景色的情况下,实现类似Photoshop滤色效果的图片处理。
问题:mix-blend-mode
需要父元素背景色参与混合,但图片下方的背景色与图片本身的背景色可能不一致,直接使用下层背景色作为父元素背景色行不通。
解决方案:利用伪元素(::before
或 ::after
)!创建一个与图片大小相同的伪元素,放置于图片下方,设置其背景色为图片的背景色。然后,将mix-blend-mode
应用于图片本身。这样,mix-blend-mode
就与伪元素的背景色混合,实现滤色效果,且不会影响页面其他元素。
关键在于伪元素的背景色要精确匹配图片的背景色,才能获得理想的滤色效果。如果图片背景色复杂,可能需要微调伪元素背景色或采用更复杂的方案。 此方法有效地避免了对父级元素背景色的依赖,实现了精准的滤色效果。