96SEO 2026-06-12 16:20 5
从 uno.config.ts 把握 UnoCSS 图标的脉络
先说一句,聊 UnoCSS 我们得先把心态放轻松。
别想一次性把所有概念塞进脑子,慢慢来。

今天咱们就从项目根目录的 uno.config.ts 出发,拆解一下图标是怎么配置的。
先抛出一个常见的疑问:为什么百度不收录?
答案hen简单,百度爬虫geng喜欢传统的静态资源链接,对 CSS 背景中的 SVG 识别度低。
所以Ru果你想让搜索引擎kan到图标,Zui好配合 或者使用可访问的 alt 文本。
回到正题,打开你的 uno.config.ts,Zui核心的几行大概长这样:
presetIcons, // 按需安装 @iconify-json/carbon 等 }, // 或 scale: , warn: true 等选项})
这段代码其实是 UnoCSS 的「图标预设」入口。
它告诉 UnoCSS:我要用哪些图标集合,我要怎么加载它们。
下面一步步拆开kankan。
一、collections:自定义 VS 官方集合collections 是一个对象。
键名代表「命名空间」,键值是一个函数或对象返回 Iconify 集合。
custom 是我们自己起的名字,一般对应本地 SVG 文件夹。
Ru果你想直接引用 Carbon、Material Design 那些官方库,只需要在这里加一行:
import { presetIcons } from 'unocss'
presetIcons({
collections: {
carbon: => import,
custom: loadCustomIconSet,
},
})
这样一来你既Neng用 i-carbon-user
也Neng用自家前缀 i-custom-*
两套图标并存,是有意为之——业务定制走 custom,通用图标走官方集合。
import { importDirectorySync, runSVGO, deOptimisePaths } from '@iconify/tools'
import fs from 'fs'
const customIconPrefix = 'custom'
const customIconSvgDir = 'src/assets/svg'
const loadCustomIconSet = => {
const iconSet = importDirectorySync(customIconSvgDir, {
prefix: customIconPrefix,
})
iconSet.forEachSync => {
const svg = iconSet.toSVG!
runSVGO
deOptimisePaths
iconSet.fromSVG
})
if {
const iconSetContent = iconSet.export
fs.writeFile)
}
return => iconSet.export
}
这里面干了几件事:
importDirectorySync: 把整个 目录读进来每个文件变成 Iconify 条目。
runSVGO: 用 SVGO 把 SVG 再压缩一下去掉冗余属性。
deOptimisePaths: 把路径数据转成geng紧凑的形式,减小体积。
.vscode/icons.json: 开发时生成这个文件,让 VS Code 的 Iconify 插件Ke以自动补全类名。
三、extraProperties:让图标像文字一样友好对齐extraProperties: {
display: 'inline-block',
'vertical-align': 'middle',
}
# 小技巧:给图标加上这两个属性,它就会跟文字基线对齐,不会出现「漂浮」或「压低」的问题。
四、在模板里怎么写?哈哈,这里Zui实战!
搜索
h
Ehh,你可Neng会好奇,「那我还Neng在纯 CSS 中直接控制颜色吗?」答案是肯定的!因为 UnoCSS 会把 SVG 当作 mask,用 background-color: currentColor;
.i-custom-check-circle-filled {
width: 1em;
height: 1em;
background-color: currentColor;
mask: url no-repeat center / contain;
}
# 小提醒:确保你的 SVG 没有硬编码的 ,而是使用 ,否则颜色就改不了啦!不对不对,我刚才说错了——其实即使硬编码,只要你在 SVGO 阶段把它替换掉也行。只要记得检查一下生成的 CSS 就好。
import { defineConfig, presetWind3, presetIcons } from 'unocss'
import { loadCustomIconSet } from './scripts/load-icons'
export default defineConfig({
presets: ,
})
P.S. 常见坑 & 小技巧
Pitfall #1: 忘记在生产环境把 .vscode/icons.json 加入 .gitignore,导致 CI 打包时多余文件被提交。记得手动加一下!哈哈。
Pitfall #2: 使用动态类名时需要在文件顶部加注释
Pitfall #3: Babel/TS 编译器有时会把 .svg 当作普通模块处理,需要在 vite.config.ts 配置 assetsInclude.
TIPS: Ru果你想让搜索引擎kan到这些图标,Ke以在关键位置额外放置一张 PNG 或者使用可访问标签()。这也是解决「为什么百度不收录」的一种思路啦!😉
# 小彩蛋: 在 VS Code 安装 antfu.iconify 插件后当你敲下 ,IDE 会立刻弹出补全列表,省事儿不少哦!咱就是说这玩意儿真的提升了开发效率百倍~
a) kan完这篇,你应该Yi经Neng定位到 uno.config.ts 中和图标相关的每一块配置;
b) Neng自行添加本地 SVG 并通过类名调用;
b) 明白了为什么搜索引擎抓不到 CSS 背景里的图标,以及该怎么兼容;
C) 对常见坑有预判,不再踩雷。
D) Zui重要的是——别忘了保持轻松愉快的心情写代码啊!哈哈哈~ 🎉
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback