JS中的offsetLeft属性具体有啥用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中的offsetLeft属性具体有啥用?相关的知识,希望对你有一定的参考价值。
可以判断一个物体的跟document的左边距离,也就是浏览器左边缘。写一个div 获取这个div之后alert(你的div.offsetLeft)就可以距离浏览器左边的距离。
offset不单单只有Left 还有offsetTop offsetWidth offsetHeight 都是JS里很有用的属性。(PS:此属性当父元素没有position时有效,有父元素时将是判断距离父元素的距离)。
扩展资料:
javascript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
Javascript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey解译过的指令暂存,以提高性能,称为实时编译)。
但由于V8的核心部分多数用Javascript撰写(而SpiderMonkey是用C++),因此在不同的测试上,两者性能互有优劣。与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。
参考资料来源:百度百科-javascript
参考技术A 可以判断一个物体的跟document的左边距离,也就是浏览器左边缘。比如你写一个div 获取这个div之后alert(你的div.offsetLeft)就可以看到他现在距离浏览器左边的距离。当然你也可以用他给对象赋值,offset不单单只有Left 还有offsetTop offsetWidth offsetHeight 都是JS里很有用的属性。(PS:此属性当父元素没有position时有效,有父元素时将是判断距离父元素的距离)本回答被提问者采纳 参考技术B offsetLeft 是距离上级父亲的盒子的左边距,如果父级元素没有定位,则距离document的左边距!这里说的父级元素并不一定非要是亲生的父级元素,可以一直向上追溯到有定位的父级元素!node.js 中的 module.parent 有啥用?如何引用 require()ing 模块?
【中文标题】node.js 中的 module.parent 有啥用?如何引用 require()ing 模块?【英文标题】:What is the use of module.parent in node.js? How can I refer to the require()ing module?node.js 中的 module.parent 有什么用?如何引用 require()ing 模块? 【发布时间】:2012-11-19 01:42:07 【问题描述】:我查看了node.js module 文档,并注意到每个模块都有一个属性-module.parent
。我尝试使用它,但被模块缓存烧毁了 - module.parent
似乎只出现在 首先需要()的模块,与当前上下文无关。
那么它的用途是什么?有没有其他方法可以让我获得对 current require()ing 模块的引用?现在我将模块包装在一个函数中,因此它被称为:
require("mylibrary")(module)
但这似乎不是最理想的。
【问题讨论】:
【参考方案1】:“父”是导致脚本被解释(和缓存)的模块,如果有的话:
// $ node foo.js
console.log(module.parent); // `null`
// require('./foo')
console.log(module.parent); // ` ... `
您所期待的是 Node 不会为您保留的“调用者”。为此,您需要将当前使用的导出函数作为值的闭包。
【讨论】:
添加到这个答案......我想(没有尝试过)这可能是模块可以确定它是否通过命令行“独立”运行的一种方式,而不是作为更大应用程序的一部分。我们有一些类似 rake 的模块,它们可以在这两种上下文中工作,但根据上下文的不同表现略有不同(例如,它们记录消息或发出事件的方式可能不同)。但是,我们使用不同的方法来确定上下文:if(require.main === module) /* I'm a standalone module */
。【参考方案2】:
有一个解决方法。 Node 在完成加载之前将一个模块添加到模块缓存中。这意味着模块可以在加载时从模块缓存中删除自己!然后每次模块被require
'd 加载一个新的模块实例。
Magic.js
console.log('Required by ' + module.parent.filename);
delete require.cache[__filename];
Module1.js
//prints "Required by Module1.js"
require('./Magic');
Module2.js
//prints "Required by Module2.js"
require('./Magic');
当然,这样做的副作用是您的模块不再是单例的,因此您必须在编码Magic.js
时牢记这一点。如果您需要存储全局数据,您可以始终将其保存在一个不会从缓存中删除自身的 require() 模块中。
【讨论】:
天才!对于工具和库(如记录器)而言,这似乎是一种容易被忽视的上下文感知集成方法。 Deleterequire.cache
在需要链接模块方面帮了我很多忙!谢谢!以上是关于JS中的offsetLeft属性具体有啥用?的主要内容,如果未能解决你的问题,请参考以下文章
node.js 中的 module.parent 有啥用?如何引用 require()ing 模块?