UI组件前端【免费下载链接】wired-elementsCollection of custom elements that appear hand drawn. Great for wireframes or a fun look.项目地址https://gitcode.com/gh_mirrors/wi/wired-elements点击查看免费下载导读wired-icon-button是 wired-elements 组件库中一个以手绘素描风格呈现的圆形图标按钮它由 RoughJS 生成手绘椭圆边框中心通过 slot 承载任意图标内容例如 Material Icons 的mwc-icon非常适合用于线框图wireframe、原型草图或追求手绘趣味风格的界面。本文以 docs/wired-icon-button.md 为骨架完整覆盖其安装、导入、属性、CSS 变量与事件用法并结合 src/wired-icon-button.ts 及 examples/icon-button.html 等仓库源码深入讲解它的渲染原理、样式系统与可扩展用法读完即可直接上手使用与二次定制。组件是什么根据 docs/wired-icon-button.md 的定义wired-icon-button是一个手绘素描风格的圆形按钮中心放置一张图片。这里的图片并非限制为img也可以是由图标字体或图标 Web Component 渲染的图标比如material/mwc-iconMaterial Web Components 的图标组件。在 src/wired-icon-button.ts 中它通过customElement(wired-icon-button)注册为原生自定义元素继承自 src/wired-base.ts 中封装的WiredBase抽象基类依赖 roughjs 与 lit 两个核心库见 package.json。安装与引入通过 npm 安装在项目根目录执行npm i wired-elements安装后wired-icon-button会随wired-elements包一起提供该包同时导出WiredButton、WiredInput等全套手绘组件src/wired-elements.ts 中可见export * from ./wired-icon-button等统一导出。模块方式导入在你的 JavaScript / TypeScript 代码中import { WiredIconButton } from wired-elements; // 或按需单独引入体积更小 import { WiredIconButton } from wired-elements/lib/wired-icon-button.js;直接通过 CDN 加载无需构建工具直接在 HTML 页面中加载 ES Modulescript typemodule srchttps://unpkg.com/wired-elements/lib/wired-icon-button.js?module/script注以上路径以当前仓库wired-elements包版本3.0.0-rc.7见 package.json为准发布到 npm 后即可通过上述方式引用。基础用法引入组件后直接在 HTML 中使用自定义标签即可wired-icon-button mwc-iconfavorite/mwc-icon /wired-icon-button wired-icon-button classred mwc-iconfavorite/mwc-icon /wired-icon-button其中mwc-icon是 Material Design 的图标组件需要额外引入material/mwc-icon。你也可以放入任意 HTML 内容——凡是能通过 slot 分发的内容都会被渲染在圆形手绘按钮的中央。仓库的 examples/icon-button.html 给出了一个可直接运行的完整示例它通过 Google Fonts 加载 Material Icons 字体再引入material/mwc-icon与本组件页面中依次展示了默认样式、红色文字.red、粉色背景.pinkbg、大图标.big以及禁用态disabled五种形态。属性Propertiesdisabled— 是否禁用按钮。默认值为false。wired-icon-button disabled mwc-iconfavorite/mwc-icon /wired-icon-button在 src/wired-icon-button.ts 第 8 行它被声明为响应式布尔属性并反射到 DOMproperty({ type: Boolean, reflect: true }) disabled false;reflect: true意味着当属性变化时disabled会同步反映为 HTML attribute便于通过 CSS 选择器匹配。渲染层通过?disabled${this.disabled}将disabled透传给内部的原生button元素第 63 行。对应的禁用样式见第 3843 行button[disabled] { opacity: 0.6 !important; background: rgba(0, 0, 0, 0.07); cursor: default; pointer-events: none; }禁用后按钮呈现半透明、浅灰底且不响应鼠标事件的视觉效果。由于内部是真正的button元素键盘焦点管理、表单语义等原生能力天然可用。自定义 CSS 变量组件通过两个 CSS 自定义属性暴露样式定制入口变量作用默认值--wired-icon-size图标slot 内容的数字字号24px--wired-icon-bg-color按钮背景色未设置透明调整图标大小在 src/wired-icon-button.ts 第 5356 行slot 内容的字号直接绑定该变量button ::slotted(*) { position: relative; font-size: var(--wired-icon-size, 24px); }示例对应 examples/icon-button.html 中的.big类style .big { --wired-icon-size: 40px; padding: 16px; } /style wired-icon-button classbig mwc-iconfavorite/mwc-icon /wired-icon-button设置背景色--wired-icon-bg-color由WiredBase提供的基础样式src/wired-base.ts 的BaseCSS消费#overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; }叠加层#overlay覆盖整个按钮区域但pointer-events: none不拦截点击事件手绘 SVG 绘制在其上。示例中的.pinkbg即通过该变量实现粉色背景style .pinkbg { color: red; --wired-icon-bg-color: pink; } /style wired-icon-button classpinkbg mwc-iconfavorite/mwc-icon /wired-icon-button颜色跟随 currentColor值得一提的是手绘边框描边颜色并非由专门变量控制而是继承currentColor见 src/wired-base.ts 中path { stroke: currentColor; }。因此给wired-icon-button设置color即可改变手绘圆圈的线条颜色示例中的.red { color: red; }正是利用了这一机制。事件Eventsclick— 按钮被点击时触发。由于组件内部渲染的是原生button元素src/wired-icon-button.ts 第 63 行click事件是浏览器原生事件无需手动派发。使用方式const btn document.querySelector(wired-icon-button); btn.addEventListener(click, () { console.log(icon button clicked); });或者在 HTML 中直接绑定wired-icon-button onclickalert(clicked) mwc-iconfavorite/mwc-icon /wired-icon-button当disabled为true时原生button与样式中的pointer-events: none会共同阻止 click 事件的触发。渲染原理从 WiredBase 到手绘椭圆wired-icon-button的手绘边框并非静态图片而是运行时由 RoughJS 生成的 SVG。理解其原理有助于正确使用与排查尺寸问题。模板结构render()输出的模板src/wired-icon-button.ts 第 6170 行button ?disabled${this.disabled} slot slotchange${this.wiredRender}/slot div idoverlay svg/svg /div /button关键点slot负责分发用户放置的图标内容div idoverlay内的svg是手绘椭圆绘制的画布slotchange事件触发时会重新渲染手绘边框保证图标尺寸变化后边框能自适应。尺寸计算与绘制组件继承WiredBasesrc/wired-base.ts实现两个抽象方法canvasSize()取内部button的getBoundingClientRect()宽高作为画布尺寸第 7278 行draw(svg, size)取宽高中的较小值min将 SVG 设为正方形并在中心调用ellipse()绘制手绘椭圆第 8085 行protected draw(svg: SVGSVGElement, size: Point) { const min Math.min(size[0], size[1]); svg.setAttribute(width, ${min}); svg.setAttribute(height, ${min}); ellipse(svg, min / 2, min / 2, min, min, this.seed); }ellipse()定义于 src/wired-lib.ts 第 108112 行内部调用roughEllipse并返回 RoughJS 生成的path节点this.seed是组件实例创建时随机生成的 31 位整数src/wired-base.ts 第 38 行用于控制手绘笔画的随机抖动——这也解释了为什么每个组件实例的手绘感都不完全一样。渲染触发机制WiredBase.updated()在每次属性/状态更新后自动调用wiredRender()wiredRender()会对比当前画布尺寸与上次记录值仅在尺寸变化时重绘 SVG 并清除旧节点避免无谓的 DOM 操作src/wired-base.ts 第 4459 行。绘制完成后组件会添加wired-rendered类配合BaseCSS中:host从opacity: 0过渡到1的规则实现先隐藏、绘制完成再显示的平滑呈现避免闪烁。交互反馈细节源码中还有两处值得注意的交互细节src/wired-icon-button.ts按下时手绘路径微缩第 4446 行button:active path { transform: scale(0.97) translate(1.5%, 1.5%); }模拟实体按钮被按下的效果键盘聚焦时描边加粗第 4749 行button:focus path { stroke-width: 1.5; }提升无障碍可访问性。进阶与 wired-icon 组合使用除mwc-icon外wired-icon-button还可以与仓库中的实验性组件wired-icon位于 experimental/wired-icon组合把手绘风格延伸到图标本身wired-icon能将任意 SVG 图标转换为手绘版本正好契合 icon button 的手绘按钮 图标场景。在wired-icon-button内部放置wired-icon并利用--wired-icon-size控制图标显示尺寸即可得到内外全部手绘的统一视觉风格。许可协议wired-icon-button随 wired-elements 项目以 MIT License 开源版权归作者 Preet Shihn 所有见 docs/wired-icon-button.md 与 package.json 的 license 字段。小结wired-icon-button是一个实现简洁但细节完整的手绘图标按钮组件用法安装wired-elements后以wired-icon-button标签 slot 内容即可使用支持 npm 模块导入与 CDN 直接加载定制disabled属性控制禁用态--wired-icon-size控制图标字号--wired-icon-bg-color控制背景色color继承机制控制手绘描边颜色事件原生click事件即点即用原理基于WiredBase RoughJS 的 SVG 运行时绘制具备自适应重绘、按下反馈与键盘聚焦样式。想要更完整地查看所有组件用法可以参考仓库中的 examples/icon-button.html 示例以及 docs 目录下其他组件的 API 文档。赞分享UI组件前端【免费下载链接】wired-elementsCollection of custom elements that appear hand drawn. Great for wireframes or a fun look.项目地址https://gitcode.com/gh_mirrors/wi/wired-elements点击查看免费下载相关推荐Material Components Web 图标按钮Icon Button完全指南安装、Toggle 状态管理与源码级实现Material Components Web 图标按钮Icon Button完全指南安装、Toggle 状态管理与源码级实现 本文聚焦于 Materia前端UI组件设计系统Ant Design Button 图标按钮实战icon 属性用法、源码原理与最佳实践Ant Design Button 图标按钮实战icon 属性用法、源码原理与最佳实践 Ant Design 的 Button 组件通过 icon 属性即可将前端UI组件设计系统Shoelace sl-icon-button 图标按钮组件完全指南属性、事件与样式定制Shoelace sl icon button 图标按钮组件完全指南属性、事件与样式定制 sl icon button 是 Shoelace 提供的一种纯图标UI组件前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Easy-Vibe 包管理器完全指南:从依赖解析到锁文件,让代码依赖可重现、可协作、可维护 Easy-Vibe 包管理器完全指南:从依赖解析到锁文件,让代码依赖可重现、可协作、可维护 【免费下载链接】easy-vibe 从 0 到 1 学会 vibe coding,项目制学习 项目地址: https://gitcode.com/datawhalechina/easy-vibe 导读:本篇… · 2026/9/24 19:17:22
Gradle构建时NPM命令失效?环境隔离与排查解决指南 如果你在命令行里手动执行npm run build一切正常,但一进 Android Studio 点 Gradle 同步或者构建,就开始报“npm 不是内部或外部命令”,或者提示“npm.ps1 无法加载文件,因为在此系统上禁止运行脚本”,那你多半不是遇到… · 2026/9/24 19:17:16
HarmonyOS ArkUI课程表双向滚动与嵌套滚动实现 做过课程表类App的都知道,这玩意儿看着简单,实际上交互细节一堆。尤其是“双向滚动”——横向要按周切换,纵向要按节次看全天安排,两个方向还得共用表头和时间轴,就像Excel里冻结首行首列一样。我在HarmonyOS 6上用Ark… · 2026/9/24 19:17:16
老打印机遇上Windows 11:HP M1136驱动安装卡住解决方法 如果你手上那台服役多年的 HP LaserJet M1136 MFP,在换到 Windows 11 后第一次插上 USB 线就卡在“新设备已连接”的提示上,你大概能体会那种哭笑不得的感觉。打印机明明通电正常、自检顺畅,电脑右下角也弹出了那个熟悉的横幅,但接… · 2026/9/24 19:56:31
AI编程助手三大范式:Copilot、Claude Code与Cursor能力图谱 1. 为什么现在必须重新理解“AI编程助手”——不是工具升级,而是开发范式迁移我第一次在团队里推开那扇门,是2023年6月。当时我们正为一个遗留系统做接口重构,三个后端同学卡在Swagger定义与Spring Boot Controller签名不一致的问题上&#x… · 2026/9/24 19:56:23
智慧能源双碳云平台落地指南:从数据采集到施工验收 简介:一份面向电力、石油、化工、钢铁等高耗能行业的智慧能源双碳云平台完整解决方案文档,可帮助企业规划能源数字化建设与碳管理路径,也可为政府推进碳排放监管提供参考。方案围绕碳排放监测与核算、碳资产管理、能源管理、智能能源交易、数… · 2026/9/24 19:56:23
离网太阳能+AI视觉:无电源林区防火监控一体化方案解析 林区防火这行有个绕不开的现实:最需要重点盯防的林子,往往恰恰是最没条件装监控的地方。没有市电、没有光缆、基站信号若有若无,连日常巡护都要靠人腿走出来,防火压力却一点不比城市周边小。这些年不少防火项目想上视频监控&#… · 2026/9/24 19:56:23
PDT团队KPI指标库全拆解:20项研发考核指标落地与避坑指南 简介:PDT(Product Development Team)团队KPI指标库是一份面向产品开发管理者、项目负责人及绩效评估人员的中文工具型PDF文档,系统梳理了衡量产品开发团队成效所需的财务、客户、内部业务三大类共20项关键绩效指标。文档对每项KPI… · 2026/9/24 19:56:23
基于VGG-16的图像检索系统:从特征提取到相似度排序的完整落地 简介:本资源面向人工智能与信息检索方向的学习者与开发者,提供一套基于VGG-16深度学习模型的图像检索系统完整项目实践。项目摒弃传统颜色、形状、纹理等手工特征,改用Keras预训练模型(VGG-16、ResNet50、DenseNet121)… · 2026/9/24 19:56:15
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44