Animate.css 应用于整个表单后,表单元素原生功能失效

南漂一卒 发布于 2015/06/07 20:51
阅读 732
收藏 0

最近在做一个微信浏览器中的活动页面,要求翻页时有卡片式动画,于是选用 Animate.css 作为动画效果库

因为这个动画库把 CSS 3 Key-Frame 封装成以动效命名的 CSS 类,所以实现炫酷的翻页动画并没花多少时间,但却遇到一个非常奇葩的 Bug ——

翻页动画结束后,最后一页中的所有表单元素原生功能失效 —— 微信、UC 等老版 WebKit 内核尚可在点击文本框时弹出输入法(但接收不到任何输入),最新桌面版 Chrome 的移动开发模拟器则完全没有反应……

(最新版 Firefox 的“响应式设计模式”则一切正常,用 3D 视图 查看 DOM 元素堆叠也没有发现表单元素被其它元素盖住)

因为想到 CSS 3 的 3D 变换原理是把动画元素脱离文档流后整体绘制大量各种尺寸的静态位图输出到浏览器(不涉及 DOM 重绘,所以性能高),所以我尝试用“动画结束后微调容器元素尺寸”的方法来强制动画区域重绘,也不奏效……

因为在网上也完全找不到相似案例,如果还不能及时解决,那就只能把表单独立到一个弹出层了(降低了用户体验一致性前端组件复用度)……

加载中
0
南漂一卒
南漂一卒

又是灵光一闪,自己解决了…… 


因为滑动手势的事件监听是自己参考网上博文封装的,对 touchStart、touchMove、touchEnd、touchCancel 都用了 event.preventDefault(),彻底禁用了表单元素的原有功能……(其实只需禁用 touchMove 即可)

返回顶部
顶部