动态修改svg图片颜色

news/2024/12/2 14:57:43/

使用场景

引入颜色为纯色的svg图片时,动态修改svg图片填充颜色。引入的方式包括直接svg代码引用和img标签间接引用。

直接引用SVG

如果通过svg代码的方式引入图片,那么可以直接修改fill属性动态修改颜色。代码如下

	  <style>svg:hover{fill: #fa0;}</style><div class="container"><svg t="1661261007730" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1771" width="200" height="200"><path d="M512.64 645.12a153.6 153.6 0 0 1-153.6-153.6 39.04 39.04 0 0 1 77.44 0 76.16 76.16 0 1 0 152.32 0 39.04 39.04 0 0 1 77.44 0 153.6 153.6 0 0 1-153.6 153.6z" fill="#445365" p-id="1772"></path><path d="M928 354.56A112.64 112.64 0 0 0 810.24 256h-67.84V192a128 128 0 0 0-124.8-128H405.76a128 128 0 0 0-124.8 128v64h-64a112.64 112.64 0 0 0-120.96 98.56l-23.68 496a97.92 97.92 0 0 0 28.16 72.32A122.88 122.88 0 0 0 192.64 960h640a123.52 123.52 0 0 0 90.24-37.12 97.92 97.92 0 0 0 28.16-72.32zM357.76 192a48.64 48.64 0 0 1 48-48h211.84a48.64 48.64 0 0 1 48 48v64H357.76zM213.76 330.88h596.48c23.68 0 40.32 14.08 40.96 26.88l4.48 95.36H168.32l4.48-95.36c0.64-12.8 19.84-26.88 40.96-26.88z m654.08 538.88a46.72 46.72 0 0 1-33.92 13.44H192.64a46.72 46.72 0 0 1-33.92-13.44 20.48 20.48 0 0 1-7.04-15.36l15.36-323.84h692.48l15.36 323.84a18.56 18.56 0 0 1-7.04 15.36z" fill="#445365" p-id="1773"></path></svg></div>

需要注意的是该SVG代码中不能含有fill属性值,如果有的话则需要手动删除。
在这里插入图片描述
也有的SVG图片通过clss类来设置填充颜色,此时只要设置的style样式层级比该类更高就可以修改成功。比如:
在这里插入图片描述

通过img标签引用SVG

若通过img标签引入SVG,则无法直接改变SVG填充色。此时可以使用一个很妙的主意:利用滤镜filter并设置drop-shadow再造一个图片,并把原来的图片遮挡住不显示。
filter是css3的一个属性,用于定义元素(通常是 )的视觉效果。比如定义图像模糊度(blur)、亮度(brightness)、对比度(contrast)等。而drop-shadow用于生成投影效果。
drop-shadow语法如下图所示:

filter: drop-shadow(x偏移 y偏移 模糊大小 色值)

drop-shadow产生的效果实际上可以看作投影[1]。由于SVG图里的图纹是透明的,因此可以再生成一个相同形状的图片效果。比如

filter: drop-shadow(blue 200px 0);

产生的效果如图所示
在这里插入图片描述
生成想要的阴影图后,只需要再把原图隐藏掉就可以了。可以通过transform的translate属性偏移原图,并将父元素设置overflow为hidden。
代码示例如下:

   <style>.container{width: 800px;height:300px;display: flex;align-items: center;justify-content: center;background-color: aliceblue;}.container:hover{background-color:lightblue;overflow: hidden;}.svg-img{width: 200px;height: 200px;}.svg-img:hover{transform: translateX(-500px);filter: drop-shadow(blue 500px 0);}</style><div class="container" ><img class="svg-img" src="../assets/岗位管理.svg" alt=""></div>

效果如右图所示:
在这里插入图片描述
在这里插入图片描述

参考链接

[1].详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用


http://www.ppmy.cn/news/247857.html

相关文章

一、tienchin健身系统技术点复现-注解限流

一、tienchin健身系统技术点复现-注解限流 这个技术用到的点是 用Java代码执行 redis 的 lua 脚本&#xff0c;采用 请求接口方法 注解RateLimiter &#xff0c;前置通知拦截判断请求次数&#xff0c;做出限流操作。 Gitee代码仓库-rate-limiter 1、application.yml 配置 re…

如何选择正确的图片格式? 图片格式详细科普

数字图片处理是指通过离线或在线资源&#xff08;如编辑软件和网络应用程序&#xff09;来处理图片。其转换过程旨在提高图片质量或从图片中提取更多信息。小编将详细介绍常见的图片格式以及如何进行图片格式转换方便查看&#xff0c;刚好对此有困惑的小伙伴可以一块来看一看。…

HEIF图片存储格式探秘

HEIF&#xff0c;High Efficiency Image File Format&#xff0c;即高效率图档格式&#xff0c;是由动态图像专家组&#xff08;MPEG–Moving Picture Experts Group &#xff09;在2013年推出的存储图片和图片序列的新格式&#xff0c;用于HEVC关键帧的处理上&#xff0c;因此…

Unity 如何实现批量修改图片格式

前言 unity开发游戏过程中&#xff0c;经常会批量修改部分图片格式&#xff0c;比如ios端&#xff0c;我们会修改为astc6x6&#xff0c;android端我们会修改为ETC2。又或者我们需要把图片打包图集&#xff0c;需要批量设置SpriteTag。但是当我们导入大量图片时&#xff0c;如果…

前端常见图片格式整理

前端常见图片格式整理 PNG &#xff08;Portable Network Graphics&#xff0c;便携式网络图形&#xff0c;1996&#xff09; PNG有8位、24位、32位三种形式&#xff0c;其中8位PNG支持两种不同的透明形式&#xff08;索引透明和alpha透明&#xff09;&#xff0c;24位PNG不支…

动态图片生成方案

关注公众号 前端开发博客&#xff0c;领27本电子书 回复加群&#xff0c;自助秒进前端群 作者:阅文前端团队 原文:https://mp.weixin.qq.com/s/0dWfL3ChIceH6rQ8-Oh6pg 一、背景 在业务需求中&#xff0c;根据返回数据动态生成图片分享是很常见的场景。比如在起点读书小程序中&…

图片格式-AVIF

一、前言 打开caniuse首页&#xff08;https://caniuse.com/)&#xff0c;在最新的特性这里看到一个陌生的东西&#xff0c;一个名为AVIF的图片格式&#xff0c;这么名词有意思&#xff0c;AV&#xff1f;IF&#xff1f;等下&#xff0c;我先系个安全带&#xff0c;可以了&…

移动端图片格式调研

本人录制技术视频地址&#xff1a;https://edu.csdn.net/lecturer/1899 欢迎观看。 原文地址: http://blog.ibireme.com/2015/11/02/mobile_image_benchmark/ 图片通常是移动端流量耗费最多的部分&#xff0c;并且占据着重要的视觉空间。合理的图片格式选用和优化可以为你节省…