如何在 JavaScript 和 jQuery 中获取 HTML 元素的 X 和 Y 位置

开发 Web 应用程序时,出于各种目的可能需要获取页面上 HTML 元素的 X 和 Y 位置,例如相对于目标元素定位其他元素或根据元素的位置触发事件。在本文中,我们将探讨如何在 JavaScript 和 jQuery 中获取 HTML 元素的 X 和 Y 位置。

在 JavaScript 中获取 X 和 Y 位置

要在 JavaScript 中获取 HTML 元素的 X 和 Y 位置,我们可以使用该getBoundingClientRect()方法。此方法返回一个对象,其属性描述元素相对于视口的位置。

下面是如何使用 JavaScript 获取 ID 为“myElement”的元素的 X 和 Y 位置的示例:

const element = document.getElementById('myElement');
const rect = element.getBoundingClientRect();
const x = rect.left + window.scrollX;
const y = rect.top + window.scrollY;

在此示例中,我们首先使用 获取对元素的引用getElementById()。然后,我们调用getBoundingClientRect()元素上的方法,该方法返回一个具有lefttopright和 等属性的对象bottom。和属性描述元素相对于视口的 X 和 Y 位置lefttop

请注意,返回的left和属性是相对于视口的左上角,而不是文档的左上角。要获取元素的绝对位置,我们需要分别使用和 将窗口的当前滚动位置添加到和值中。topgetBoundingClientRect()lefttopwindow.scrollXwindow.scrollY

在 jQuery 中获取 X 和 Y 位置

在 jQuery 中,我们可以使用该offset()方法来获取 HTML 元素的 X 和 Y 位置。此方法返回一个对象,该对象具有描述元素相对于文档的位置的属性。

下面是如何使用 jQuery 获取 ID 为“myElement”的元素的 X 和 Y 位置的示例:

const element = $('#myElement');
const x = element.offset().left;
const y = element.offset().top;

在此示例中,我们首先使用 jQuery 选择器获取对元素的引用$('#myElement')。然后,我们调用offset()元素上的方法,该方法返回一个具有left和 等属性的对象top。和属性描述元素相对于文档的 X 和 Y 位置lefttop

请注意,该offset()方法返回元素相对于文档的位置,而不是相对于视口的位置。$(window).scrollLeft()如果要获取元素相对于视口的位置,可以分别使用和减去窗口的当前滚动位置$(window).scrollTop()。这是一个例子:

const element = $('#myElement');
const offset = element.offset();
const x = offset.left - $(window).scrollLeft();
const y = offset.top - $(window).scrollTop();

与前面的示例一样,我们首先使用 jQuery 选择器获取对元素的引用$('#myElement'),然后调用offset()元素上的方法,该方法返回一个具有 left 和 top 等属性的对象。left 和 top 属性描述元素相对于文档的 X 和 Y 位置。

$(window).scrollLeft()为了获得元素相对于视口的位置,我们分别使用和减去窗口的当前滚动位置$(window).scrollTop()。这为我们提供了元素相对于视口的 X 和 Y 位置。

请注意,scrollLeft()scrollTop()方法分别返回文档当前从左边缘和上边缘滚动的像素数。从元素的偏移量中减去这些值就可以得到它相对于视口的位置。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Html模板

Active:多用途企业网站模板

2023-9-17 18:37:52

设计文章

设计着登陆页避免这7个错误

2023-9-19 21:14:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索