前端动态设置纯色图标的颜色方法总汇

更新日期: 2021-07-22阅读: 2.1k标签: 颜色

在开发中,我们需要实现动态切换全局主题色,对于文字颜色或者背景都很好实现,但是页面中经常会有很多小图标,也需要根据主题色进行切换。这篇文章主要介绍2种最常用的实现方式

1、使用svg图,通过更改path的颜色来实现
2、使用png图,利用css3滤镜filter
3、使用字体图标


一、使用svg图

需要把图标全部换成由设计妹子给了SVG图片来显示,不能通过img的方式引入,这是因为img的src引入外部svg图片,是无法修改svg内部path的颜色值的。

例如:

<svg t="1626954008234" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2002"
width="500" height="500">
<path fill="#333333"
d="M288.51831055 288.59741211A249.62475586 249.62475586 0 0 0 219.75927734 512c14.87109375-67.4934082 49.83398438-133.44433594 104.29541016-187.9453125C378.55566406 269.53393555 444.5065918 234.59082031 512 219.71972656c-78.50830078-14.79199219-162.75146484 8.12768555-223.48168945 68.87768555z"
p-id="2003"
></path>
</svg>

我们可以:

1、修改大小:在<svg> 标签中修改widthheight 属性(默认单位是px)

2、修改颜色:在<path> 标签中修改fill 属性,如果没有这个属性,就新增

我们只需要动态设置svg里path路径的颜色值,即可实现图标跟随主题色变化。  使用css来进行修改如下:

<style>
svg{
width:200px;
height: 200px;
}
svg path{
fill:#f00;
}
</style>


二、使用Png图

该方法存在一定的兼容性,但是移动端基本完全兼容,可以放心使用。利用png图,比svg更简单,它是利用了CSS3滤镜filter中的drop-shadow(drop-shadow滤镜可以给元素或图片非透明区域添加投影)。用drop-shadow添加投影模糊度为0,再隐藏原图片。

<img src="./cion/test.png"/>
<style>
img {
width: 200px;
height: 200px;
position: relative;
left: -50px;
border-right: 100px solid transparent;
filter: drop-shadow(100px 0px 0 red);
}
</style>

备注说明:在Chrome浏览器下(低版本),如果一个元素的主体部分,无论以何种方式,只要在页面中不可见,其drop-shadow是不可见的;实体部分哪怕有1像素可见,则drop-shadow完全可见。使用这里使用border-right透明边框来解决兼容问题,如果不考虑Chrome低版本浏览器,可以不使用该属性(以上为例,不使用该属性需要将left值设置为负的100)。

这里利用定位将原图片移除,你需要父元素设置了overflow:hide;或者其他方式来隐藏原图片即可。


三、使用字体图标

字体图标,我们可以轻松的用css来控制字体的颜色,大小,阴影等!方式一使用的svg图片,由于是矢量图片,不会随着图片的伸缩而影响质量,所以我们可以通过工具将svg生成字体图标,放到项目中使用。

借助一个在线生成工具:https://icomoon.io/app/

网上也有很多字体图标库的网站,大家可以下载使用。这里以Font Awesome字体图标库为例:

首页在html文档中的 <head> 部分,引入 font-awesome.min.css 文件。

<link rel="stylesheet" href="../css/font-awesome.min.css">

在页面中使用:

<i class="icon-camera-retro"></i>
<style>
i{
font-size: 40px;
color: #f00;
}
</style>

可以看出更加简单,可控。


总结

这里主要介绍了3种最常见,前端动态设置纯色图标的颜色方法。大家可以根据项目需求选择合适的方案,当然除了上面介绍的以外,还有其他方案,大家可以思考下。


链接: https://fly63.com/article/detial/10547

css常用的颜色单位表示法

所有的颜色都可以由红、绿、蓝三原色调配而成。 CSS中用8位表示一个颜色,那么可以有28即256种颜色,所以总共可以表示256*256*256种颜色。CSS纵有多种颜色表示: 十六进制表示法、rgb表示法、hsl色相表示法、hsla色相表示法

css颜色模式hsla和rgba

在CSS3中可以使用RGBA和HSLA两种色彩模式,这两个都可以用来设置颜色以及指定透明度。RGBA无法直观看出是什么颜色。并且如果想要对颜色进行调整也无法简单做到

网页设计中的色彩心理学

我们大多数人没有意识到它是如何工作的,只有少数人可能会注意到。虽然颜色的影响可能被高估了,但是我们可以在某些情况下明显地感觉到它(想象你自己在一个暗红色的房间里或者在天空颜色的房间里)。

::after 1px 间隔线在 Safari 显示颜色不同于其它的问题

细找问题,找出来了,我在 ::after 内写的是 border-bottom ,也就是说,在纵向压缩的时候,压缩的是 border。换成用 background-color ,也就是用 after 的主体。

Js计算颜色对比度

某些网站和服务允许您通过上传图片,更改背景颜色或设计的其他方面来自定义您的个人资料。作为客户,此个性化将Web应用程序转换为您存储数据的小窝。

RGB、HSL、Hex网页色彩码,看完这篇全懂了

网页使用到的色彩标示方法中,从古早时期大家都在用的16进位码(#000000)、RGB色值标示、HSL色彩标示,其中网页设计师最常使用的16进位色码标示法,而16进位码又是如何计算色彩的呢?

CSS Color Adjust 速览

近来,各大平台的操作系统纷纷引入 Dark Mode 深色模式,包括 Windows、MacOS 以及 Android 甚至 iOS 13 也将引入该模式。深色模式引入的同时,同时允许我们基于用户的偏好设计特定的样式

HTML常用的颜色表【代码色彩表 】

以下是DIVCSS5整理常用的HTML颜色表,参考,直接找到自己需要的html颜色值拷贝颜色值代码即可使用(除了以下颜色表外,你还可以使用PS软件获取颜色值:http://www.divcss5.com/html/h635.shtml)。

常用颜色表之中国传统颜色

不知道大家觉得如何,舒适的颜色,很多人都会喜欢,但主要还是看实用性。今天给大家分享中国传统颜色有那些?中国传统的颜色之美,美如其名:蔚蓝、竹青、绯红、月白、石青、紫檀、霜色、黛绿、胭脂、藕荷、豆绿、宝蓝、秋香、玄色、牙色、黄栌、靛蓝、明黄、朱砂、石绿

css中颜色

假设在设置页面的颜色时觉得一部分很小的颜色集中就足够了,就可以直接给定颜色的名称。CSS称这些有名称的颜色为命名颜色。命名颜色的关键字有限,css定义了17个标准色:浅绿色,黑色,蓝色

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!