隨著時代的變化,越來越感覺到js的重要性,js不僅可以做web頁面(如Ext框架),還可以做一些web的特效,這些特效不僅兼容PC,而且兼容手機端,畢竟是基于瀏覽器的,和平臺沒關系。現在微軟的windows8 系統的App都可以用js開發了,大家有時間可以去嘗試一下。
現在切入正題,說一下js 實現可拖動Div.實現這個功能我們先說一下思路:
1.捕捉鼠標div的mousedown事件
2.捕捉 document的 mousemove事件
3.取消事件
然后我們看一下代碼:
},
layerX: function (evt) {
var e = this.event(evt);
return e.layerX || e.offsetX;
},
layerY: function (evt) {
var e = this.event(evt);
return e.layerY || e.offsetY;
}
}
var x = page.layerX(e);
var y = page.layerY(e);
if (dv.setCapture) {
dv.setCapture();
}
else if (window.captureEvents) {
window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
}
d.onmousemove = function (e) {
var tx = page.pageX(e) - x;
var ty = page.pageY(e) - y;
dv.style.left = tx + "px";
dv.style.top = ty + "px";
}
d.onmouseup = function () {
if (dv.releaseCapture) {
dv.releaseCapture();
}
else if (window.releaseEvents) {
window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP);
}
d.onmousemove = null;
d.onmouseup = null;
}
}
}
代碼分析:
1.
獲取div對象
里面有這么一段代碼:
},
layerX: function (evt) {
var e = this.event(evt);
return e.layerX || e.offsetX;
},
layerY: function (evt) {
var e = this.event(evt);
return e.layerY || e.offsetY;
}
}
還有一段代碼:
有的人可能會問為什么要-x,-y?
x,y其實就是獲取鼠標距離div邊框的距離,如果不減掉的話
鼠標箭頭的坐標和div的x,y坐標一樣了,這樣拖動之后,鼠標的位置會偏到左上角,效果就是,拖動之后會彈動一下。
最近都在學習js,后續有新的心得體會也會與大家分享,希望與大家共同學習,進步。
新聞熱點
疑難解答