我在stackoverflow上以2种不同的形式看到了此消息,但是解决方案对我不起作用。
本质上,我有一个要翻译的项目。当我执行obj.style.left或obj.offsetLeft时,翻译完元素后,我得到0。无论如何,在使用css3翻译完元素后,我是否可以获得元素的坐标/位置?
我不能使用jQuery(因为我不能,也因为我想了解解决方案,而不仅仅是在不了解底层情况的情况下使用库)
有任何想法吗?
非常感谢!
您可以使用getBoundingClientRect():
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上进行了测试,并且在我所有的测试中都可以使用。