img标签中引用本地icon.svg,如何在html显示中改变icon颜色

本文讲述了作者作为HTML新手,在尝试改变网页中SVG图标颜色时遇到的问题,包括颜色应用规则、SVG结构的理解,以及最终成功调整SVG代码的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在搞一个html网页,纯纯小白,遇到什么问题都要一个个去查、去解决。

写这篇blog也就是因为在搞网页的过程中,看着黑色icon不顺眼,想换个颜色,于是去找方法解决。

所以这是一个在试了多种方法,遇到许多奇奇怪怪问题之后,终于成功了的故事。

下面介绍一下自己成功更换icon颜色的方法。


1.我的html里面使用img标签直接调用本地下载下来的icon.svg图片,用来在网页中显示;

(person-outline.svg是我在https://ionic.io/ionicons下载下来,存放于本地的)

<img src="{% static "icon/person-outline.svg" %}" style="display:block" >

运行我的网页,初始效果是这样的:

2.我想换个其他颜色,于是尝试了下面这种方法。

找到本地该图标的.svg文件,用记事本打开,可以看到如下内容。

改变颜色的关键在这里面的fillstroke两个值。

我首先将第一个fill的值改为了“#8FAADC”

(要用十六进制,别写代码习惯了直接用英文,别问我怎么知道的😥)

结果变成了这样:

这下我知道了,图标和印章一样,也是分阴阳的。(毕竟我对html真的纯小白😂)

于是我就保持fill不动,改变所有stroke的值为“#8FAADC”,得到结果:

是不是有哪里不对劲?

是的,为啥其他线条都变了,就剩一个点还是黑色的!!!

这就是下一个需要关注的点了……

3.后来通过再读svg我发现,里面共有4个path,但fill和stroke对才出现了3次,最后一个path中,只有一个d值,这好像就是那个黑点点了……

于是我就直接在最后一个path里面试着分别添加fill或stroke,第一次就成功,然后黑点就顺利变色了!

最终我将svg改成了这样(红色的地方是我改过的):

最后出来的效果:


到此,又一个小问题终于被解决……

### 使用SVG替代`<img>`标签显示图标的最佳实践 在现代Web开发中,使用内联SVG代替传统的`<img>`标签来展示图标具有许多优势。这不仅能够提供更好的性能和可访问性,还允许更灵活的样式控制[^1]。 #### 优点概述 - **SEO友好**:搜索引擎可以更好地理解图像内容。 - **缩放无损**:矢量图形可以在任何尺寸下保持清晰度。 - **CSS/JS交互性强**:可以直接通过DOM操作或CSS修改颜色和其他属性。 #### 实现方法 一种常见的方式是直接将SVG代码嵌入到HTML文档中作为内联元素: ```html <!-- 替代方案一:直接嵌入 --> <svg class="icon" viewBox="0 0 24 24"> <path d="M19,6.4L8.7,15.7C8.3,16.1 7.6,16.1 7.2,15.7L6,14V10H10L12,8L14,10H18V14L19,12.9C19.3,12.3 19.3,11.5 19,10.9Z"/> </svg> ``` 另一种方式则是利用`<use>`元素引用外部定义好的SVG片段,这种方法有助于减少页面体积并提高加载速度: ```html <!-- 替代方案二:使用<symbol>与<use> --> <svg style="display:none;"> <symbol id="example-icon" viewBox="0 0 24 24"> <title>Example Icon</title> <path d="..."/> </symbol> </svg> <svg class="icon"><use xlink:href="#example-icon"/></svg> ``` 对于需要支持旧版浏览器的情况,还可以采用带有回退机制的方法,在不支持SVG的情况下自动切换至图片资源: ```html <object type="image/svg+xml" data="icon.svg"> <img src="fallback.png" alt="Icon description"/> </object> ``` 以上三种方法各有优劣,具体选择取决于项目需求和个人偏好[^2]。 #### 样式调整 为了使SVG图标适应不同场景下的视觉效果,可以通过CSS轻松改变其外观特性: ```css .icon { fill: currentColor; /* 继承父级文本颜色 */ width: 1em; height: 1em; } ``` 这样设置后,只需更改容器的颜色即可同步影响内部路径填充色,极大简化了主题配色工作流程[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dwyjqkg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值