JavaScript 設(shè)計(jì)鼠標(biāo)跟隨
■知識(shí)點(diǎn)
當(dāng)事件發(fā)生時(shí),利用事件對(duì)象的坐標(biāo)屬性可以獲取鼠標(biāo)指針的位置,說(shuō)明如表所示。
屬 性 | 說(shuō) 明 | 兼容性 |
clientX | 以瀏覽器窗口左上頂角為原點(diǎn),定位x軸坐標(biāo) | 所有瀏覽器,不兼容Safari |
clientY | 以瀏覽器窗口左上頂角為原點(diǎn),定位y軸坐標(biāo) | 所有瀏覽器,不兼容Safari |
offsetX | 以當(dāng)前事件的目標(biāo)對(duì)象左上頂角為原點(diǎn),定位x軸坐標(biāo) | 所有瀏覽器,不兼容Mozilla |
offsetY | 以當(dāng)前事件的Hi標(biāo)對(duì)象左上頂角為原點(diǎn),定位y軸坐標(biāo) | 所有瀏覽器,不兼容Mozilla |
pagcX | 以document對(duì)象(即文檔窗口)左上頂角為原點(diǎn),定位x軸坐標(biāo) | 所有瀏覽器,不兼容IE |
pageY | 以document對(duì)象(即文檔窗口)左上頂角為原點(diǎn),定位y軸坐標(biāo) | 所有瀏覽器,不兼容IE |
screenX | 計(jì)算機(jī)屏幕左上頂角為原點(diǎn),定位x軸坐標(biāo) | 所有瀏覽器 |
screenY | 計(jì)算機(jī)屏幕左上頂角為原點(diǎn),定位y軸坐標(biāo) | 所有瀏覽器 |
layerX | 最近的絕對(duì)定位的父元素(如果沒(méi)有,則為document對(duì)象)左上頂 角為原點(diǎn),定位x軸坐標(biāo) | Mozilla 和 Safari |
layerY | 最近的絕對(duì)定位的父元素(如果沒(méi)有,則為document對(duì)象)左上頂 角為原點(diǎn),定位y軸坐標(biāo) | Mozilla 和 Safari |
■實(shí)例設(shè)計(jì)
設(shè)計(jì)一個(gè)函數(shù),根據(jù)事件對(duì)象獲取鼠標(biāo)指針的坐標(biāo)值,設(shè)置該對(duì)象為絕對(duì)定位,絕對(duì)定位的值為鼠標(biāo)指針當(dāng)前的坐標(biāo)值。定義形參為:對(duì)象引用指針、相對(duì)鼠標(biāo)指針的偏移距離以及事件對(duì)象。
var pos = function(o, x, y,event){ //鼠標(biāo)指針定位賦值函數(shù)
var posX = 0, posY = 0; //臨時(shí)變量值
var e = event || window.event; //標(biāo)準(zhǔn)化事件對(duì)象
if(e.pageX || e.pageY){ //獲取鼠標(biāo)指針的當(dāng)前坐標(biāo)值
posX = e.pageX;
posY = e.pageY;
}
else if(e.clientX |丨 e.clientY){
posX = e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
posY = e.clientY + document.documentElement.scrollTop + document.body.scrollTop;
}
o.style.position = "absolute"; //定義當(dāng)前對(duì)象為絕對(duì)定位
o.style.top = (posY + y) + "px"; //用鼠標(biāo)指針的y軸坐標(biāo)和傳入偏移值設(shè)置對(duì)象y軸坐標(biāo)
o.style.left = (posX + x) + "px"; //用鼠標(biāo)指針的x軸坐標(biāo)和傳入偏移值設(shè)置對(duì)象x軸坐標(biāo)
}
下面為document對(duì)象注冊(cè)鼠標(biāo)移動(dòng)事件處理函數(shù),并傳入鼠標(biāo)定位封裝函數(shù),傳入的對(duì)象為<div>元素,設(shè)置其位置向鼠標(biāo)指針右下方偏移(10,20)的距離??紤]到DOM事件模型通過(guò)參數(shù)形式傳遞事件對(duì)象,所以不要忘記在調(diào)用函數(shù)中還要傳遞事件對(duì)象。
<div id="divl">鼠標(biāo)跟隨</div>
<script>
var divl = document.getElementByld("divl");
document.onmousemove = function(event){
pos(divl, 10, 20,event);
}
</script>
點(diǎn)擊加載更多評(píng)論>>