基础风格迁移演示 - 载入预训练小型模型
利用预训练的轻量变换网络在浏览器中简单演示将图片转换成特定风格。
UD5工具箱
深入探索 HTML5 <datalist> 元素的各种使用场景,从原生实现到增强型自定义建议框,对比不同方案的优劣。
使用纯 HTML <datalist> 配合静态 <option> 列表,浏览器原生支持,无需任何 JavaScript。
HTML 代码示例:
<input list="myList">
<datalist id="myList">
<option value="选项1">
<option value="选项2">
</datalist>
通过 JavaScript 动态更新 <datalist> 的选项,模拟从远程 API 获取数据,包含防抖和加载状态。
核心实现思路:
// 防抖 + 动态更新 datalist
const debouncedSearch = debounce(async (query) => {
const results = await fetchData(query);
const dataList = document.getElementById('langList');
dataList.innerHTML = results
.map(r => `<option value="${r}">`)
.join('');
}, 300);
放弃原生 <datalist>,使用自定义 div 实现完整的建议下拉框,支持高亮匹配、键盘导航、加载/空/错误状态。
此方案需要更多 JS 代码,但提供了完整的 UX 控制能力,适合对用户体验要求高的项目。
| 特性 | 原生 Datalist | 动态 Datalist | 增强建议框 |
|---|---|---|---|
| JavaScript 依赖 | 无 | 中等 | 较多 |
| 样式自定义 | ❌ 不可控 | ❌ 不可控 | ✅ 完全可控 |
| 加载状态 | ❌ | ⚠️ 需额外实现 | ✅ 内置 |
| 匹配高亮 | ❌ | ❌ | ✅ |
| 键盘完全控制 | ⚠️ 有限 | ⚠️ 有限 | ✅ 完整 |
| 移动端体验 | ⚠️ 因浏览器而异 | ⚠️ 因浏览器而异 | ✅ 统一体验 |
| 实现复杂度 | 极低 | 低 | 中等 |
<datalist> 是 HTML5 引入的表单辅助元素,用于为 <input> 提供预定义的自动建议列表。用户输入时,浏览器会自动过滤匹配的选项并以下拉形式展示。它通过 list 属性与 <input> 关联,内部包含多个 <option> 元素。与 <select> 不同,datalist 允许用户输入自定义值,是一种"建议而非限制"的交互模式。
<select> 限制用户只能从预设选项中选择,而 <datalist> 仅提供建议,用户可以输入任意值。document.getElementById('myList')innerHTML 重新设置选项,或使用 createElement / appendChild 逐个添加 <option><datalist> 的下拉样式由浏览器完全控制,CSS 无法对其外观进行修改。不同浏览器(Chrome、Firefox、Safari、Edge)的下拉框外观各不相同。role="combobox"、aria-autocomplete="list" 等 ARIA 属性提升可访问性。
<datalist> 的匹配行为由浏览器决定,大多数浏览器使用前缀匹配(输入"ap"会匹配"apple"但不会匹配"pineapple")。includes() 或正则表达式进行过滤。这样"ap"就能匹配到"pineapple"、"grape"等包含该子串的所有结果。
<datalist> 不支持多选,它仅为单个输入框提供建议。如需实现标签式多选(如邮件收件人、标签编辑器),需要自行开发或使用第三方库(如 Tagify、Selectize.js 等)。这些库通常结合了自定义建议框和标签管理功能,提供完整的标签式输入体验。
利用预训练的轻量变换网络在浏览器中简单演示将图片转换成特定风格。
在浏览器中运行完整的SQLite数据库,创建表、插入查询数据,体验客户端强大的SQL能力。
拖拽构造多层感知机,调整学习率和激活函数,实时观察分类任务训练过程,入门深度学习。
调节两列波的频率、波长和位置,实时观看水面波干涉形成的明暗条纹图案。
粘贴JSON示例数据,自动分析并生成对应的JSON Schema,支持类型推断和必填标记。
在一个隔离环境中渲染单个组件,调整 props 查看变化,类似于 Storybook 的轻量替代。
调节采样频率,观察对正弦波的离散采样和重建效果,演示欠采样导致的频率混叠。
输入原始URL,填入来源、媒介、活动名等,生成带UTM规范的推广追踪链接。
粘贴代码,计算总行数、有效代码行数、注释行数和空行数。
拖拽改变一个div的大小,通过ResizeObserver API实时显示其新的宽度和高度。
连接到 WebSocket 端点,自定义消息内容(JSON、文本、ArrayBuffer)并发送,查看响应。
粘贴 JSON-LD 代码,校验语法并提示常见类型的必填属性缺失,辅助 SEO 调试。
粘贴SVG代码,将其转换为可复用的React组件,注意驼峰属性名和自闭合标签。
录制一段音频,实时添加机器人、外星人、回声等音效并下载,不依赖服务器。
直观拖拽曲线控制点,生成CSS transition/animation的cubic-bezier()值,并即时播放动画效果预览。
配置监听目标,实时显示DOM节点的增删改及属性变化,辅助AJAX内容调试。
支持多语言字符分割,准确统计汉字、英文单词、日文假名数量,并评估社交媒体发文长度。
输入颜色十六进制值,根据色相和明度给出类似`--color-primary-500`的命名建议。
模拟黏菌释放信息素并追踪轨迹形成网络的过程,可用于可视化物流路径。
配置WebSocket地址,模拟多个并发连接,发送自定义消息并记录响应延迟。
检查XML的格式正确性,报告错误的标签闭合和属性缺失。
并排显示两段文本差异,字符级高亮且支持三路合并视图,解决冲突更直观。
添加多个色块拖拽顺序,直观表现层叠上下文与z-index值。
可视化调整cubic-bezier和steps()缓动,并可实时看到动画球左右移动。
粘贴原始Webhook请求体,自动识别并格式化,便于阅读调试。
添加二维点并选择核函数,直观展示SVM决策边界与支持向量,理解最大间隔分类原理。
在两个不同形状的SVG路径间自动生成流畅的过渡变形动画SMIL代码。
输入词汇和权重,生成美观的文字云图片,可自定义配色和螺旋布局。
输入源页和引用页URL,构造Webmention请求通知被引用页面,演示独立博客协议。
编写 Handlebars 模板并提供 JSON 数据,即时渲染结果,支持 helpers 自定义,纯前端执行。