首页/新闻资讯/正文详情

wired-elements 手绘风格多行文本框组件 wired-textarea 完整使用指南

发布时间:2026/9/23 12:28:43 来源:云帆数科 栏目:资讯中心
wired-elements 手绘风格多行文本框组件 wired-textarea 完整使用指南
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-elements 项目中wired-textarea自定义元素展开讲解如何通过 npm 或 CDN 引入该组件、如何使用其全部属性与事件、以及它与原生textarea之间的关系。读完本文你将能够在 wireframe线框图、原型或追求手绘趣味界面的项目中快速集成一个支持多行输入、自动增长并带手绘描边外观的文本框组件。组件简介手绘风格的多行文本输入wired-textarea是一个基于 Web ComponentsCustom Elements技术实现的多行文本输入组件外观为手绘涂鸦风格sketchy / hand-drawn由 RoughJS 绘制边框。它适合用于线框图、界面原型或者任何希望界面带有手绘感的趣味场景。该组件内部封装了原生textarea因此保留了原生多行输入的全部行为同时通过 SVG 覆盖层绘制出手绘边框。从 src/wired-textarea.ts 的源码可以看到组件通过customElement(wired-textarea)注册继承自WiredBase见 src/wired-base.ts并在渲染时调用rectangle()见 src/wired-lib.ts基于 RoughJS 生成手绘矩形边框。安装与引入通过 npm 安装在你的 JavaScript 项目中添加 wired-elements 依赖npm i wired-elements在模块代码中导入import { WiredTextarea } from wired-elements; // 或者按需单独引入该组件模块 import { WiredTextarea } from wired-elements/lib/wired-textarea.js;wired-elements的完整组件清单统一在 src/wired-elements.ts 中导出其中第 22 行即为export * from ./wired-textarea;。直接在 HTML 页面加载无需构建工具通过 unpkg 以 ES Module 方式直接加载script typemodule srchttps://unpkg.com/wired-elements/lib/wired-textarea.js?module/script基本使用在 HTML 中直接使用wired-textarea标签即可wired-textarea placeholderEnter text rows6/wired-textarea仓库中提供了可直接运行的示例页面 examples/textarea.html其中展示了多行数、禁用态等多种组合wired-textarea placeholderEnter text/wired-textarea wired-textarea placeholderEnter text 3 rows rows3/wired-textarea wired-textarea placeholderEnter text 6 rows rows6/wired-textarea wired-textarea placeholderEnter text 1 rows rows1/wired-textarea wired-textarea disabled placeholderdisabled rows2/wired-textarea示例页通过script typemodule src../lib/wired-textarea.js/script加载组件并对wired-textarea设置了max-width: 100%与box-sizing: border-box等页面级样式。属性详解文档声明的核心属性属性说明默认值以源码为准rowstextarea 初始显示的行数2src/wired-textarea.tsmaxrowstextarea 可增长到的最大行数超过后出现滚动条0表示不限制src/wired-textarea.tsvalue文本内容可读可写空字符串disabled禁用该控件falsesrc/wired-textarea.tsplaceholder输入框的占位提示文本空字符串其中disabled属性带有reflect: true会同步反映为宿主元素上的 HTML 属性便于 CSS 使用:host([disabled])进行样式控制。源码中提供的更多属性除了文档列出的五个属性src/wired-textarea.ts 还暴露了以下与原生textarea对齐的属性可直接通过属性或 JS 属性设置属性类型说明autocompletestring自动补全提示原生autocompleteautofocusboolean页面加载时自动聚焦inputmodestring输入模式如text、numericrequiredboolean是否必填参与表单校验语义readonlyboolean只读模式minlengthnumber最小字符数限制maxlengthnumber最大字符数限制这些属性在 render() 方法 中被逐一绑定到内部原生textarea上因此其行为与原生属性保持一致。value 属性的读写机制源码中value是一个访问器属性src/wired-textarea.ts读取时返回内部textarea的当前值写入时若组件尚未完成首次渲染shadowRoot尚未建立则暂存到pendingValue待firstUpdated()时再统一回填src/wired-textarea.ts。这保证了在组件挂载前就赋值也不会丢失内容。事件文档声明组件会触发原生textarea元素能触发的全部事件。实现方式见 src/wired-textarea.ts 的refire()方法内部textarea上监听了change与input事件触发后先stopPropagation()阻止原生事件直接冒泡再通过this.fire()重新派发同名事件。fire()由 src/wired-base.ts 实现使用CustomEvent并设置bubbles: true、composed: true事件detail中携带{ sourceEvent: event }指向原始事件对象。因此你可以这样监听const ta document.querySelector(wired-textarea); ta.addEventListener(input, (e) { console.log(输入内容, e.detail.sourceEvent.target.value); });注意change与input均会以自定义事件的形式重新派发使用e.detail.sourceEvent可以拿到原生事件对象进行进一步处理。手绘外观的实现原理wired-textarea的手绘边框并非图片素材而是运行时动态生成的 SVG组件继承 WiredBase基类在updated()钩子中调用wiredRender()根据宿主元素尺寸创建 SVG 画布组件覆写canvasSize()返回自身getBoundingClientRect()的宽高src/wired-textarea.ts覆写draw()方法调用 wired-lib.ts 中的 rectangle() 生成 RoughJS 的roughRectangle路径绘制出一个四周留有 4px 内缩空间的手绘矩形边框src/wired-textarea.ts每次绘制的抖动偏移由随机种子seedMath.floor(Math.random() * 2 ** 31)见 src/wired-base.ts决定因此每次刷新页面边框的手绘抖动细节都略有不同这正是手绘感的来源。渲染结果通过div idoverlay中的 SVG 覆盖在原生textarea之上且 overlay 设置了pointer-events: none见 src/wired-base.ts保证 SVG 不会拦截任何鼠标交互文本编辑操作全部落在真实的textarea上。样式与外观定制组件默认的宿主样式src/wired-textarea.ts包括width: 400px默认宽度可被外部 CSS 覆盖font-family: sans-serif与内部 textarea 继承一致的字体padding: 4px为手绘边框留出空间内部textarea的border: none、resize: none、outline: none并继承宿主的字体、颜色、行高等禁用态:host([disabled])下整体opacity: 0.6、禁用指针事件并在 SVG 背景上叠加一层浅灰底色rgba(0, 0, 0, 0.07)。你可以在页面中直接通过 CSS 定制尺寸与配色wired-textarea { width: 100%; color: #b3541e; /* 边框颜色跟随 currentColor */ }边框路径使用stroke: currentColor见 src/wired-base.ts因此修改宿主元素的color即可改变手绘边框颜色。限制与注意事项组件高度默认由内容行数决定外部显式设置height会影响 SVG 边框的绘制区域建议通过rows控制高度或参考 examples/textarea.html 使用max-width: 100%做响应式约束组件隐藏了原生resize手柄resize: none如需手动调整大小需自行实现该组件依赖lit与roughjs两个运行时依赖见 package.json以 ES Module 方式使用时请确保目标浏览器支持 Custom Elements 与 Shadow DOMvalue在首次渲染前写入会被暂存并在firstUpdated()时应用该时序逻辑同样适用于从属性读取初始值getAttribute(value)见 src/wired-textarea.ts。许可协议本项目采用 MIT License版权归 Preet Shihn 所有详见仓库根目录的 LICENSE。赞分享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点击查看免费下载相关推荐PlantUML4IDEA插件完全指南让IntelliJ IDEA秒变专业UML绘图神器PlantUML4IDEA插件完全指南让IntelliJ IDEA秒变专业UML绘图神器 PlantUML4IDEA是一款专为IntelliJ IDEA平台打开发工具IDEWired Elements项目中的手绘风格组合框组件wired-combo详解Wired Elements项目中的手绘风格组合框组件wired combo详解 引言手绘UI的魅力与实用价值 在现代Web开发中用户界面的视觉表现越来越多UI组件前端mlx-community/Fara-7B-4bit性能测试M2 Pro上的解码速度与内存占用实测mlx community/Fara 7B 4bit性能测试M2 Pro上的解码速度与内存占用实测 在AI大模型普及的今天本地部署的性能表现成为开发者和用户创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

半导体存储器物理特性与工程实践指南
半导体存储器物理特性与工程实践指南

简介:本资源为高校《数字电子技术》或《计算机组成原理》课程核心章节课件,聚焦半导体存储器原理与应用,面向电子、计算机及相关专业本科生及硬件初学者。内容系统覆盖ROM与RAM两大类器件:从掩模ROM、PROM、EPROM到快闪存储器的编… · 2026/9/23 12:28:43

告别文档迷宫:3个方案手写实现slowdown逻辑
告别文档迷宫:3个方案手写实现slowdown逻辑

告别文档迷宫:3个方案手写实现slowdown逻辑 官方文档往往长篇大论,核心逻辑被淹没在配置项与边缘案例中,让人抓不住重点。 想真正搞懂性能瓶颈,光看理论不够,必须动手 手写实现 核心机制,才能看透底层。… · 2026/9/23 12:28:36

电动汽车有序充电的蒙特卡洛模拟:从随机场景到配电网负荷评估
电动汽车有序充电的蒙特卡洛模拟:从随机场景到配电网负荷评估

简介:电动汽车大规模接入配电网日益普遍,如何通过有序充电减轻电网冲击成为研究热点。这份基于MATLAB的蒙特卡洛模拟程序,面向电力系统研究人员与工程师,可用于模拟不同出行习惯、充电偏好、充电时间窗口下电动汽车的充电行为&… · 2026/9/23 12:28:36

预算有限的学生党如何用免费开源工具搭建编程开发环境?
预算有限的学生党如何用免费开源工具搭建编程开发环境?

这几年经常有大一新生跑来问我同一个问题:预算有限的情况下,编程开发软件到底该怎么选,是不是一定要咬牙买正版全家桶,或者直接用破解版?我的回答一直都很明确:你在学生阶段几乎找不到必须花钱才能解决核心… · 2026/9/23 14:33:20

2026最新什么是艺术:3个步骤解决看教程不会写项目的性能瓶颈
2026最新什么是艺术:3个步骤解决看教程不会写项目的性能瓶颈

2026最新什么是艺术:3个步骤解决看教程不会写项目的性能瓶颈 看了一堆教程还是不会写项目?这是很多开发者的常态。2026最新的技术栈变化太快,死记硬背代码片段根本行不通。真正的“什么是艺术”,不在于你背了多少API,而在于你能否识别性能瓶… · 2026/9/23 14:33:20

JY901九轴IMU校准算法详解:从零偏补偿到磁力计椭球拟合的完整实践
JY901九轴IMU校准算法详解:从零偏补偿到磁力计椭球拟合的完整实践

简介:这是针对JY901姿态传感器(兼容MPU9050/MPU9250)的校准算法说明文档,面向嵌入式开发与惯性导航应用人员,重点解决磁场与加速度零偏导致的姿态漂移问题。文档系统梳理了两条校准链路:磁场校准部分详细给… · 2026/9/23 14:33:20

2026最新继电器模块原理图解:3步搞懂底层逻辑
2026最新继电器模块原理图解:3步搞懂底层逻辑

2026最新继电器模块原理图解:3步搞懂底层逻辑 配置环境就卡半天,代码跑不通,日志一片红,这种抓狂感谁懂?很多学员在搞物联网项目时,一碰到硬件控制就头大,尤其是继电器模块,感觉就像个黑盒,通电就动,断电就停,中间到底发生了什么?在2026… · 2026/9/23 14:33:20

布隆过滤器与布谷鸟过滤器:原理、对比与应用
布隆过滤器与布谷鸟过滤器:原理、对比与应用

1. 过滤器技术的前世今生在计算机科学领域,空间效率和查询速度往往是一对矛盾体。当我们需要在海量数据中快速判断某个元素是否存在时,传统的数据结构如哈希表虽然准确,但内存消耗巨大;而直接遍历所有数据又会导致查询效率低下。这… · 2026/9/23 14:33:14

Python期末作业智能停车管理系统:从需求拆解到JSON持久化与flet界面完整指南
Python期末作业智能停车管理系统:从需求拆解到JSON持久化与flet界面完整指南

简介:一份用Python编写的智能停车管理系统模拟出入场项目,面向Python期末作业、课程设计或K12阶段进阶练习,可完整演示车辆入场、出场计费到信息持久化的过程。系统采用OpenCV实现车牌识别,结合YOLOOCR深度学习方案,利… · 2026/9/23 14:33:14

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码