Jus*_*ald 8 html jquery transform css3 jquery-animate
好吧,这个问题给我带来了很多问题.
将css3 -webkit-transform样式与任何类型的3d旋转(例如rotateY(30deg))一起使用时,将click事件绑定到此旋转对象是极不可靠的.
请参阅下面的示例代码或查看此小提琴(要查看小提琴中的不可靠性,请单击元素的右侧).此示例没有动画但仍受影响.
HTML:
<div id='box1'>Click this box.</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#box1{
-webkit-transform: rotateY(30deg);
}
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$('#box1').click(function(){
alert('clicked box 1');
});
Run Code Online (Sandbox Code Playgroud)
我的意思是'不可靠'是不会总是抛出click事件(取决于你点击它的位置),有时事件根本不会被抛出(无论你在哪里点击它).
有没有办法解决或避免这种情况,以便旋转和动画时它与CSS3元素一起使用?
更新:
在元素上使用CSS属性"float:left"似乎允许它在不运动时正确检测点击事件.有谁知道为什么浮动属性修复了这个?
我的最终目标是让对象在运动时接收点击事件,但是,当我应用新的CSS3 rotate3d属性(实时,在另一个jquery事件上)给出对象动画时,click事件再次开始失败.
我似乎无法复制该问题,添加float:left;.
有时,浏览器在渲染 HTML 元素的实际宽度时会表现得很奇怪。float:left似乎让浏览器计算得更好。
这是 JavaScript :
$(document).ready(function (){
$('#box1').bind({
'click' : function () {
alert('clicked box 1');
},
'hover' : function () {
console.log('Over Box 1');
}
});
$('#box2').click(function(){
alert('clicked box 2');
});
window.angle = 0;
setInterval(function () {
if (window.angle >= 360) {
window.angle = 0;
} else {
window.angle += 5;
}
$('#box1').css('-webkit-transform', 'rotateY(' + window.angle + 'deg)');
}, 100);
});
Run Code Online (Sandbox Code Playgroud)
这是动画的更新小提琴,它似乎工作正常:http ://jsfiddle.net/RyvtZ/9/
(我添加console.log是hover为了让生活更简单;))