我用一個名爲「left」和「right」的2個div將鼠標移動事件放在他們身上,製作了一個傳送帶。我也想讓它上下移動,所以我創建了一個「頂部」和「底部」,並注意到我不能讓它們合併在一起,以實現光標前進的方式。選擇div的特定區域
因此,我認爲針對容器中的特定區域(即我的容器div的上半部分)而不是在觸發特定方向內創建div,這樣(我認爲)我可以完全觸發所有這些事件。然而在經過幾個小時的研究之後,我找不到這樣做的方法。
我該如何繼續?這裏是代碼:http://jsfiddle.net/pool4/vL5g3/3/
var x=0,
y=0,
rateX=0,
rateY=0,
maxspeed=10;
var backdrop = $('.backdrop');
$('.directionx', backdrop).mousemove(function(e){
var $this = $(this);
var left = $this.is('.left');
var right = $this.is('.right');
if (left){
var w = $this.width();
rateX = (w - e.pageX - $this.offset().left + 1)/w;
}
else if (right){
var w = $this.width();
rateX = -(e.pageX - $this.offset().left + 1)/w;
}
});
$('.directiony', backdrop).mousemove(function(e){
var $this = $(this);
var top = $this.is('.top');
var bottom = $this.is('.bottom');
if (top){
var h = $this.height();
rateY = (h - e.pageY - $this.offset().top + 1)/h;
}
else if (bottom) {
var h = $this.height();
rateY = -(e.pageY - $this.offset().top + 1)/h;
}
});
backdrop.hover(
function(){
var scroller = setInterval(moveBackdrop, 30);
$(this).data('scroller', scroller);
},
function(){
var scroller = $(this).data('scroller');
clearInterval(scroller);
}
);
function moveBackdrop(){
x += maxspeed * rateX;
y += maxspeed * rateY;
var newpos = x+'px '+y+'px';
backdrop.css('background-position',newpos);
}
非常感謝,它非常清楚。你能否告訴我更多關於如何在沒有額外div的情況下實現它?我一直在尋找它,但找不到正確的方法來做到這一點。 –
嘗試更改 –
哇,很好地完成。我會從中學到很多東西。然而,有一件事我不明白,看起來軸線是倒置的,但我似乎無法在數學中發現錯誤,這是正常的嗎? –