前端使用svg图片改色实现示例
作者:前端架构师陈龙威 发布时间:2022-03-14 03:54:14
引言
周六来公司写点东西,刚好有个icon颜色不对,ui又不在公司,那么就只能自己动手丰衣足食了。
呜呜呜,好想住公司,都不用上下班了。
svg填充色用的fill
当ui给你了svg图片,且是单色的,又只有你用
svg填充色用的fill,修改里面的颜色即可。
下面是例子:
首先,ui一般会直接给你svg图片,比如这样的:
,用idea或者笔记本打开里面是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>元件/组件图标/提示/面</title>
<g id="元件/组件图标/提示/面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M8,16 C3.581722,16 0,12.418278 0,8 C0,3.581722 3.581722,0 8,0 C12.418278,0 16,3.581722 16,8 C16,12.418278 12.418278,16 8,16 Z M7.5,11.5 C7.5,11.7762581 7.72387097,12 8,12 C8.27612903,12 8.5,11.7762581 8.5,11.5 C8.5,11.2237419 8.27612903,11 8,11 C7.72387097,11 7.5,11.2237419 7.5,11.5 Z M8,4 C7.72385763,4 7.5,4.22385763 7.5,4.5 L7.5,9.5 C7.5,9.77614237 7.72385763,10 8,10 C8.27614237,10 8.5,9.77614237 8.5,9.5 L8.5,4.5 C8.5,4.22385763 8.27614237,4 8,4 Z" id="icon换色层" fill="#f2b044"></path>
</g>
</svg>
搜索关键词,找到id="icon换色层" fill="#f2b044"
,替换fill的值为#df2222
,那么就变成红色了。
你可以试试。
css改色利用过滤器filter
当你用的公司统一的svg格式的icon,但是颜色和这次的需求不一致,直接改svg文件可能影响其他显示,可以考虑css
看到这个,有人就要说了,还不如按方法1,改个颜色,然后复制下文件改名,粘贴,简单粗暴。
确实,可惜我们是前端,一点点优化也是优化,一点点体积也是体积(一点点味道一般,还是蜜雪冰城好喝)。css改色利用的是过滤器filter的drop-shadow
属性,它的功能是可定点定位生成一个可调整模糊度以及颜色的投影, * ,真牛,感觉能做好多炫酷的东西,属实是彩色影分身术了。
具体代码:
<div style="position: relative; width: 20px; height: 20px; border: 1px solid;">
<img src="./svg/img/demo1.svg" style="position:absolute; top: 0; left: 0; filter: drop-shadow(20px 0 #32bb65)"/>
</div>
效果如下:
然后我们调整下原本icon的位置,将它往左挪出去:left:-20px
,代码如下:
<div style="position: relative; width: 20px; height: 20px; border: 1px solid;">
<img src="./svg/img/demo1.svg" style="position:absolute; top: 0; left: -20px; filter: drop-shadow(20px 0 #32bb65)"/>
</div>
最后我们去掉方便识别的边框,并给div加上overflow:hidden
,一个简单的icon改色就完成了!!好棒!!。
最后顺便介绍下filter: drop-shadow()
filter: drop-shadow(x, y, blurry, color)
,第一个参数距离源x轴的像素大小,第二个参数是距离源y轴的像素大小,第三个是模糊度,第四个是投影的颜色。
这是mdn的资料,有个很好看的实现:developer.mozilla.org/zh-CN/docs/…
这个蓝色底就是drop-shadow实现的。
最后看我多重影分身之术:
drop-shadow(20px 0 red) drop-shadow(20px 20px green) drop-shadow(20px 39px blue) drop-shadow(20px 0 skyblue)
原图是橙色,第一次是红色,第二次是绿色,第三次是蓝色,第四次是天蓝,每多一次drop-shadow,都会把上一次的图像复制一次,把上一次的作为原图进行投影,是裂变了没错!!
来源:https://juejin.cn/post/7120895248665935902


猜你喜欢
- 一 介绍Python上有一个非常著名的HTTP库——requests,相信大家都听说过,用过的人都说非常爽!现在requests库的作者又发
- 多个值合并展示现在我们有如图一到图二的需求怎么做?如下sql:SELECT id,GROUP_CONCAT(DISTINCT str) as
- 引言“ 这是MySQL系列笔记的第一篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或
- 需要使用到的文件wxapp.py, read_file.py, setup.py#!/usr/bin/env python# -*- cod
- Go 处理 json数据主要就是使用 json 包下的 Marshal 和 UnMarshal 两个函数。定义结构体 Usertype Us
- 【译者的话】我们曾经在《透视色轮》一文中探讨过色轮的构成及作用,但你可能更多的只是将其作为了解颜色关系的一个工具,却不一定将其作为实际设计中
- 一、算法 1、算法的主要思想就是将一个中缀表达式(Infix expression)转换成便
- 在Spring boot开发中,需要在application.yml文件里配置数据库的连接信息,或者在启动时传入数据库密码,如果不加密,传明
- 使用type()查看数据的类型在Python中, 可以使用type()类型来查看数据的类型:>>> type(3)<
- EXCEL的数值排序功能还是挺强大的,升序、降序,尤其自定义排序,能够对多个字段进行排序工作。那么,在Python * 中,有没有这样强大的排
- 每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用
- 1. 前言春联是中国传统文化中最具内涵的元素之一,它以对仗工整、简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年
- 用来批量切割视频的开头部分,比如去掉一部电视剧的序幕,看着难受不说数量还很多,很菜鸟的一篇,毕竟我也是一个菜鸟,首先要有ffmpeg这个软件
- 1.MySQL官网下载压缩版文件,放至安装路径下载zip安装包MySQL :: Download MySQL Community Serve
- 本文实例讲述了go语言睡眠排序算法。分享给大家供大家参考。具体分析如下:睡眠排序算法是一个天才程序员发明的,想法很简单,就是针对数组里的不同
- 也不一定,以前从来没有深入的研究过sql查询,最近买了一本T-SQL查询的书,把以前忽视的问题都记录一下 以前一直模模糊糊的把sqlserv
- 介绍Django是一个Web框架——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让我们更轻松地读写数据库、管理用户等
- 大致功能:$() 取得所有元素$("div") 取得所有DIV$("#a1") 取得ID为a1的元素
- 为了自定义一个模板标签,你需要告诉Django当遇到你的标签时怎样进行这个过程。当Django编译一个模板时,它将原始模板分成一个个 节点
- 1. 什么是存储过程?存储过程是SQL server所提供的Tran