news 2026/9/13 20:25:21

lucide 原生 JS 图标在 Web Components 的 Shadow DOM 中如何渲染?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
lucide 原生 JS 图标在 Web Components 的 Shadow DOM 中如何渲染?

lucide 原生 JS 图标在 Web Components 的 Shadow DOM 中如何渲染?

【免费下载链接】lucideBeautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons.项目地址: https://gitcode.com/GitHub_Trending/lu/lucide

在 Web Component 中,Shadow DOM 的内容与宿主页面隔离,直接往 document 上做的图标替换看不到它。Lucide 官方文档(Shadow DOM)明确说明:Lucide 图标可以在 shadow DOM 内使用。文档给出了原生 JavaScript(无框架)下的两种做法:用createElement创建单个图标并插入 shadow root,以及用createIcons批量替换 shadow root 内的<i>npm install lucide

等价的包管理命令(同一文档给出):pnpm add lucideyarn add lucidebun add lucide

方式一:用createElement创建单个图标

官方示例代码(来自文档的在线沙箱,沙箱内置了lucide依赖和打包器):

index.html

<!DOCTYPE html> <html> <body> <div id="container"></div> <script src="index.js"></script> </body> </html>

index.js(在本地项目里即你的入口 JS 文件):

import { Home, createElement } from 'lucide/dist/cjs/lucide'; const container = document.getElementById('container'); const shadowRoot = container.attachShadow({ mode: 'open' }); const iconElement = createElement(Home) shadowRoot.appendChild(iconElement);

步骤含义:

  1. attachShadow({ mode: 'open' })#container元素上取得 shadow root;
  2. createElement(Home)生成Home图标对应的图标元素;
  3. shadowRoot.appendChild(iconElement)把它插入 shadow DOM。

两处说明:

  • 文档原代码中的import "./styles.css";一行是沙箱模板自带的样式文件引入,与图标渲染无关,本地复现时删除即可;
  • lucide/dist/cjs/lucide是文档沙箱使用的 CJS 入口;在常规打包项目里,按 Getting started 文档推荐用 ESM 形式导入:import { Home, createElement } from 'lucide';

方式二:用createIcons批量渲染多个图标

要一次在 shadow DOM 里渲染多个图标,用createIconsroot选项指定 shadow root 作为替换范围。官方示例的index.html与方式一相同(#container结构),index.js为:

import { TreePalm, Volleyball, Waves, createIcons } from 'lucide/dist/cjs/lucide'; const container = document.getElementById('container'); const shadowRoot = container.attachShadow({ mode: 'open' }); const iconWrapper = document.createElement('div'); iconWrapper.innerHTML = ` <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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 20:21:04

2012-2015老Mac装最新macOS:OpenCore Legacy Patcher手把手教程

2012-2015老Mac装最新macOS&#xff1a;OpenCore Legacy Patcher手把手教程 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 2012 到 2015 年买的 MacBook Pro…

作者头像 李华
网站建设 2026/9/13 20:20:44

多传感器融合定位:从传感器特性到工程落地的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 20:20:26

Cilium Agent Pod 持续 CrashLoopBackOff 怎么排查

Cilium Agent Pod 持续 CrashLoopBackOff 怎么排查 【免费下载链接】cilium eBPF-based Networking, Security, and Observability 项目地址: https://gitcode.com/GitHub_Trending/ci/cilium 在 Kubernetes 集群中部署 Cilium 后&#xff0c;kube-system 命名空间下的 …

作者头像 李华