手势动画组件在移动端失效是怎么回事?
我用 hammer.js 做了个滑动切换的动画组件,本地 Chrome 模拟器上好好的,一到真机(iOS 和安卓)就完全没反应,连事件都不触发。
试过加 touch-action: none; 也试过给容器显式设置高度,还是不行。控制台也没报错,就是静悄悄地不工作……是不是哪里漏了什么配置?
const el = document.getElementById('slider');
const mc = new Hammer(el);
mc.on('swipeleft swiperight', (ev) => {
console.log('gesture detected:', ev.type);
// 触发动画逻辑
});
本地模拟器能过是因为 Chrome 模拟器默认给了元素尺寸,真机上是 0。
改一下就行:
如果还不行,检查一下 CSS:
核心就两点:元素宽高写死、preventDefault。加上这两基本就好了。