js获取元素的偏移量offset简单方法(必看)
发布时间 - 2026-01-11 02:11:00 点击率:次前言:以前一直是看别人写的,然后学习点东西,现在也把自己的学习记录下来,给大家一个学习的机会,欢迎大家多多评论和推荐哈,共同进步。竟然还有六个人关注我了 ,哈哈 开心。我会继续写下去的。。

null和undefined都代表没有,但是null是属性存在值不存在,undefined是连这个属性都不存在
//例如
document.parentNode//浏览器天生自带的一个属性:父亲节点的属性 null (因为一个页面中的document已经是最顶级元素了,它没有父亲)
document.parentnode//undefined (因为没有parentnode这个属性)
1、parentNode:父亲节点 HTML结构层级关系中的上一级元素
var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var center = document.getElementById('center');
center.parentNode //inner
2、offsetParent:父级参照物 在同一个平面中,最外层的元素是里面所有元素的父级参照物(和HTML层级结构没有必然的联系)
一般来说一个页面中所有元素的父级参照物都是body
document.body.offsetParent // null
想要改变父级参照物需要通过position定位来进行改变(absolute relative fixed 都可以进行改变 )
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
}
#outer{
width:180px;
height:180px;
margin:50px auto;
border:10px solid #000;
background:orange;
padding:50px;
}
#inner{
width:80px;
height:80px;
padding:50px;
border:10px solid #000;
background:green;
}
#center{
width:50px;
height:50px;
border:10px solid #000;
background:red;
}
</style>
</head>
<body>
<div id="outer">
<div id="inner">
<div id="center"></div>
</div>
</div>
<script>
var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var center = document.getElementById('center');
outer.style.position = "relative";//这样inner和center的参照物都是outer
center.offsetParent//outer
inner.offsetParent//outer
outer.offsetParent//body
outer.style.position = "relative";//
inner.style.position = "relative";
center.offsetParent//inner
inner.offsetParent//outer
outer.offsetParent//body
</script>
</body>
</html>
3、offsetTop/offsetLeft :当前元素(外边框)距离其父级参照物(内边框)的偏移距离
具体如下图所示:
下面是一个offset方法:等同于jQuery中的offset方法,实现获取页面中任意一个元素,距离body的偏移(包含左偏移和上偏移),不管当前元素的父级参照物是谁。获取的一个结果是一个对象{left:距离BODY的左偏移,top:距离BODY的上偏移}
在标准的IE8浏览器中,我们使用offsetLeft/offsetTop其实是把父级参照物的边框已经算在内了。所以我们不需要自己在单独加边框了
代码如下:
function offset(curEle){
var totalLeft = null,totalTop = null,par = curEle.offsetParent;
//首先加自己本身的左偏移和上偏移
totalLeft+=curEle.offsetLeft;
totalTop+=curEle.offsetTop
//只要没有找到body,我们就把父级参照物的边框和偏移也进行累加
while(par){
if(navigator.userAgent.indexOf("MSIE 8.0")===-1){
//累加父级参照物的边框
totalLeft+=par.clientLeft;
totalTop+=par.clientTop
}
//累加父级参照物本身的偏移
totalLeft+=par.offsetLeft;
totalTop+=par.offsetTop
par = par.offsetParent;
}
return{
left:totalLeft,
top:totalTop
}
}
console.log(offset(center).left)
以上这篇js获取元素的偏移量offset简单方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# js
# 获取元素偏移量
# js中offset
# client
# scroll 三大元素知识点总结
# MySQL查询中LIMIT的大offset导致性能低下浅析
# JS中offset和匀速动画详解
# 详解原生js实现offset方法
# JavaScript中offsetWidth的bug及解决方法
# div的offsetLeft与style.left区别
# JavaScript中style.left与offsetLeft的使用及区别详解
# window.setInterval()方法的定义和用法及offsetLeft与style.left
# springboot中如何实现kafa指定offset消费
# 给大家
# 都是
# 是一个
# 大家多多
# 自己的
# 我会
# 都不
# 不需要
# 就把
# 希望能
# 不存在
# 我了
# 所示
# 这篇
# 自带
# 没有找到
# 必看
# 小编
# 也把
# 如下图
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
青岛网站建设如何选择本地服务器?
MySQL查询结果复制到新表的方法(更新、插入)
Android 常见的图片加载框架详细介绍
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
如何生成腾讯云建站专用兑换码?
详解jQuery停止动画——stop()方法的使用
如何在香港服务器上快速搭建免备案网站?
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
JS实现鼠标移上去显示图片或微信二维码
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
中山网站制作网页,中山新生登记系统登记流程?
微信小程序 input输入框控件详解及实例(多种示例)
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
如何在宝塔面板创建新站点?
Android okhttputils现在进度显示实例代码
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
图册素材网站设计制作软件,图册的导出方式有几种?
Linux系统命令中screen命令详解
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
JavaScript如何实现类型判断_typeof和instanceof有什么区别
教你用AI将一段旋律扩展成一首完整的曲子
如何快速生成可下载的建站源码工具?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Android滚轮选择时间控件使用详解
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
利用JavaScript实现拖拽改变元素大小
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
详解jQuery中的事件
使用spring连接及操作mongodb3.0实例
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
轻松掌握MySQL函数中的last_insert_id()
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel如何生成URL和重定向?(路由助手函数)
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
历史网站制作软件,华为如何找回被删除的网站?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
如何用AI帮你把自己的生活经历写成一个有趣的故事?
打造顶配客厅影院,这份100寸电视推荐名单请查收
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?

