ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

lucide 原生 JavaScript 如何混用 Lucide Lab 图标与自定义图标?

lucide 原生 JavaScript 如何混用 Lucide Lab 图标与自定义图标? lucide 原生 JavaScript 如何混用 Lucide Lab 图标与自定义图标【免费下载链接】lucideBeautiful consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons.项目地址: https://gitcode.com/GitHub_Trending/lu/lucide在只有 HTML 原生 JavaScriptVanilla JavaScript的项目里页面需要同时显示 Lucide 主库图标、主库之外收录在 Lucide Lab 的图标以及自己编写的自定义 SVG 图标。Lucide Lab 是“不属于 Lucide 主库”的图标集合通过lucide/lab包引入原生 JavaScript 版本的做法是HTML 中写i>pnpm add lucide lucide/labyarn add lucide lucide/labnpm install lucide lucide/labbun add lucide lucide/lab以上四条任选其一按你项目实际使用的包管理器执行即可。写 HTML 占位元素Lucide 是 ES Modules 构建的完全可 tree-shaking。createIcons的工作方式是查找带data-lucide属性的元素并将其替换成给定图标名对应的 SVG。在 HTML 中为每个图标写一个占位元素!DOCTYPE html html body i>import { createIcons, Smile } from lucide/dist/cjs/lucide; import { avocado as Avocado } from lucide/lab; createIcons({ icons: { Avocado, } });icons参数接收一个“图标 key → iconNode”的对象。Lab 图标从lucide/lab按名字导入例如avocado自定义图标则是你自己构造的 iconNode 数据结构。官方文档在框架版本如 Astro、Preact、React的示例中展示了自定义 iconNode 的写法即以IconNode类型描述的二维数组元素形如[circle, { cx: 12, cy: 8, r: 5 }]--- const customIcon: IconNode [ [circle, { cx: 12, cy: 8, r: 5 }] ]; --- Icon iconNode{customIcon} size24 colorblue /在原生 JavaScript 中同样的二维数组就是传给icons的值。把 Lab 图标和自定义图标放进同一个icons对象即可在一次createIcons调用中混用import { createIcons } from lucide; import { avocado as Avocado } from lucide/lab; // 自定义图标的 iconNode二维数组元素为 [SVG 标签名, 属性对象] const myRocket [ [path, { d: M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z }], [path, { d: M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z }], [path, { d: M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0 }], [path, { d: M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5 }] ]; createIcons({ icons: { Avocado, my-rocket: myRocket, } });两点说明官方 Vanilla JS 文档只完整示范了 Lab 图标的注册自定义 iconNode 的数组结构来自框架版文档示例原生 JavaScript 中写法去掉类型标注、直接作为普通对象传入即可。自定义图标的d、cx、cy等属性值必须是你自己设计的 SVG 路径官方示例中的值如cx: 12, cy: 8, r: 5只用于展示结构不要原样当作最终图形使用。用 attrs 给混合图标统一设置样式createIcons支持额外参数其中attrs用于传递附加自定义属性例如 CSS 类或描边选项对所有被替换的图标生效。官方完整示例import { createIcons } from lucide; createIcons({ attrs: { class: [my-custom-class, icon], stroke-width: 1, stroke: #333 }, nameAttr: data-lucide, // attribute for the icon name. root: element, // DOM element to replace icons in. inTemplates: true // Also replace icons inside template tags. });其中attrs控制颜色、描边宽度这类统一外观nameAttr可调整用于替换图标的属性名默认即data-lucideroot指定在哪个 DOM 元素范围内替换图标适合操作大型 DOM 的局部区域或 Shadow DOM 内的元素inTemplates: true表示连template标签里的图标也一并替换。只需默认行为时传icons一个参数即可。Lab 图标与常规 lucide 图标一样可接收调整外观的属性参数。如何验证替换成功createIcons的行为定义是搜索data-lucide属性元素并替换为 SVG。因此验证方式是检查 DOM页面加载并执行createIcons后原来写i contenteditable="false">【免费下载链接】lucideBeautiful consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons.项目地址: https://gitcode.com/GitHub_Trending/lu/lucide创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表