JavaScript offsetLeft
理解屬性,可以從它的名稱入手,在一定程度上可以體現它的功能。
offsetLeft是合成詞,由如下兩個單詞構成:
(1).offset:翻譯成漢語具有偏移量的意思。
(2).left:翻譯成漢語具有左側的意思。
可以猜測屬性功能與元素左側方位的偏移量相關,既然是偏移量,必然有一個參照物。
事實也是如此,offsetLeft屬性返回元素左側距離參照元素左邊界偏移量。
參照元素是當前元素offsetParent屬性返回的元素節點。
圖示如下:
關於offsetParent用法參閱JavaScript offsetParent一章節。
特別說明:
(1).offsetLeft屬性返回值是一個數字(預設單位是畫素)。
(2).只讀屬性,不能為其賦值。
語法結構:
[JavaScript] 純文字檢視 複製程式碼let num=dom.offsetLeft
瀏覽器支援:
(1).IE瀏覽器支援此屬性。
(2).edge瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).opera瀏覽器支援此屬性。
(5).火狐瀏覽器支援此屬性。
(6).safria瀏覽器支援此屬性。
特別說明:在IE7有一點相容問題,由於此瀏覽器過於古老,本文不做介紹。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{margin:0px;padding:0px;} body{padding:50px;margin:50px;} #main{width:300px;height:300px;background:red;margin:20px;} #box{width:200px;height:200px;background:blue;} #inner{ width:100px; height:100px; line-height:100px; background:green; text-align:center; } </style> <script> window.onload=function(){ let oinner=document.getElementById("inner"); oinner.innerHTML=oinner.offsetLeft; } </script> </head> <body> <div id="main"> <div id="box"> <div id="inner"></div> </div> </div> </body> </html>
上述程式碼可以獲取inner元素的offsetLeft屬性值。
確定偏移參考元素inner.offsetParent是關鍵,規則如下:
(1).如果inner具有定祖先元素,那麼offsetParent返回值是第一個定位元素。
(2).如果inner沒有定位祖先元素,那麼offsetParent返回值是body。
程式碼中,inner並沒有定位的祖先元素,那麼offsetParent返回值是body元素。
offsetLeft的返回值就是inner元素左側距離body左邊界的尺寸:
body的左外邊距 + body的左內邊距 + main的左外邊距,等於120px。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{margin:0px;padding:0px;} body{padding:50px;margin:50px;} #main{width:300px;height:300px;background:red;position:relative;} #box{width:200px;height:200px;background:blue;} #inner{ width:100px; height:100px; line-height:100px; background:green; text-align:center; margin:20px; } </style> <script> window.onload=function(){ let oinner=document.getElementById("inner"); oinner.innerHTML=oinner.offsetLeft; } </script> </head> <body> <div id="main"> <div id="box"> <div id="inner"></div> </div> </div> </body> </html>
main元素採用相對定位,那麼inner元素offsetParent屬性返回值是main元素物件。
也就是inner元素偏移是以main元素為參考物件,最終結果是inner元素的左外邊距20px。
相關文章
- JavaScript屬性中的offsetLeft、offsetWidth、clientWidth、scrollLeft、scrollWidth、innerWidJavaScriptclient
- offsetParent、offsetLeft/offsetTop深度剖析
- offsetLeft offsetTop // DOM操作,之寫入內容
- CSS中 offsetLeft 與style.left 的區別CSS
- 蒙了嗎?offsetLeft、offsetWidth、scrollTop、scrollWidth、event.pageX
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- [Javascript] How javascript read the property?JavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- “This” is For JavaScriptJavaScript
- This in JavaScriptJavaScript
- JavaScript -"this"JavaScript
- JavaScriptJavaScript
- javascript ??JavaScript
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- [Javascript] Perform Set Operations using JavaScript Set MethodsJavaScriptORM
- javascript — == vs ===JavaScript
- JavaScript selectedIndexJavaScriptIndex
- JavaScript deleteCell()JavaScriptdelete
- JavaScript lastElementChildJavaScriptAST
- JavaScript hasAttribute()JavaScript
- JavaScript getAttributeNode()JavaScript
- JavaScript replaceChild()JavaScript
- JavaScript remove()JavaScriptREM
- JavaScript appendChild()JavaScriptAPP
- JavaScript deleteRow()JavaScriptdelete
- JavaScript clientYJavaScriptclient
- JavaScript之thisJavaScript
- JavaScript isFinite()JavaScript
- JavaScript toggle()JavaScript
- JavaScript Boolean()JavaScriptBoolean
- JavaScript escape()JavaScript
- JavaScript parseFloat()JavaScript
- JavaScript unescape()JavaScript
- JavaScript call()JavaScript
- JavaScript bind()JavaScript