除了offset之外,是否有方法可以获取相对于文档的元素的 client rect?getBoundingClientRect()
获取相对于客户端浏览器的值。
我使用的是D3
,*jQuery的 * height()
和width()
都能正常工作(我甚至尝试过使用window.load()
),但是offset()
不行。javascripts也不行。offset
return [$e.offset().top + $e.height()/2, $e.offset().left + $e.width()/2]
$e.height()
和$e.width()
都返回0
这是一个 SVG 元素,我只是用它来编辑我的 SVG。用D3
加载/处理SVG要容易得多。这个项目与数据无关,它只是一个Map。
2条答案
按热度按时间7hiiyaii1#
使用
element.getBoundingClientRect()
本身返回相对于视窗的top
和left
值,如您所发现的。如果您希望它们相对于文档(并且不受滚动位置的影响),您可以使用window.scrollY
和window.scrollX
添加滚动位置,如下所示:Source。
8tntrjer2#
下面是一个ES6方法,它返回与
getBoundingClientRect()
相同的所有属性,但相对于整个文档。注意:它还对
x
和y
属性进行多边形填充,旧版浏览器不会从getBoundingClientRect()返回这些属性