如何在 JavaScript 中查找 HTML 元素的位置?

javascriptweb developmentfront end technology

概述

JavaScript 提供了各种方法来操作和获取有关 HTML 元素的信息。从这几种方法中,JavaScript 有自己的预定义方法,它们返回 HTML 元素的特定坐标或位置。这两个方法是 offsetLeft 和 offsetTop,这两个方法返回 HTML 元素的确切位置。JavaScript 还提供了另一个函数 getBoundingClientRect(),该方法也提供与 offset 方法相同的结果。getBoundingRect() 有四个属性,即 top、left、right 和 bottom,而 offset 只有两个属性,即 left 和 top。

语法

获取元素位置的语法是 −

  • getBoundingClientRect() − 它是 JavaScript 的预定义函数,当连接到元素时,它会返回元素相对于浏览器窗口的位置。 getBoundingClientRect 有 cords.top、cords.left、cords.bottom、cords.height、cords.height、cords.right 四个属性,其中 cords 是 getBoundingClientRect() 函数的引用变量。

var cords = e.getBoundingClientRect();
  • offsetType − offset 是 JavaScript 中预定义的函数,它返回元素的位置,例如 offsetLeft 和 offsetTop。

"(" + elementHTML.offsetTop + "," + elementHTML.offsetLeft + ")"

算法 1

  • 步骤 1 − 在文本编辑器上创建一个 HTML 文件,并向文件添加 HTML 样板。

  • 步骤 2 − 现在向正文添加标题标签。

<h1 id="h">tutorialspoint.com</h1>
  • 步骤 3 − 现在创建另一个 div 以将输出显示为元素的位置。

<div id="ans">(0,0)</div>
  • 步骤 4 − 现在将脚本标记添加到正文。

<script></script>
  • 步骤 5 − 现在存储我们必须找到其位置的元素的引用。

var e = document.getElementById("h");
  • 步骤 6 − 现在访问输出的 id 名称,并使用 innerHTML 通过 offsetTop 和 offsetLeft 显示元素的位置。

var m = document.getElementById("ans").innerHTML = "元素的位置 "+"(" + e.offsetTop + "," + e.offsetLeft + ")";

e.style.marginLeft = e.offsetLeft + 1;

示例 1

在此示例中,我们将使用基本偏移方法来查找元素的位置。

<html>
<head>
   <title> finding the element position </title>
</head>
<body>
   <h1 id="h">tutorialspoint.com</h1>
   <div id="ans" style="padding: 0.2rem;background-color: green;display: inline-block;color: white;">(0,0)</div>
   <script>
      var e = document.getElementById("h");
      var m = document.getElementById("ans").innerHTML = "Position of element "+"(" + e.offsetTop + "," + e.offsetLeft + ")";
      e.style.marginLeft = e.offsetLeft + 1;
   </script>
</body>
</html>

算法 2

  • 步骤 1 − 在文本编辑器上创建一个 HTML 文件,并向文件添加 HTML 样板。

  • 步骤 2 − 现在向正文添加标题标签,并向其添加名为"h"的 id 属性。

<h1 id="h">tutorialspoint.com</h1>
  • 步骤 3 − 现在创建另一个 div 以将输出显示为元素的位置。

<div id="ans">(0,0)</div>
  • 步骤 4 − 现在将脚本标签添加到正文。

<script></script>
  • 步骤 5 − 现在存储我们必须找到位置的元素的引用。

var e = document.getElementById("h");
  • 步骤 6 − 现在使用 HTML 元素初始化 getBoundingClientTect() 并将引用存储在变量中。

var cords = e.getBoundingClientRect();
  • 第 7 步 - 使用 innerHTML 方法将元素的位置显示到浏览器窗口。

document.getElementById("ans").innerHTML = "元素的位置 "+"(" + cords.top + "," + cords.left + ")";

示例 2

在此示例中,我们将使用内置函数 getBoundingClientRect() 来获取 HTML 元素的位置。

<html>
<head>
   <title> finding the elemet position </title>
</head>
<body>
   <h1 id="h">tutorialspoint.com</h1>
   <p> (using getBoundingClientRect) </p>
   <div id="ans" style="padding: 0.2rem;background-color: green;display: inline-block;color: white;">(0,0)</div>
   <script>
      var e = document.getElementById("h");
      var cords = e.getBoundingClientRect();
      document.getElementById("ans").innerHTML = "Position of element "+"(" + cords.top + "," + cords.left + ")";
   </script>
</body>
</html>

算法 3

  • 步骤 1 − 在文本编辑器上创建一个 HTML 文件,并向文件添加 HTML 样板。

  • 步骤 2 − 现在向正文添加标题标签,并将标题的位置设置为绝对位置。

<h1 id="h" style="position:absolute;">tutorialspoint.com</h1>
  • 步骤 3 − 现在创建另一个 div 以将输出显示为元素的位置。

<div id="ans">(0,0)</div>
  • 步骤 4 − 现在创建两个按钮,使用 onclick 事件处理程序,值为"down"和"right"。

<button onclick="d()">向下移动</button>
<button onclick="r()">向右移动</button>
  • 步骤 5 − 现在将脚本标记添加到正文。

<script></script>
  • 步骤 6 − 创建一个箭头函数作为 d() 并存储我们必须找到位置的元素的引用,并使用下面的进一步代码使动态位置变化显示在屏幕上。

d = () => {
   var e = document.getElementById("h");
   var m = document.getElementById("ans").innerHTML = "(" + e.offsetTop + "," + e.offsetLeft + ")";
   var e = document.getElementById("h");
   e.style.marginTop = e.offsetTop + 1;
}
  • 步骤 7 − 创建另一个箭头函数作为 r() 并存储我们必须找到位置的元素的引用,并使用下面的进一步代码使动态位置变化显示在屏幕上。

r = () => {
   var e = document.getElementById("h");
   var m = document.getElementById("ans").innerHTML = "(" + e.offsetTop + "," + e.offsetLeft + ")";
   var e = document.getElementById("h");
   e.style.marginLeft = e.offsetLeft + 1;
}
  • 步骤 8 - 动态位置查找器已准备就绪。

示例 3

在此示例中,我们将借助按钮创建可移动文本,并创建一个实时位置变换器,当用户更改文本位置时,实时位置将显示在屏幕上。

<html>
<head>
   <title> finding the elemet position </title>
</head>
<body>
   <h1 id="h" style="position:absolute;">tutorialspoint.com</h1>
   <div id="ans" style="padding: 0.2rem;background-color: green;display: inline-block;color: white;">(0,0)</div>
   <button onclick="d()">Move down</button>
   <button onclick="r()">Move right</button>
   <script>
      d = () => {
         var e = document.getElementById("h");
         var m = document.getElementById("ans").innerHTML = "(" + e.offsetTop + "," + e.offsetLeft + ")";
         var e = document.getElementById("h");
            e.style.marginTop = e.offsetTop + 1;
      }
      r = () => {
         var e = document.getElementById("h");
         var m = document.getElementById("ans").innerHTML = "(" + e.offsetTop + "," + e.offsetLeft + ")";
         var e = document.getElementById("h");
         e.style.marginLeft = e.offsetLeft + 1;
      }
   </script>
</body>
</html>

下图显示了上述示例的输出,在浏览器上加载时,该输出显示了元素的实时位置,其中有两个按钮,分别为向下移动和向右移动。当用户单击向下移动按钮时,文本"tutorialspoint.com"将随着页面绿色部分中位置值的变化而向下移动。文本"tutorialspoint.com"本质上是可移动的。如下图所示,它显示了文本"tutorialspoint.com"的位置 (83,62)。

结论

元素的位置坐标主要用于 JavaScript 游戏。它还用于将滚动动画和动画添加到网页。例如,我们希望在用户滚动到页面的某个位置时添加某个动画。


相关文章