触摸手势区域训练器 - 识别滑动/捏合等手势
在指定区域内练习双指捏合、旋转、滑动等手势,并显示识别到的手势类型和参数。
UD5工具箱
| # | 属性 | 值 | 说明 | 示例 | 备注 |
|---|---|---|---|---|---|
| 1 | scrollTop | number | 垂直滚动距离 | 150 | px |
| 2 | scrollLeft | number | 水平滚动距离 | 0 | px |
| 3 | scrollHeight | number | 内容总高度 | 2000 | px |
| 4 | clientHeight | number | 可视区域高度 | 500 | px |
scroll事件在元素或页面的滚动位置发生变化时触发。触发频率取决于滚动方式:
高频触发是性能优化的关键原因——每秒可触发60+次,如果事件处理器中有DOM操作或重计算,会导致明显的性能问题。
| 特性 | 防抖 Debounce | 节流 Throttle |
|---|---|---|
| 原理 | 在事件停止触发后延迟执行 | 固定时间间隔内只执行一次 |
| 执行时机 | 最后一次事件后的N毫秒 | 每隔N毫秒执行一次 |
| 适用场景 | 搜索框输入、窗口resize | 滚动加载、无限滚动 |
| 滚动场景 | 滚动停止后处理(如最终位置记录) | 滚动过程中定期处理(如懒加载检查) |
记忆技巧:防抖像电梯——等人进完了才关门;节流像地铁闸机——固定间隔放行一人。
判断滚动方向:比较当前scrollTop与上一次的scrollTop值:
let lastScrollTop = 0;
element.addEventListener('scroll', () => {
const st = element.scrollTop;
const direction = st > lastScrollTop ? '向下' : '向上';
lastScrollTop = st;
});
检测触底:
const isAtBottom = element.scrollTop + element.clientHeight >= element.scrollHeight - 5;
// 5px的容差用于处理浮点数精度
触顶检测更简单:element.scrollTop <= 0
WebKit浏览器(Chrome/Edge/Safari):使用::-webkit-scrollbar系列伪元素。
Firefox:使用scrollbar-width和scrollbar-color属性。
/* WebKit */
.container::-webkit-scrollbar { width: 8px; }
.container::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; }
.container::-webkit-scrollbar-thumb { background: #888; border-radius: 10px; }
.container::-webkit-scrollbar-thumb:hover { background: #555; }
/* Firefox */
.container { scrollbar-width: thin; scrollbar-color: #888 #f1f1f1; }
本工具提供了4种预设主题,您可以在上方切换体验不同风格。
passive: true选项告诉浏览器事件处理器不会调用preventDefault(),从而允许浏览器在事件处理完成前就开始滚动,显著提升滚动流畅度。
element.addEventListener('scroll', handler, { passive: true });
注意:scroll事件本身不会取消滚动(与touchstart/wheel不同),但声明passive仍有助于浏览器的优化调度。移动端尤其推荐!
三者都支持behavior: 'smooth'实现平滑滚动。本工具使用scrollTo进行编程式滚动演示。
在指定区域内练习双指捏合、旋转、滑动等手势,并显示识别到的手势类型和参数。
生成一个从左侧或右侧滑出、带有透明遮罩层的移动端菜单组件。
点击情绪轮盘的外圈细分,了解精准描述心情的词汇。
输入用户查询,测试 Dialogflow 代理的意图匹配、参数提取和回复。
以图表和简短文字解释EXW、FOB、CIF等11种国际贸易术语的责任划分。
随机生成趣味工作状态说明及Emoji,可一键复制设置到Slack或Teams,活跃氛围。
输入布尔表达式,自动绘制用与、或、非门构成的逻辑电路图,并允许交互式输入测试。
输入各类别增减数值,生成瀑布图,清晰展示从初始值到最终值的累积变化过程。
输入多尺寸图片URL,生成带srcset和sizes的响应式img标签,适配各种屏幕。
生成随页面滚动而自动隐藏或显示的顶部导航栏代码,带平滑过渡。
将任意字符或Emoji密铺成无缝图案背景,调节大小和间距,生成CSS背景。
列出成员与任务,设定轮换周期,自动生成每周值日表,可打印贴冰箱。
根据 JSON 示例数据生成对应的 Protobuf 消息定义(.proto),字段类型自动映射,支持嵌套。
粘贴带锚点和别名的 YAML,将所有引用替换为实际内容,得到展开的完整 YAML。
生成长文折叠渐变和“展开阅读全文”按钮,支持自定义高度和过渡动画。
展示Code128等条码的条空模式,逐步教您如何手动计算出编码的数字。
输入标的价格、执行价、到期时间、波动率等参数,实时计算欧式看涨看跌期权理论价格及希腊字母。
对比用CSS媒体查询、类名切换和localStorage持久化三种暗黑模式实现方式。
通过绘制隐藏图形并获取像素哈希,展示 Canvas 指纹如何用于跟踪用户,并给出防护建议。
给出具体手牌与和牌情况,要求计算出符数与得点,加深计分规则。
模拟RPG中的重击效果,随机生成武器重击的额外描述,如斩首、破甲等。
显示汉字标准笔顺动画,使用触摸或鼠标描红,根据轨迹准确度给予评分,适合汉字学习。
生成带有onerror备用图片逻辑的img标签代码,防止破图。
通过表单或拖拽节点生成流程图、时序图等Mermaid代码,实时预览,适合文档编写。
输入商品名称、价格、库存和评价,生成 Product 结构化数据,有助于商品搜索展示。
拖拽彩色珠子到杆上,模拟十进制数位,帮助儿童理解加减法。
上传包含地址的CSV,调用地理编码服务(需Key或演示)批量转换为经纬度。
输入密文,通过字母频率分布建议可能的替换映射,帮助破解简单替换密码。
从内置唐诗库中随机抽取上下句拼接成新诗,有时妙趣横生,有时啼笑皆非。
输入一个成语,自动列出所有可接龙的成语(首字与末字相同),支持模糊音匹配,辅助文字游戏。