js中offsetLeft与style.left的区别

这篇文章主要以offsetLeft和left为例,其它offsetWidth和width,offsetTop和top…..同理,区别性一样

首先简单介绍offsetLeft和left:

offsetLeft 获取的是 相对于父元素的左边距。
left 获取或设置 相对于具有定位属性的父元素的左边距。

1、最重要的区别 :style.left 只能位于 行内样式 ,就是定义在HTML里,不能在CSS里,   offsetLeft 不受限制。由于left需要定位,下面以width为例:

非行内样式:

<style>
    #demo {
      width: 100px;
    }
<style>

<div id="demo" ></div>

<script>
    var demo = document.getElementById("demo");
    console.log(demo.offsetWidth);
    console.log(demo.style.width);
</script>

浏览器控制台显示结果:

行内样式:

<div id="demo" style="width: 100px;"></div>

<script>
    var demo = document.getElementById("demo");
    console.log(demo.offsetWidth);
    console.log(demo.style.width);
</script>

浏览器控制台显示结果:

2、offsetLeft  可以返回没有定位盒子的距离左侧的位置。 而 style.left 不可以,这一点可以参考 left定义 。 注意:只有定位的盒子才有 left right top bottom

3、offsetLeft 返回的是数字,而 style.left 返回的是字符串,除了数字外还带有单位:px。
如果需要对取得的值进行计算,那么offsetLeft可以直接进行运算。

对于style.left可以使用parseInt

例如:style.left = 300px   我们知道 parseInt(300px)=300.
parseInt(style.left) + parseInt(style.left) = 600.

4、offsetLeft 只读,而 style.left 可读写。如果需要改变div的值,可以对style.left给值。 我是这么理解的:offsetLeft是定值,style.left是变化值,利用这一点可以做缓动特效。

offsetLeft:

<script>
   var demo = document.getElementById("demo");
   demo.offsetLeft = 300;
</script>

控制台:

style.left:

<script>
   var demo = document.getElementById("demo");
   demo.style.left = "300px";
</script>

控制台:

时间: 2024-09-25 21:32:15

js中offsetLeft与style.left的区别的相关文章

window.setInterval()方法的定义和用法及offsetLeft与style.left的区别_javascript技巧

定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数. 提示: 1000 毫秒= 1 秒. 语法 setInterval(code,millisec,lang) 参数 描述 code 必需.要调用的函数或要执行的代码串. millisec 必须.周

node.js中的定时器nextTick()和setImmediate()区别分析_node.js

1.node中使用定时器的问题在于,它并非精确的.譬如setTimeout()设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms,再次轮到定时器时,已经耽误了4ms. 好了node中的定时器就简单的讲这么多. 2.看代码: 复制代码 代码如下: process.nextTick(function(){     console.log("延迟执行"); }); console.log("正常执行1"); console.log("正常执行2

学习vue.js中class与style绑定_javascript技巧

关于vue.js中class与style绑定的练习代码,分享给大家,供大家参考: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vuejs中Class与Style 绑定</title> <link rel="stylesheet" href="css/vu

js中不同的height, top的区别对比_基础知识

每次看到js中的 clientHeight(clientTop), offsetHeight(offsetTop),scrollHeight(scrollTop)就头大,根本分不清这几种的区别,然而碰到这些已经不 值一两次了,然后每次都要查看一下各自的区别,才能决定使用哪个. 本篇主要以chrome为准,可能各个浏览器之间还是有一些区别,但很多自己还未真正遇到过,还不是很清楚,等以后碰到了类似的兼容性问题,再记录到这里,这次就chrome浏览器中各个属性的区别做个记录,以方便以后的查看 一 cl

Node.js中Process.nextTick()和setImmediate()的区别

一.Webstrom使用node.js IDE的问题 在区别这两个函数之前来说一下Webstrom使用node.js IDE的问题,在配置Node.js的IDE了,但setImmediate().require等这些node.js中内置的函数时并不会有提示,要解决这个问题只要设置一下Webstrom,File---->Setting---->Languages&Frameworks------>Node.js and NPM中的Node.js core Library is no

一道优雅面试题分析js中fn()和return fn()的区别_javascript技巧

在js中,经常会遇到在函数里调用其它函数的情况,这时候会有 fn() 这种调用方式,还有一种是 return fn() 这种调用方式,一些初学者经常会被这两种方式给绕晕了.这里用一个优雅的面试题来分析一下两种方式的不同之处.  var i = 0; function fn(){ i++; if(i < 10){ fn(); }else{ return i; } } var result = fn(); console.log(result); 这是一道隐藏了坑的面试题,看似很简单,大部分人可能想

JS中三目运算符和if else的区别分析与示例_javascript技巧

今天写了一个图片轮播的小demo,用到了判断 先试了一下if else,代码如下:   复制代码 代码如下: if(n >= count-1){ n =0; }else{ n ++; } 随后代码写完了,准备优化一下代码,将此段改成了三目运算符的写法   复制代码 代码如下: n = n >= (count-1) ? n=0 : n++ 结果完全不同 随后研究了一下这两者的区别,总结为一句话:三目运算有返回值,if else没有返回值 做了如下测试:   复制代码 代码如下: var n=1;

JS中attr和prop属性的区别以及优先选择示例介绍_基础知识

相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和properties).只是,window或document中使用.attr()方法在jQuery1.6之前不能正常运行,因为window和document中不能有attributes.prop应运而生了. 既然我们想知道他们两的区别,最好就看看他们的源代码,不要被代码长度所吓到,我们只看关键的几句: attr: function( elem, name, value, pass )

js中offsetLeft,offsetTop,offsetParent详解

为前端开发工程师,你确定真的理解offsetLeft,offsetTop以及offsetParent吗,今天小编在这里给大家详细说说这三个js的特性,当然前两个其特性是一样的,在这里我就只拿offsetLeft的说明. 1.offsetLeft/offsetTop 在页面任一元素的offsetLeft总是找到离其最近的已经定位的元素定位,如果没有,就根据根节点body定位,然后获取其left值例如  代码如下 复制代码 <div id="div2″> <div id="