我正在尝试获得99design在将鼠标悬停在设计上时所获得的图像效果。[99designs.ca]徽标设计竞赛:运行错误需要徽标220626
我现在正在获取鼠标在mousemove上的位置,然后用它来移动我的弹出窗口图片
,并且一切运行正常,但它是非常迟钝的..。可能是因为打了这么多电话。
要获取鼠标的位置,请执行以下操作:
jQuery(document).ready(function(){
//$("#special").click(function(e){
$(".imgWrap").mousemove(function(e){
//$('#status2').html(e.pageX +', '+ e.pageY);
//alert(e.pageX + ', ' + e.pageY);
mouseX = e.pageX;
mouseY = e.pageY;
});
})
我不确定有没有别的办法可以做这件事..有什么想法吗?
事件的整个过程如下:
图片标签还调用js函数,该函数将img标签的位置更改为鼠标的位置。
实际上,你可以在这里查看:pokemonsite
更新:我看到有一笔赏金(谢谢!)我现在有点忙,不能检查所有其他答案,但我会尽快检查的
发布于 2015-03-26 02:12:50
在使用mousemove事件时,有几种方法可以提高性能。
backface-visibility: hidden
在popover元素上强制硬件加速。同样的事情也可以用来实现transform: translate3d(0,0,0)
但是这使得使用CSS变得很困难。transform
函数(参见第2点)。transform
函数用于绝对定位,以避免重绘,但保持弹出元素的绝对或固定位置。:hover
状态可用于切换弹出元素的显示。我做了一个演示示例,结合了所有列出的内容。在光标位置和弹出图像之间仍然有一些延迟,并且原始问题中没有示例链接,所以我无法与其进行比较,但我希望有人会发现这一点很有用。
.imgHover {
display: none;
backface-visibility: hidden;
position: fixed;
top: 0; left: 0;
pointer-events: none;
}
.imgHolder:hover ~ .imgHover { display: block; }
// uncomment if it makes sense
//.imgHolder:hover { cursor: none; }
var posX, posY;
$('#imgHolder').mousemove(HoverImg);
function HoverImg(e) {
posX = e.pageX;
posY = e.pageY;
window.requestAnimationFrame(showBigImg);
}
function showBigImg() {
$('#bigImgHolder').css({'-webkit-transform': 'translateX(' + posX + 'px) translateY(' + posY + 'px)', 'transform': 'translateX(' + posX + 'px) translateY(' + posY + 'px)' });
}
参考文献:
发布于 2015-03-25 14:45:13
试试这个:
jQuery(document).ready(function(){
$(".imgWrap").mousemove(function(e){
e.stopPropagation();
mouseX = e.pageX;
mouseY = e.pageY;
});
})
发布于 2015-03-20 19:13:55
如果绝对(x,y)位置不是那么重要(意思是:可以省略一些像素值而不破坏您的逻辑),您可以尝试跳过mousemove-event的一些帧。
var globalSkipCounter = 0;
var globalSkipRate = 5;
$(".imgWrap").mousemove(function(e){
if(globalSkipCounter >= globalSkipRate){
var mouseX = e.pageX;
var mouseY = e.pageY;
do_stuff(mouseX, mouseY);
globalSkipCounter = 0;
}
else{
globalSkipCounter+=1;
}
});
这样,您就可以省略在每个mousemove事件上重新绘制图像,而不是使用您的绘图例程(do_stuff
)仅调用一次,每5个事件调用一次。
https://stackoverflow.com/questions/16868122
复制相似问题