在JavaScript中进行CSS3转换后,如何获取元素的位置?

我在stackoverflow上以2种不同的形式看到了此消息,但是解决方案对我不起作用。

本质上,我有一个要翻译的项目。当我执行obj.style.left或obj.offsetLeft时,翻译完元素后,我得到0。无论如何,在使用css3翻译完元素后,我是否可以获得元素的坐标/位置?

我不能使用jQuery(因为我不能,也因为我想了解解决方案,而不仅仅是在不了解底层情况的情况下使用库)

有任何想法吗?

非常感谢!

回答:

您可以使用getBoundingClientRect()

想象以下html块:

<div class="centralizer popup">

<div class="dragger"></div>

</div>

和样式:

body {

background:#ccc;

}

.centralizer {

position:absolute;

top:150px;

left:170px;

width:352px;

height:180px;

overflow:auto;

-webkit-transform: translateY(-50%) translateX(-50%);

-moz-transform: translateY(-50%) translateX(-50%);

-ms-transform: translateY(-50%) translateX(-50%);

transform: translateY(-50%) translateX(-50%);

}

.popup {

background:white;

box-shadow:0 0 0 2px rgba(0, 0, 0, 0.1), 0 0 15px rgba(0, 0, 0, 0.3);

border-radius:3px;

}

.dragger {

background:#eee;

height:35px;

border-radius:3px 3px 0 0;

border-bottom:1px solid #ccc;

}

现在,您可以使用以下javascript获取正确的位置:

var popup = document.querySelector('.popup');

var rect = popup.getBoundingClientRect();

console.log("popup.getBoundingClientRect(): \n" + "x: " + rect.left + "\ny: " + rect.top);

您可以在jsfiddle中检查结果:

我在FF,IE和chrome上进行了测试,并且在我所有的测试中都可以使用。

以上是 在JavaScript中进行CSS3转换后,如何获取元素的位置? 的全部内容, 来源链接: utcz.com/qa/411009.html

回到顶部