两者比较重要的几点区别
一、最大区别在于offsetLeft
可以返回没有定位盒子的距离左侧的位置。
代码如下(此时父子盒子都不带有定位):
<head>
<style>
.out{
width: 100px;
height: 100px;
border: 10px solid ;
/*position: relative;*/
}
.in{
width: 50px;
height: 50px;
/*position: absolute;*/
background-color: #b4ff78;
}
</style>
</head>
<script>
onload = function () {
var div2 = document.getElementById("in")
console.log(div2.offsetLeft)
console.log(div2.style.left)
}
</script>
<body>
<div class="out" id="out">
<div class="in" id="in" style="left: 30px">
</div>
</div>
</body>
结果显示为:
显然offsetLeft
显示的是子盒子距离body
的距离,style.left
是距离父盒子的30px(行内式给定)。然后将注释的定位打开,然后将行内式中的style样式去掉,重新查看结果:
小结:
offsetLeft
如果父系盒子中都没有定位,以body为准。- style.left只能获取行内式,如果没有返回“”;
二、offsetLeft
返回的是数字,而 style.left
返回的是字符串,除了数字外还带有单位:px。
上图的结果显示前者为数字,后者则是带单位的字符串。
三、offsetLeft
只读,而 style.Left
可读写。(只读是获取值,可写是赋值)。
小结:
- 我们可以给style.left和style.top进行赋值操作。
- 而offsetLeft和offsetTop只能进行获取值。
四、如果没有给 HTML 元素指定过Left行内样式,则style.Left返回的是空字符串。
重点:style.left只能获取行内式,如果没有返回“”;