无法与转换的 html 元素交互
Cannot interact with transitioning html elements
这东西快把我逼疯了!
我在 html 页面中的另一个div 内以编程方式创建绝对定位的div。外部div 注册mousedown
和touchstart
事件,内部div 使用 css3 过渡开始移动。
所有转换都会影响 -WebKit-transform
属性。
一切正常,除了事件处理:在 Chrome 和 Safari 中,所有事件都包含在外部div 事件处理程序中,但事件的目标属性很少是我点击的div!
当div 完成其转换时,事件目标始终是正确的,但在div 转换时则不然。这是一个错误吗?我错过了什么吗?
更新:
以下示例与 Safari 和 Chrome 兼容
下面是演示该问题的联机示例:http://jsfiddle.net/qfn7F/4/
球体从屏幕顶部生成,并朝屏幕底部移动。当用户单击球体(mousedown
事件)时,单击的球体必须从屏幕上消失。
以下是处理与球体交互的代码:
container.addEventListener(onSelect, function() {
if (event.target.classList.contains("transition")) {
var tDiv = event.target;
var box = tDiv.getBoundingClientRect();
var durationEase = "0.25s linear";
tDiv.style.pointerEvents = "none";
tDiv.style.webkitTransform = "translate3d(" + box.left + "px," + box.top + "px, 1px)";
tDiv.style.opacity = 0;
tDiv.style.webkitTransition = "opacity " + durationEase;
}
event.preventDefault();
event.stopPropagation();
}, false);
但是事件的目标很少是用户单击的球体,因此球体不会以一致的方式从屏幕上消失。
如果球体到达屏幕底部,即过渡结束,则单击事件 100% 有效。
在使用
css3 Transform制作动画时遇到了类似的问题。使用 css 转换的 intsead 使用 css 位置来提供 transtion 以动画
jsfiddle.net
tDiv.style.top = (tDiv.offsetWidth * 0.5 + Math.random() * (window.innerWidth - tDiv.offsetWidth)) + "px";
tDiv.style.right = (window.innerHeight - tDiv.offsetHeight) + "px";
相关文章:
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素