JavaScript offsetX 屬性

admin發表於2019-04-09

實際應用中經常需要獲取滑鼠指標的座標,比如在瀏覽器客戶區中的座標,在整個文件中的座標。

隨著版本的更新,實現上述類似功能越來越方便,因為JavaScript已經內建對應屬性:

(1).獲取滑鼠指標在客戶區中的座標可以參閱JavaScript clientX 屬性一章節。

(2).獲取滑鼠指標在整個文件中的座標可以參閱JavaScript pageX 屬性一章節。

有時候也需要獲取滑鼠指標在指定元素中的座標,此需求引出本文的主題offsetX屬性。

此屬性屬於事件物件,關於事件物件更多內容可以參閱JavaScript 事件物件一章節。

理解此屬性可以從其名稱入手,offsetX由offset與x合成,offset翻譯成漢語具有"偏移量"的意思,x表示橫座標。

那麼有理由推斷,此屬性用於獲取滑鼠指標在指定元素x軸方向的偏移量,也就是在x軸的座標,事實也是如此。

特別說明:此屬性當前處於實現階段,但是瀏覽器支援度很不錯。

下面首先介紹一下此屬性所處的座標系,圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/09/210109i1bghh7ij94j1z9j.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述是一個簡單的座標系示意圖,簡單說明如下:

(1).灰色的是一個HTML元素,我們要獲取滑鼠指標在此元素中的x軸座標。

(2).元素的左上角是座標系的原點(0,0)位置,橫向為x軸,縱向為y軸。

(3).與數學概念上的座標系不同,y軸向下為正,向上為負,這一點要注意一下。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
event.offsetX

瀏覽器支援:

(1).IE瀏覽器支援此屬性。

(2).edge瀏覽器支援此屬性。

(3).火狐瀏覽器支援此屬性。

(4).Opera瀏覽器支援此屬性。

(5).谷歌瀏覽器支援此屬性。

(6).safria瀏覽器支援此屬性。

例項程式碼:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#ant{
  width:200px;
  height:200px;
  background-color:#639;
  margin:0px auto;
}
#zuobiao{
  width:150px;
  margin:0px auto;
}
</style>
<script>
window.onload=function(){
  let odiv = document.getElementById("ant");
  let zuobiao=document.getElementById("zuobiao");
  odiv.onmousemove = function (ev) {
    zuobiao.innerHTML="X:"+ev.offsetX+" Y:"+ev.offsetY;
  }
}
</script>
</head>
<body>
<div id="ant"></div>
<div id="zuobiao"></div>
</body>
</html>

上述程式碼對offsetX屬性進行了簡單的演示,與此屬性相對應的是offsetY屬性。

下面對上述程式碼進行一下簡單註釋說明:

(1).為紫色div元素註冊mousemove事件處理函式,只要滑鼠移動就會觸發此事件,進而執行事件處理函式。

(2).在事件處理函式中,將當前滑鼠指標在div元素中的座標寫入id屬性值為zuobiao的div。

(3).於是,只要滑鼠在紫色div中移動,那麼就會實時將滑鼠指標座標寫入id屬性值為zuobiao的div。

相關閱讀:

(1).mousemove事件可以參閱JavaScript mousemove 事件一章節。

(2).innerHTML可以參閱JavaScript innerHTML一章節。

相關文章