滑鼠事件的screenY,pageY,clientY,layerY,offsetY屬性詳解_javascript技巧
screenY
滑鼠相對於顯示器螢幕左上角的偏移
pageY
滑鼠相對於頁面左上角的偏移 (其數值不會受捲軸的影響)
IE9之下並不支援這個屬性
但是可以寫點程式碼計算。 jQuery中的實作:
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && original.clientX != null ) {
eventDoc = event.target.ownerDocument || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = original.clientX ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft||body&&body.clientLeft || 0 );
event.pageY = original.clientY ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop); }
滑鼠相對於瀏覽器視窗的偏移加上文件的捲軸隱藏的高度減去文件的clientTop.
這是IE8之下瀏覽器特有的文檔的偏移,即使設定html,body的padding和margin為0也不會影響其值。
在iE7下測試,得到
document.bocy.clientTop --> 0px document.body.clientLeft --> 0px
clientY
滑鼠相對於瀏覽器視窗左上角的偏移量
注意clientY和pageY的區別,clientY在頁面無捲軸的情況下值等同於pageY
----------------------------------分割------------ -----------------------------------
layerY
如果元素的position樣式不是預設的static,我們說這個元素具有定位屬性。
在目前觸發滑鼠事件的元素和它的祖先元素中找到最近的具有定位屬性的元素,計算滑鼠與其的偏移值,以找到元素的border的左上角的外交點作為相對點。如果找不到具有定位屬性的元素,那麼就相對於目前頁面計算偏移,此時等同於pageY。
IE9之下並不支援此屬性,但可以用其獨特的offsetY取代
offsetY
IE專有的屬性
offsetY和layerY的差異在於,前者的在計算偏移值時,相對於元素的border左上角的內交點,因此當滑鼠位於元素的border上時,偏移值是負值。 另外offsetY並不在乎觸發事件的元素是否有定位屬性,它總是相對於觸發事件的元素來計算偏移值。
鑑於layerY和offsetY的不同,要相容的使用二者要注意
1.觸發事件的元素一定要設定定位屬性。
2.在元素具有上邊框border-top的情況下,多一個border-top的寬度值在 layerY比offsetY的值。
//這裡的element.borderTopWidth必須是實際計算出來的元素的上邊框寬度。
var borderTopWidth = window.getComputedStyle ? window.getComputedStyle(element,null).borderTopWidth: element.currentStyle.borderTopWidth;
var offsetY = event.offsetY||(event.layerY borderTopWidth);
透過layerY和offsetY屬性,可以很方便的計算滑鼠相對於綁定滑鼠事件元素的偏移,這在某些時候非常有用。
這裡詳細說了滑鼠垂直方向的偏移屬性,水平方向的偏移類似,不再討論。
以上就是本文的全部內容了,希望大家能夠喜歡。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

深入探討console.log輸出差異的根源本文將分析一段代碼中console.log函數輸出結果的差異,並解釋其背後的原因。 �...
