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

yizhihongxing

获取元素位置和尺寸信息是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脚本实现网页自动秒杀点击

    让我对“JS脚本实现网页自动秒杀点击”的攻略给出一个完整的讲解吧。整个过程分为以下几个步骤: 第一步:分析网页结构和页面元素 在使用JS脚本实现自动秒杀之前,首先需要分析待秒杀页面的HTML结构和页面元素,确定需要点击的按钮(或链接)的CSS选择器,才能在JS中进行操作。 例如,假设要开发一个自动抢购京东上某一个商品的脚本,我们需要进入该商品页面,打开浏览器…

    JavaScript 2023年6月11日
    00
  • element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能

    要实现 element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能,需要按照下面的步骤进行操作: 1.引入依赖:首先需要在项目中安装 element-ui 和 vue-bus,command:npm install element-ui vue-bus –save;2.在 main.js 中完成直接注册 bus:Vu…

    JavaScript 2023年6月10日
    00
  • javascript的setTimeout()使用方法总结

    技术文章:JavaScript的setTimeout()使用方法总结 概述 setTimeout() 是JavaScript函数中的一个内置函数,它可以在指定时间后调用一个函数。 setTimeout() 接收两个参数:第一个参数接收一个函数作为回调函数,第二个参数接收一个以毫秒为单位的延迟时间。 语法 setTimeout(callback, delay)…

    JavaScript 2023年5月27日
    00
  • three.js实现3D模型展示的示例代码

    实现3D模型展示的示例代码通常需要使用WebGL渲染,而Three.js作为一款JavaScript库,提供了快速构建3D场景的功能,能够帮助我们轻松实现3D模型的展示。下面,我将为您提供“three.js实现3D模型展示的示例代码”的完整攻略。 步骤一:导入Three.js库 在实现3D模型展示之前,首先需要将Three.js库下载并导入到项目中。我们可以…

    JavaScript 2023年6月10日
    00
  • Javascript之文件操作

    下面是详细讲解JavaScript之文件操作的完整攻略,包括文件的读取、写入、删除等常见操作。 1. 读取文件 1.1 读取本地文件 可以使用FileReader对象读取本地文件。它提供一些方法来读取文件的内容,如readAsArrayBuffer、readAsBinaryString、readAsText、readAsDataURL等。这些方法的参数是一个…

    JavaScript 2023年5月18日
    00
  • js 与或运算符 || && 妙用

    下面是关于“JS 与或运算符 || && 妙用”的完整攻略,包含两个示例说明: 一、JS 与或运算符概述 在JS中,&&和||是常用的逻辑运算符,它们可以将多个条件判断合并在一起。在编写条件判断语句时,通过巧妙地使用逻辑运算符,可以让代码更加简洁、易懂,提高开发效率。 1.1 逻辑与运算符(&&) 逻辑与运算符…

    JavaScript 2023年5月18日
    00
  • ReactRouter的实现方法

    React Router是一个用于React的众所周知的网络路由库,它提供了多种方法来实现在单页面应用中创建多个视图的方法。在下面的攻略中,我们将探讨React Router的实现方法。 基本使用方法 使用React Router的第一步是使用npm安装React Router: npm install react-router-dom –save 接下来…

    JavaScript 2023年6月11日
    00
  • 纯JS实现五子棋游戏兼容各浏览器(附源码)

    下面是详细讲解“纯JS实现五子棋游戏兼容各浏览器(附源码)”的完整攻略。 1. 实现概述 该游戏是基于纯JS实现的,实现思路如下: 初始化画布,绘制棋盘; 监听鼠标点击事件,判断点击位置是否合法; 判断当前玩家是否胜利; 实现AI逻辑,即电脑自动下棋的过程。 2. 实现过程 2.1 初始化画布,绘制棋盘 首先,在HTML中定义一个canvas元素用于绘制游戏…

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