91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript怎么獲取指針的位置

發布時間:2021-10-25 16:25:15 來源:億速云 閱讀:198 作者:iii 欄目:開發技術

這篇文章主要講解了“javascript怎么獲取指針的位置”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“javascript怎么獲取指針的位置”吧!

javascript獲取指針的位置的方法:使用事件對象的pageX和pageY,或者clientX和clientY屬性,并且配合scrollLeft和scrollTop屬性,這樣就可以計算出指針的位置了。

javascript怎么獲取指針的位置

本文操作環境:windows10系統、javascript 1.8.5、thinkpad t480電腦。

要想獲取指針在頁面中的位置,可以使用事件對象的pageX和pageY,或者是 clientX 和 clientY(兼容 IE)屬性,同時還需要配合 scrollLeft 和 scrollTop 屬性,這樣就可以計算出鼠標指針在頁面中的位置了。

//獲取鼠標指針的頁面位置

//參數:e表示當前事件對象

//返回值:返回鼠標相對頁面的坐標,對象格式(x,y)

function getMP (e) {

    var e = e || window.event;

    return {

        x : e.pageX || e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft),

        y : e.pageY || e.clientY + (document.documentElement.scrollTop || document.body.scrollTop)

    }

}

pageX 和 pageY 事件屬性不被 IE 瀏覽器支持,而 clientX 和 clientY 事件屬性又不被 Safari 瀏覽器支持,因此可以混合使用它們以兼容不同瀏覽器。對于怪異模式來說,body 元素代表頁面區域,而 html 元素被隱藏,但是標準模式以 html 元素代表頁面區域,而 body 元素僅是一個獨立的頁面元素,所以需要兼容這兩種解析方式。

下面示例演示了如何調用上面擴展函數 getMP() 捕獲當前鼠標指針在文檔中的位置。

<body >
    <textarea id="t" cols="15" rows="4" ></textarea>
</body>
<script>
    var t = document.getElementById("t");
    document.onmousemove = function(e){
        var m = getMP(e);
        t.value ="mouseX = " + m.x  + "\n" + "mouseY = " + m.y
    }
</script>

演示效果如下:

javascript怎么獲取指針的位置

獲取指針的相對位置

使用 offsetX 和 offsetY 或者 layerX 和 layerY 可以獲取鼠標指針相對定位包含框的偏移位置。如果使用 offsetLeft 和 offsetTop 屬性獲取元素在定位包含框中的偏移坐標,然后使用 layerx 屬性值減去 offsetLeft 屬性值,使用 layery 屬性值減去 offsetTop 屬性值,即可得到鼠標指針在元素內部的位置。

//獲取鼠標指針在元素內的位置

//參數:e表示當前事件對象,o表示當前元素

//返回值:返回相對坐標對象

function getME (e, o) {

    var e = e || window.event;

    return {

        x : e.offsetX || (e.layerX - o.offsetLeft),

        y : e.offsetY || (e.layerY - o.offsetTop)

    }

}

在實踐中上面函數存在以下兩個問題:

  • Mozilla 類型和 Safari 瀏覽器以元素邊框外壁的左上角為參照點。

  • 其他瀏覽器則是以元素邊框內壁的左上角為坐標原點。

考慮到邊框對鼠標位置的影響,當元素邊框很寬時,必須考慮如何消除邊框對于鼠標位置的影響。但是,由于邊框樣式不同,它存在 3 像素的默認寬度,為獲取元素的邊框實際寬度帶來了麻煩。需要設置更多的條件,來判斷當前元素的邊框寬度。

示例

完善后的獲取鼠標指針在元素內的位置擴展函數如下:

//完善獲取鼠標指針在元素內的位置

//參數:e表示當前事件對象,o表示當前元素

//返回值:返回鼠標相對元素的坐標位置,其中x表示x軸偏移距離,y表示y軸偏移距離

function getME(e, o){

    var e = e || window.event;

    //獲取元素左側邊框的寬度

    //調用getStyle()擴展函數獲取邊框樣式值,并嘗試轉換為數值,如果轉換成功,則賦值。

    //否則判斷是否定義了邊框樣式,如果定義邊框樣式,且值不為none,則說明邊框寬度為默認值,即為3像素。

    //如果沒有定義邊框樣式,且寬度值為auto,則說明邊框寬度為0

    var bl = parseInt(getStyle(o, "borderLeftWidth")) || ((o.style.borderLeftStyle && o.style.borderLeftStyle != "none" )? 3 : 0);

    //獲取元素頂部邊框的寬度,設計思路與獲取左側邊框方法相同

    var bt = parseInt(getStyle(o, "borderTopWidth")) || ((o.style.borderTopStyle && o.style.borderTopStyle !="none" ) ? 3 : 0);

    var x = e.offsetX || (e.layerX - o.offsetLeft - bl);  // 一般瀏覽器下鼠標偏移值

    //兼容Mozilla類型瀏覽器,減去邊框寬度

    var y = e.offsetY || (e.layerY - o.offsetTop - bt); // 一般瀏覽器下鼠標偏移值

    //兼容Mozilla類型瀏覽器,減去邊框寬度

    var u = navigator.userAgent; // 獲取瀏覽器的用戶數據

    if( (u.indexOf("KHTML") > - 1) ||(u.indexOf("Konqueror") > - 1) || (u.indexOf("AppleWebKit") > - 1)

    ){ // 如果是Safari瀏覽器,則減去邊框的影響

        x -= bl; y -= bt;

    } return { // 返回兼容不同瀏覽器的鼠標位置對象,以元素邊框內壁左上角為定位原點

        x : x, y : y

    }  

}

演示效果如下:

javascript怎么獲取指針的位置

感謝各位的閱讀,以上就是“javascript怎么獲取指針的位置”的內容了,經過本文的學習后,相信大家對javascript怎么獲取指針的位置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

分宜县| 江北区| 安宁市| 合川市| 九龙县| 尼木县| 宣汉县| 贵港市| 宜章县| 兴山县| 徐州市| 开原市| 元朗区| 巨野县| 内丘县| 赫章县| 鄂伦春自治旗| 开阳县| 怀柔区| 陆良县| 康保县| 汝城县| 吴旗县| 鄂伦春自治旗| 曲水县| 白沙| 武邑县| 莱西市| 宜春市| 桃江县| 石台县| 铁力市| 额尔古纳市| 建阳市| 上虞市| 紫阳县| 洪江市| 太谷县| 德江县| 临猗县| 新蔡县|