久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

javascript怎樣獲取鼠標(biāo)位置

JS獲取鼠標(biāo)位置的方法:1、使用clientX和clientY屬性;2、使用offsetX和offsetY屬性;3、使用pageX和pageY屬性;4、使用screenX和screenY屬性;5、使用layerX和layerY屬性。

javascript怎樣獲取鼠標(biāo)位置

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

在 JavaScript中,當(dāng)事件發(fā)生時(shí),獲取鼠標(biāo)的位置是件很重要的事件。由于瀏覽器的不兼容性,不同瀏覽器分別在各自事件對象中定義了不同的屬性,說明如下表所示。這些屬性都是以像素值定義了鼠標(biāo)指針的坐標(biāo),但是由于它們參照的坐標(biāo)系不同,導(dǎo)致精確計(jì)算鼠標(biāo)的位置比較麻煩。

屬性及其兼容性
屬性 說明 兼容性
clientX 以瀏覽器窗口左上頂角為原點(diǎn),定位 x 軸坐標(biāo) 所有瀏覽器,不兼容 Safari
clientY 以瀏覽器窗口左上頂角為原點(diǎn),定位 y 軸坐標(biāo) 所有瀏覽器,不兼容 Safari
offsetX 以當(dāng)前事件的目標(biāo)對象左上頂角為原點(diǎn),定位 x 軸坐標(biāo) 所有瀏覽器,不兼容 Mozilla
offsetY 以當(dāng)前事件的目標(biāo)對象左上頂角為原點(diǎn),定位 y 軸坐標(biāo) 所有瀏覽器,不兼容 Mozilla
pageX 以 document 對象(即文檔窗口)左上頂角為原點(diǎn),定位 x 軸坐標(biāo) 所有瀏覽器,不兼容 IE
pageY 以 document 對象(即文檔窗口)左上頂角為原點(diǎn),定位 y 軸坐標(biāo) 所有瀏覽器,不兼容 IE
screenX 計(jì)算機(jī)屏幕左上頂角為原點(diǎn),定位 x 軸坐標(biāo) 所有瀏覽器
screenY 計(jì)算機(jī)屏幕左上頂角為原點(diǎn),定位 y 軸坐標(biāo) 所有瀏覽器
layerX 最近的絕對定位的父元素(如果沒有,則為 document 對象)左上頂角為元素,定位 x 軸坐標(biāo) Mozilla 和 Safari
layerY 最近的絕對定位的父元素(如果沒有,則為 document 對象)左上頂角為元素,定位 y 軸坐標(biāo) Mozilla 和 Safari

示例1

下面介紹如何配合使用多種鼠標(biāo)坐標(biāo)屬性,以實(shí)現(xiàn)兼容不同瀏覽器的鼠標(biāo)定位設(shè)計(jì)方案。

首先,來看看 screenX 和 screenY 屬性。這兩個(gè)屬性獲得了所有瀏覽器的支持,應(yīng)該說是最優(yōu)選用屬性,但是它們的坐標(biāo)系時(shí)計(jì)算機(jī)屏幕,也就是說,以計(jì)算機(jī)屏幕左上角為定位原點(diǎn)。這對于以瀏覽器窗口為活動空間的網(wǎng)頁來說沒有任何價(jià)值。因?yàn)椴煌钠聊环直媛剩煌臑g覽器窗口大小和位置,都使得在網(wǎng)頁中定位鼠標(biāo)成為一件很困難的事情。

其次,如果以 document 對象為坐標(biāo)系,則可以考慮選用 pageX 和 pageY 屬性實(shí)現(xiàn)在瀏覽器窗口中進(jìn)行定位。這對于設(shè)計(jì)鼠標(biāo)跟隨來說是一個(gè)好主意,因?yàn)楦S元素一般都以絕對定位的方式在瀏覽器窗口中移動,在 mousemove 事件處理函數(shù)中把 pageX 和 pageY 屬性值傳遞給跟絕對定位元素的 top 和 left樣式屬性即可。

IE 事件模型不支持上面的屬性,為此還需尋求兼容 IE 的方法。而看 clientX 和 clientY 屬性是以 window 對象為坐標(biāo)系,且 IE 事件模型支持它們,可以選用它們。不過考慮 window 等對象可能出現(xiàn)的滾動條偏移量,所以還應(yīng)加上相對于 window 對象的頁面滾動的偏移量。

復(fù)制純文本復(fù)制
var posX = 0, posY = 0; var event = event || window.event; if (event.pageX || event.pageY) {     posX = event.pageX;     posY = event.pageY; } else if (event.clientX || event.clientY) {     posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;     posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop; }
var posX = 0, posY = 0; var event = event || window.event; if (event.pageX || event.pageY) {     posX = event.pageX;     posY = event.pageY; } else if (event.clientX || event.clientY) {     posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;     posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop; }

在上面代碼中,先檢測 pageX 和 pageY 屬性是否存在,如果存在則獲取它們的值;如果不存在,則檢測并獲取 clientX 和 clientY 屬性值,然后加上 document.documentElement 和 document.body 對象的 scrollLeft 和 scrollTop 屬性值,這樣在不同瀏覽器中就獲得了相同的坐標(biāo)值。

示例2

封裝鼠標(biāo)定位代碼。設(shè)計(jì)思路:能夠根據(jù)傳遞的具體對象,以及相對鼠標(biāo)指針的偏移量,命令該對象能夠跟隨水保移動。

先定義一個(gè)封裝函數(shù),設(shè)計(jì)函數(shù)傳入?yún)?shù)為對象引用指針、相對鼠標(biāo)指針的偏移距離,以及事件對象。然后封裝函數(shù)能夠根據(jù)事件對象獲取鼠標(biāo)的坐標(biāo)值,并設(shè)置該對象為絕對定位,絕對定位的值為鼠標(biāo)指針當(dāng)前的坐標(biāo)值。

封裝代碼如下:

復(fù)制純文本復(fù)制
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)化事件對象     if (e.pageX || e.pageY) {  //獲取鼠標(biāo)指針的當(dāng)前坐標(biāo)值         posX = e.pageX;         posY = e.pageY;     } else if (e.clientX || e.clientY) {         posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;         posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop;     }     o.style.position = "absolute";  //定義當(dāng)前對象為絕對定位     o.style.top = (posY + y) + "px";  //用鼠標(biāo)指針的y軸坐標(biāo)和傳入偏移值設(shè)置對象y軸坐標(biāo)     o.style.left = (posX + x) + "px";  //用鼠標(biāo)指針的x軸坐標(biāo)和傳入偏移值設(shè)置對象x軸坐標(biāo) }
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)化事件對象     if (e.pageX || e.pageY) {  //獲取鼠標(biāo)指針的當(dāng)前坐標(biāo)值         posX = e.pageX;         posY = e.pageY;     } else if (e.clientX || e.clientY) {         posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;         posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop;     }     o.style.position = "absolute";  //定義當(dāng)前對象為絕對定位     o.style.top = (posY + y) + "px";  //用鼠標(biāo)指針的y軸坐標(biāo)和傳入偏移值設(shè)置對象y軸坐標(biāo)     o.style.left = (posX + x) + "px";  //用鼠標(biāo)指針的x軸坐標(biāo)和傳入偏移值設(shè)置對象x軸坐標(biāo) }

下面測試封裝代碼。為 document 對象注冊鼠標(biāo)移動事件處理函數(shù),并傳入鼠標(biāo)定位封裝函數(shù),傳入的對象為 <div> 元素,設(shè)置其位置向鼠標(biāo)指針右下方偏移(10,20)的距離。考慮到 DOM 事件模型通過參數(shù)形式傳遞事件對象,所以不要忘記在調(diào)用函數(shù)中還要傳遞事件對象。

復(fù)制純文本復(fù)制
<div id="div1">鼠標(biāo)追隨</div> <script>     var div1 = document.getElementById("div1");     document.onmousemove = function (event) {         pos (div1, 10, 20, event);     } </script>
<div id="div1">鼠標(biāo)追隨</div> <script>     var div1 = document.getElementById("div1");     document.onmousemove = function (event) {         pos (div1, 10, 20, event);     } </script>

示例3

獲取鼠標(biāo)指針在元素內(nèi)的坐標(biāo)。使用 offsetX 和 offsetY 屬性可以實(shí)現(xiàn)這樣的目標(biāo),但是 Mozilla 瀏覽器不支持。可以選用 layerX 和 layerY 屬性來兼容 Mozilla 瀏覽器。

設(shè)計(jì)代碼如下:

復(fù)制純文本復(fù)制
var event = event || window.event; if (event.offsetX || event.offsetY) {  //適用非Mozilla瀏覽器     x = event.offsetX;     y = event.offsetY; } else if (event.layerX || event.layerY) {  //兼容Mozilla瀏覽器     x = event.layerX;     y = event.layerY; }
var event = event || window.event; if (event.offsetX || event.offsetY) {  //適用非Mozilla瀏覽器     x = event.offsetX;     y = event.offsetY; } else if (event.layerX || event.layerY) {  //兼容Mozilla瀏覽器     x = event.layerX;     y = event.layerY; }

但是,layerX 和 layerY 屬性是以絕對定位的父元素為參照物,而不是元素自身。如果沒有絕對定位的父元素,則會以 document 對象為參照物。為此,可以通過腳本動態(tài)添加或者手動添加的方式,設(shè)計(jì)在元素的外層包圍一個(gè)絕對定位的父元素,這樣可以解決瀏覽器兼容問題。考慮到元素之間的距離所造成的誤差,可以適當(dāng)減去 1 個(gè)或幾個(gè)像素的偏移量。

完整設(shè)計(jì)代碼如下:

復(fù)制純文本復(fù)制
<input type="text" id="text" /> <span style="position:absolute;">     <div id="div1" style="width:200px;height:160px;border:solid 1px red;">鼠標(biāo)跟隨</div> </span> <script>     var t = document.getElementById("text");     var div1 = document.getElementById("div1");     div1.onmousemove = function (event) {         var event = event || window.event;  //標(biāo)準(zhǔn)化事件對象         if (event.offsetX || event.offsetY) {             t.value = event.offsetX + "" + event.offsetY;         } else if (event.layerX || event.layerY) {             t.value = (event.layerX-1) + "" + (event.layerY-1);         }     } </script>
<input type="text" id="text" /> <span style="position:absolute;">     <div id="div1" style="width:200px;height:160px;border:solid 1px red;">鼠標(biāo)跟隨</div> </span> <script>     var t = document.getElementById("text");     var div1 = document.getElementById("div1");     div1.onmousemove = function (event) {         var event = event || window.event;  //標(biāo)準(zhǔn)化事件對象         if (event.offsetX || event.offsetY) {             t.value = event.offsetX + "" + event.offsetY;         } else if (event.layerX || event.layerY) {             t.value = (event.layerX-1) + "" + (event.layerY-1);         }     } </script>

這種做法能夠解決在元素內(nèi)部定位鼠標(biāo)指針的問題。但是,由于在元素外面包裹了一個(gè)絕對定位的元素,會破壞整個(gè)頁面的結(jié)構(gòu)布局。在確保這種人為方式不會導(dǎo)致結(jié)構(gòu)布局混亂的前提下,可以考慮選用這種方法。

【推薦學(xué)習(xí):javascript高級教程】

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲夜间福利| 国产精品一区二区三区四区在线观看| 亚洲青青久久| 中日韩男男gay无套| 日韩中文字幕av电影| 日韩视频免费| 天堂成人免费av电影一区 | а√在线中文在线新版| 国产精品蜜月aⅴ在线| 国产精品777777在线播放 | 视频一区视频二区在线观看| 亚洲香蕉视频| 91亚洲国产| 狠狠久久伊人| 欧美特黄视频| 免费看日韩精品| 免费观看在线综合色| 国产一区成人| 欧美中文日韩| 亚洲视频国产| 久久国产精品色av免费看| 国产精品一区二区三区www| 美女久久99| 国产精品综合| 久久激情网站| 精品三级av| 日韩影院精彩在线| 国产日韩一区| 精品精品久久| 午夜精品网站| 精品国产欧美日韩| 精精国产xxxx视频在线播放| 国产精品扒开腿做爽爽爽软件| 麻豆91精品视频| 福利一区和二区| 久久一级电影| 亚洲一区有码| 里番精品3d一二三区| 日韩精品首页| 免费看日韩精品| 久久字幕精品一区| 不卡一区综合视频| 国产亚洲观看| 欧美国产另类| 久久蜜桃精品| 日韩欧美久久| 国产精品二区不卡| 亚洲在线电影| 国产精品蜜月aⅴ在线| 色婷婷狠狠五月综合天色拍| 男女男精品网站| 蜜桃精品视频| 午夜电影亚洲| 国产精品探花在线观看| 久久精品成人| 亚洲ww精品| 欧美二三四区| 青草综合视频| 精品国模一区二区三区| 亚洲三级视频| 日韩中文在线播放| 日本91福利区| 久久久成人网| 久久国内精品视频| 久久婷婷丁香| 国产欧美69| 性色一区二区| 久久精品一区二区三区中文字幕| 美女久久久久久 | 亚洲欧美日韩国产一区| 欧美二三四区| 999精品色在线播放| 99热免费精品| 国产日韩欧美一区在线| 国产精品一区二区三区av麻| 精品亚洲自拍| 激情久久五月| 国产亚洲电影| 欧美亚洲色图校园春色| 美女高潮久久久| 日韩欧美中文字幕一区二区三区 | 国产一区2区| 欧美精品中文| 精品福利久久久| 亚洲激情二区| 国产aⅴ精品一区二区三区久久| 丝袜亚洲精品中文字幕一区| 深夜福利视频一区二区| 日韩精品乱码av一区二区| 亚洲天堂一区二区| 国产精品久久久久久久久免费高清| 日韩国产在线观看一区| 国产精品扒开腿做爽爽爽软件| 香蕉视频成人在线观看| 亚洲天堂资源| 福利片在线一区二区| 日韩一区二区中文| 亚洲91在线| 色天使综合视频| 伊人久久一区| 91亚洲无吗| 久久av一区二区三区| 成人高清一区| 国产欧美日韩视频在线| 中文字幕一区二区三区四区久久| 久久夜夜操妹子| 欧美xxxx中国| 国产精品调教| 欧美日韩午夜| 日韩精品中文字幕吗一区二区| 国产视频亚洲| 五月天综合网站| 亚洲性视频h| 激情欧美国产欧美| 国产精品hd| 欧美欧美黄在线二区| 亚洲欧美一级| 亚洲精品免费观看| 久久亚洲影院| 亚洲深夜av| 羞羞答答国产精品www一本| 尹人成人综合网| 欧美91视频| 精品一区在线| 日韩午夜高潮| 丝袜美腿一区二区三区| 亚洲一区二区成人| 影院欧美亚洲| 一区免费视频| 五月婷婷亚洲| 99国产精品99久久久久久粉嫩| 欧美亚洲精品在线| 激情偷拍久久| 欧美日韩国产综合网| 日韩视频二区| 最新国产精品视频| 日本色综合中文字幕| 日韩高清中文字幕一区| 国产精品一区二区免费福利视频| 日本不卡中文字幕| 久久久久亚洲精品中文字幕| 91看片一区| 午夜国产精品视频免费体验区| 亚洲色图国产| 天堂8中文在线最新版在线| 一本一道久久a久久精品蜜桃| 日韩欧美激情电影| 成人国产精品久久| 亚洲精品在线a| 亚洲女同中文字幕| 免费一区二区三区在线视频| 国产一区二区三区久久| 色婷婷狠狠五月综合天色拍| 国语对白精品一区二区| 中文字幕人成乱码在线观看| 久久福利精品| 亚洲精品伊人| 欧美日韩18| 精品国产一区二区三区av片| 国产精品亚洲欧美日韩一区在线| 久久精品国产99国产精品| 日韩电影免费网址| 狠狠干成人综合网| 少妇精品久久久一区二区三区| 国产精品久久久亚洲一区| 亚洲一级大片| 欧美三级精品| 成人影视亚洲图片在线| 久久狠狠久久| 蜜桃av一区二区| 一区福利视频| 青青国产精品| 成人av动漫在线观看| 欧美一级专区| 五月激情久久| 国产精品v日韩精品v欧美精品网站| 欧美日韩高清| 99综合视频| 日韩精品一二三区| 成人免费电影网址| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 久久亚洲美女| 午夜在线播放视频欧美| 免费国产自线拍一欧美视频| 蜜臀久久99精品久久久画质超高清| 亚洲主播在线| 青青在线精品| 日韩av福利| 成人精品亚洲| 日韩欧乱色一区二区三区在线| 日韩午夜精品| 亚州精品视频| 免费看黄色91| 国产精品久久久久av蜜臀| 亚洲精品美女| 精品一区二区三区免费看| 欧美精品一区二区久久| 国产欧美日韩在线一区二区| 欧美日韩一区二区综合| 国产日韩欧美一区二区三区在线观看|