我在容器中有一个浮动的,固定大小的盒子网格。我需要使用JS / jQuery获取每个盒子相对于容器的位置。我知道我可以在容器上设置position: relative
并使用jQuery $box.position()
,但它不起作用,因为我的<body>
是使用transform: scale()
缩放的。 (我有另一个脚本可以缩放<body>
以匹配视口宽度,类似于this,但对于这个问题,只需知道<body>
将transform: scale()
任意比例因子。)
jQuery&#39; $box.position()
似乎在缩放后返回位置,但我希望之前的原始位置缩放。例如,如果每个框都有width: 300px; margin-right: 10px
,则第三列中的框应该具有偏移620px
(缩放前)。但是,如果$box.position().left
有310px
,则<body>
会给transform: scale(0.5)
(缩放后)。
在不知道缩放系数的情况下,有没有办法在缩放之前获得位置?我找到了原生DOM方法getBoundingClientRect()
,但是(1)it still gives the position after scaling和(2)it's relative to the viewport而不是容器。
感谢。
答案 0 :(得分:0)
尝试使用原生DOM属性offsetLeft
和offsetTop
。 Browser support看起来不错:基本上所有浏览器和IE8 +。我尝试了这些属性,他们似乎至少在Chrome,Firefox和IE11扩展之前给出了正确的位置。
因为它们是原生DOM属性,所以首先需要$element[0]
来获取基础DOM元素:$box[0].offsetLeft
和$box[0].offsetTop
。另请注意,它们给出了元素边框的左上角位置,不是边距框。