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示例)  网站制作壁纸教程视频,电脑壁纸网站?