您的位置:首页> 前端教程> JS教程
文章导航

JavaScript offsetLeft

2018-11-14 13:40| 作者: admin| 查看: 4332| 评论: 0|来自: 蚂蚁部落

理解属性,可以从它的名称入手,在一定程度上可以体现它的功能。

offsetLeft是合成词,由如下两个单词构成:

(1).offset:翻译成汉语具有偏移量的意思。

(2).left:翻译成汉语具有左侧的意思。

可以猜测属性功能与元素左侧方位的偏移量相关,既然是偏移量,必然有一个参照物。

事实也是如此,offsetLeft属性返回元素左侧距离参照元素左边界偏移量。

参照元素是当前元素offsetParent属性返回的元素节点。

图示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201812/10/151859na8bkjikzjdjsait.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

关于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。

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

最新评论

返回顶部