解锁SVG新姿势:ChatGPT绘制图标+SVG Symbol自动导入

解锁SVG新姿势:ChatGPT绘制图标+SVG Symbol自动导入大家好 我是心锁 一枚 23 届准毕业生 近期 ChatGPT 很火 作为前端 er 我思考与尝试了让它帮忙写代码 帮助我解析与研究某些国内资料较少的技术 优化代码 解释代码 优化简历 都非常棒 就是很可惜 GPT 的图片能力还一般 如果什么时候它可以解析图片了 或许图片生成代码就不远了 等一下 SVG 好像也是图片 就在某个时刻我灵光一闪 于是本文章就出来了

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



大家好,我是心锁,一枚23届准毕业生。

近期ChatGPT很火,作为前端er,我思考与尝试了让它帮忙写代码、帮助我解析与研究某些国内资料较少的技术、优化代码、解释代码、优化简历——都非常棒,就是很可惜GPT的图片能力还一般,如果什么时候它可以解析图片了,或许图片生成代码就不远了。

9f867531e614d96f50539edf78c17b3c
GPT plus 代充 只需 145

等一下,SVG好像也是图片,就在某个时刻我灵光一闪,于是本文章就出来了。

不知道诸位读者们有没有自己找icon的经历:

  1. 先找到对应图片并下载
  2. 将文件移动到项目并改名
  3. 在需要使用的地方导入并通过img标签使用

私以为,第一步,第二步,第三步我都不喜欢。有没有一种合适的方式,让我可以直接通过IDE新建文件,不再需要下载,同时使用的时候不再需要导入?

ccda3dbac680008f1fea80c9cbef1f8a

这或许是有的,本文旨在完成该目标。

本步骤也可以理解成正常流程中的寻找图标与自行绘制图片

众所周知,SVG是一种矢量图形格式,可以通过代码描述出图形,而不是像普通图片一样储存像素点。这使得SVG图标具有可缩放性,适合在不同分辨率的设备上使用。同时,SVG图标可以用作网站的某些元素,例如logo、导航菜单等。

3d51e70b5bb1aafebf9a675ed02f7148

再众所周知,ChatGPT具有生成代码的能力。我们可以利用ChatGPT生成SVG代码,这样就可以省去自己绘制图标或者自己找图标的步骤。

我试着用下边的文案生成了一些icon,大家可以参考:

 
  
GPT plus 代充 只需 145

Untitled

Untitled

讯享网
 

Untitled

讯享网
 

Untitled

为了实现不需要下载和导入文件,我们可以使用SVG Symbol。使用SVG Symbol,我们可以将所有的图标放在一个单独的SVG文件中,并通过引用该文件中的Symbol元素来使用它们。

以下是一个示例SVG文件,其中定义了两个Symbol元素:

讯享网

以下是一个使用SVG Symbol的示例代码:

 

在上面的代码中,我们通过元素引用了SVG文件中的两个Symbol元素,并将它们放在了元素内。

为了进一步简化该流程,我们可以使用Webpack和svg-sprite-loader自动导入SVG Symbol。

以下是一个Webpack配置文件中添加的规则:

讯享网

该规则将处理所有以结尾的文件,并使用将它们转换为SVG Symbol元素。其中,选项用于生成Symbol元素的ID。这样既保留了导入svg为url的能力,又拥有了symbol导入能力。

我们可以在文件夹下新建一个文件夹,在其中存放所有的SVG图标文件。然后,我们创建一个文件,使用函数自动导入所有的SVG文件并将它们添加到页面中。

e7978f6e059b813fdb6fcab662561fa6

 

在上面的代码中,我们使用函数导入了所有以结尾的文件,并将它们添加到页面中。

在该步骤,需要注意两个点。

  • 需要导入文件

务必在主文件中导入该文件:

讯享网
  • 若出现和WebpackModuleApi相关错误,强烈建议使用any代替

Untitled

为方便使用,我们封装一个SvgIcon组件。

 

在上面的代码中,我们定义了一个组件,用于渲染SVG图标。该组件使用了元素引用了SVG文件中的Symbol元素。其中,属性用于指定Symbol元素的ID。

讯享网

使用作为icon的单位,是因为是相对于当前对象内文本的字体尺寸的宽度单位,这样我们就可以通过设置fontSize的方式来调整icon的图标了。

bde845294befa2c602ccfd34cd466edc

使用方式:

 

在上面的代码中,我们使用了组件来渲染SVG图标,其中,属性用于指定需要渲染的图标的名称。

至此,我们已经完成了将SVG图标转换为SVG Symbol,并自动导入的流程。现在,我们可以直接在代码中使用SVG图标了,而不需要导入文件。

值得注意的是,该方法存在一定的问题。由于我们全量引用了图标,会导致在所有页面,都会导入所有icon,原因是我们在文件中做了自动化导入,我们亦可通过单行导入的方式来避免全量引入,我目前在思考有没有什么更好的方案解决该问题。

讯享网

本文主要介绍了两个方法,分别是使用ChatGPT自动生成SVG代码和使用Webpack和svg-sprite-loader自动导入SVG Symbol。这些方法可以使得在代码中使用SVG图标更加方便和高效。

c0d0f1ab7c1dc04f23466b063757b416

综上所述,通过使用ChatGPT自动生成SVG代码和使用Webpack和svg-sprite-loader自动导入SVG Symbol,我们可以更加便捷地在代码中使用SVG图标,提高开发效率和代码质量。


本文正在参加「金石计划」


小讯
上一篇 2026-03-09 22:56
下一篇 2026-03-09 22:58

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/210338.html