当前位置: 首页 > Web前端 > CSS

两行CSS代码实现图片任意颜色着色技术

时间:2023-03-30 17:49:27 CSS

如何通过纯CSS技术实现任意图片任意颜色着色技术?使用background-blend-mode:lighten实现任意图片着色技术假设我们有这样一张图片,JPG、PNG、GIF都可以,但是有一个前提,就是黑色纯色,背景白色:使用background-blend-mode,我们可以在图片下再叠加一层其他颜色,通过background-blend-mode:lighten混合模式,将图片的主色调从黑色变为其他颜色。简单的CSS代码如下:.pic{width:200px;高度:200px;背景图片:url($img);background-size:cover;}.pic1{background-image:url($img),linear-gradient(#f00,#f00);背景混合模式:变亮;background-size:cover;}注意上面的CSS语句是关键background-image:url($img),linear-gradient(#f00,#f00);,这里我叠加了一层渐变层linear-gradient(#f00,#f00)来实现纯红色背景,而不是直接使用#f00来实现红色背景。使用background-blend-mode:lighten将主色更改为渐变色。这种方法更强大,因为它不仅可以将纯色图片从一种颜色变为另一种颜色,还可以将图片的黑色部分从单一颜色变为另一种颜色。颜色,换成渐变色!简单的CSS代码如下:.pic{background-image:url($img),linear-gradient(#f00,#00f);背景混合模式:变亮;background-size:cover;}可以得到这样的效果:OK,看到这里大家肯定会有疑惑,这是怎么实现的?这里有必要解释一下lighten混合模式。Lighten,lighten模式与darken模式的效果相反:1.与黑色合成图像时没有效果,使用白色时仍然是白色2.黑色比任何颜色都暗,所以黑色会被任何颜色代替颜色。反之,如果材质的底色为黑色,则主色为白色。那么应该使用darken(变暗)混合模式html原图

红色
灰色
渐变
css$img:'https://user-images.githubusercontent.com/8554143/34239266-232bdfc0-e641-11e7-8792-408782aaa78e.png';.pic{width:200px;高度:200px;边距:50px;文本对齐:居中;字体大小:42px;行高:420px;向左飘浮;背景图片:url($img);背景大小:封面;}.p??ic1{背景图像:url($img),线性渐变(#f00,#f00);背景混合模式:变亮;背景大小:封面;}.p??ic2{背景图像:url($img),线性渐变(#333,#333);背景混合模式:变亮;背景大小:封面;}.p??ic3{背景图像:url($img),线性渐变(#f00,#00f);背景混合模式:变亮;background-size:cover;}局限性try--使用透明背景图片上面的方法要求图片本身的内容是纯色黑色,底色是白色,那么如果只有主色,底色像PNG图片一样透明,能不能达到同样的效果呢?假设我们有一个这样的PNG图片(灰色主色,透明背景色):再次执行上面的方法,结果如下:不幸的是,当背景色是透明的时候,它会和叠加的颜色混合通过混合模式图层。无法使用。因此,这项技术有一个前提条件:图片的底色为白色,主色为黑色。当然主色也可以是其他颜色,但是这时候叠加就需要考虑颜色的融合,用黑色不太直观。background-blend-mode实现图片任意着色技术总结综上所述,我们真的只需要两行代码就可以实现背景色为白色,主色为黑色的图片任意着色技术。{背景图片:url($img),线性渐变(#f00,#00f);background-blend-mode:lighten;}其中,background-image的第二个值就是你要赋予的渐变色(当然,渐变也可以产生纯色)。我们同时给一个label设置了背景图片和渐变色,然后使用关键属性background-blend-mode:lighten来实现类似PS中的混合模式效果。background-blend-mode好像叫混合模式,但在PS里好像更像剪贴蒙版。混合模式是对图像本身进行修改,mask和mask是在图像层上传递的。覆盖其他图层以调整图像。那么从这个方法本身,是否可以想象一些可以调整图形颜色的CSS属性也可以实现同样的功能呢?如:[]filter[]mask-image[]mask-clip有兴趣的读者可以自己尝试一下,我会在下一篇继续讨论。黑纯色,白底可能会限制这个技巧的使用场景,但是在很多白底色的页面中,这个方法还是可以起到很好的作用的,很多ICON图片也不再需要两个以上的颜色版本了!background-blend-mode兼容性相对于mix-blend-mode,background-blend-mode的兼容性会更好。所以本文介绍的技术在移动端是有用的: