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 】
相关推荐:
如何在腾讯云免费申请建站?
Laravel如何使用模型观察者?(Observer代码示例)
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
如何实现建站之星域名转发设置?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
如何批量查询域名的建站时间记录?
Swift中循环语句中的转移语句 break 和 continue
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Python进程池调度策略_任务分发说明【指导】
如何挑选高效建站主机与优质域名?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何快速生成ASP一键建站模板并优化安全性?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
如何自定义建站之星网站的导航菜单样式?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
免费视频制作网站,更新又快又好的免费电影网站?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel如何实现API版本控制_Laravel版本化API设计方案
零基础网站服务器架设实战:轻量应用与域名解析配置指南
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
如何在阿里云域名上完成建站全流程?
如何在Windows服务器上快速搭建网站?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
android nfc常用标签读取总结
Firefox Developer Edition开发者版本入口
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
实现点击下箭头变上箭头来回切换的两种方法【推荐】
千库网官网入口推荐 千库网设计创意平台入口
大同网页,大同瑞慈医院官网?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel如何自定义分页视图?(Pagination示例)
网站制作壁纸教程视频,电脑壁纸网站?

