原生JS获取元素的位置与尺寸实现方法

获取元素位置和尺寸信息是web开发中经常需要面对的问题。下面是一些原生JS获取元素位置和尺寸的方法。在示例中,我们将使用一个html文档和一个div元素作为示例。

获取元素位置

offsetTop和offsetLeft属性

在HTML文档中,每个元素都有offsetTop和offsetLeft属性,它们表示元素相对于其offsetParent(父元素)的顶部和左侧偏移量。

const div = document.getElementById('myDiv');
const top= div.offsetTop;  // 获取div相对于其offsetParent的上偏移量
const left = div.offsetLeft;  // 获取div相对于其offsetParent的左偏移量

getBoundingClientRect()方法

getBoundingClientRect()方法返回一个具有四个属性(left、top、right、bottom)的DOMRect对象,它表示元素的位置和大小。其中left和top属性表示元素相对于文档左上角(viewport)的位置。

const div = document.getElementById('myDiv');
const rect = div.getBoundingClientRect();
const top= rect.top;  // 获取div相对于文档左上角的上偏移量
const left = rect.left;  // 获取div相对于文档左上角的左偏移量

获取元素尺寸

offsetWidth和offsetHeight属性

在HTML文档中,每个元素都有offsetWidth和offsetHeight属性,它们表示元素的宽度和高度(包括元素的边框和滚动条)。

const div = document.getElementById('myDiv');
const width = div.offsetWidth;  // 获取div的宽度
const height = div.offsetHeight;  // 获取div的高度

scrollWidth和scrollHeight属性

scrollWidth和scrollHeight属性返回元素内容的宽度和高度,它们不包括元素的边框和滚动条。如果元素内容未超过可见区域,则scrollWidth和scrollHeight与offsetWidth和offsetHeight相同。

const div = document.getElementById('myDiv');
const width = div.scrollWidth;  // 获取div内容的宽度
const height = div.scrollHeight;  // 获取div内容的高度

示例说明

示例1:获取div元素的位置信息和尺寸信息,并在控制台输出

<div id="myDiv" style="width: 100px; height: 100px; position: absolute; top: 50px; left: 50px; border: 1px solid black;">
  myDiv
</div>

<button onclick="getPositionAndSize()">获取元素位置和尺寸</button>

<script>
function getPositionAndSize() {
  const div = document.getElementById('myDiv');

  // 获取位置信息
  const top = div.offsetTop;
  const left = div.offsetLeft;
  const rect = div.getBoundingClientRect();
  const viewTop = rect.top;
  const viewLeft = rect.left;

  // 获取尺寸信息
  const width = div.offsetWidth;
  const height = div.offsetHeight;
  const scrollWidth = div.scrollWidth;
  const scrollHeight = div.scrollHeight;

  console.log("Position: top: " + top + "px, left: " + left + "px, viewTop: " + viewTop + "px, viewLeft: " + viewLeft + "px");
  console.log("Size: width: " + width + "px, height: " + height + "px, scrollWidth: " + scrollWidth + "px, scrollHeight: " + scrollHeight + "px");
}
</script>

点击按钮后,将会在控制台输出div元素的位置信息和尺寸信息。

示例2:使用getBoundingClientRect()方法获取点击位置相对于文档左上角的位置信息

<div id="wrapper" style="width: 300px; height: 300px; position: absolute; top: 100px; left: 100px; border: 1px solid black;">
  <p style="font-size: 16px; line-height: 24px; margin: 0;">Click anywhere in the wrapper to get the position.</p>
</div>

<script>
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', function (event) {
  const rect = wrapper.getBoundingClientRect();
  const x = event.clientX - rect.left;
  const y = event.clientY - rect.top;
  console.log("Clicked at position x: " + x + "px, y: " + y + "px.");
});
</script>

当点击wrapper元素中的任意位置时,都会在控制台输出点击位置相对于文档左上角 的位置信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS获取元素的位置与尺寸实现方法 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】

    我会分步骤详细讲解JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】。这篇攻略包括以下几个部分: 碰撞检测概念 碰撞检测分类 包围盒检测算法 圆形包围盒检测示例1 圆形包围盒检测示例2 1. 碰撞检测概念 碰撞检测是指在程序执行过程中,检测两个或多个物体之间是否发生了碰撞。在游戏制作中,游戏对象之间的交互通常需要用到碰撞检测,例如玩家和游…

    JavaScript 2023年5月28日
    00
  • 教你用js截取字符串开头、结尾及两字符串之间的内容

    教你用JS截取字符串开头、结尾及两字符串之间的内容 在JS中,截取字符串是非常常见的一个操作,本文将为大家介绍如何用JS截取字符串的操作,并提供两个示例。 一、截取字符串的基本用法 JS提供了substr和slice两种方法来截取字符串,不同的是它们的参数使用方式不同。 1. substr 它接受两个参数,第一个参数是开始截取的位置,第二个参数是截取的长度。…

    JavaScript 2023年5月28日
    00
  • 上周方法病毒来源竟然为ad.pchome.net原来被挂马

    背景 近期有关“上周方法病毒来源竟然为ad.pchome.net原来被挂马”的消息引起了广泛关注。该事件中,许多用户访问了ad.pchome.net网站后,他们的电脑就被感染了这个叫做“上周方法”的恶意软件。 方法 如何避免这种恶意软件的感染,以下是一些防范方法供您参考: 1.更新系统和软件 恶意软件通常利用系统或软件的漏洞进行传播。因此,及时更新操作系统和…

    JavaScript 2023年6月11日
    00
  • 基于原生JavaScript实现SPA单页应用

    基于原生JavaScript实现SPA单页应用攻略 简介 单页应用(Single Page Application,SPA)是一种基于Web浏览器的应用程序,整个应用程序只有一个HTML文件,页面切换时通过ajax与后端进行数据交互,然后动态更新Dom元素,从而实现页面的切换。 原生JavaScript是指不依赖第三方框架或库,只使用纯JavaScript进…

    JavaScript 2023年6月11日
    00
  • JavaScript实现鼠标移动粒子跟随效果

    下面是讲解“JavaScript实现鼠标移动粒子跟随效果”的完整攻略。 确定目标 首先我们需要明确我们的目标:实现鼠标移动时页面上的粒子跟随鼠标移动。这种效果会增加页面的趣味性和互动性,让用户更有参与感。 分析思路 实现鼠标移动粒子跟随效果,需要做以下几个步骤: 创建画布和粒子; 监听鼠标移动事件; 计算鼠标和粒子之间的距离和角度; 将粒子移动到鼠标所在位置…

    JavaScript 2023年6月11日
    00
  • 使用JS操作文件(FileReader读取–node的fs)

    使用JS操作文件可以通过浏览器的FileReader API或Node.js的fs模块来实现。下面分别介绍这两种方式的实现方法。 使用FileReader读取文件 步骤 通过<input type=”file”>元素选择文件,获取文件的File对象 利用FileReader对象读取文件内容 将读取的文件内容显示到页面上 代码示例 <!DOC…

    JavaScript 2023年5月27日
    00
  • 文档对象模型DOM通俗讲解

    让我来详细讲解一下“文档对象模型DOM通俗讲解”的攻略。 什么是DOM? DOM,即文档对象模型,它把整个 HTML 或 XML 页面映射成一棵树形结构(DOM 树),树上的每个节点则代表页面中的一个元素,通过 DOM,我们可以将树上的节点当成 JavaScript 对象来操作。 DOM的重要概念 在学习 DOM 之前,需要先掌握两个重要概念: 节点(Nod…

    JavaScript 2023年6月10日
    00
  • 服务器端C#实现的CSS解析器

    服务器端C#实现的CSS解析器攻略 简介 服务器端C#实现的CSS解析器可以帮助我们在服务器端解析CSS文件,方便我们对于CSS文件进行修改、分析、压缩以及提取样式等操作。在本篇攻略中,我们将会讲解如何使用C#实现CSS解析器,以及其中的两个示例应用。 实现步骤 以下是使用C#实现CSS解析器的步骤: 安装NuGet包“CssParser”,该NuGet包是…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部