当前位置: 首页 > 面试题库 >

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

庄兴发
2023-03-14
问题内容

我在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,如何确定给定位置的元素?基本上,我希望编写一个函数,该函数接受两个输入参数(x和y坐标),并在参数所表示的屏幕上的位置处返回html元素。 问题答案: http://dev.w3.org/csswg/cssom-view/#dom-document- elementfrompoint http://msdn.microsoft.com/zh- CN/libra

  • 本文向大家介绍XAML如何获取元素的位置,包括了XAML如何获取元素的位置的使用技巧和注意事项,需要的朋友参考一下 在之前讨论 ListView 滚动相关需求的文章中(UWP: ListView 中与滚动有关的两个需求的实现)曾经提到了获取元素相对位置的方法,即某元素相对另一元素的位置。现将所有相关方法再作整理,并且包括 UWP 与 WPF 两者的实现,如下: WPF(两种方式): UWP:  这

  • 问题内容: 例如,如果我有一个元素: 这是跨多行的: 是否可以使用Javascript找出文本中特定字符的位置(以x,y坐标表示)?如果没有,我可以得到文本中每行的y位置吗? 请注意 :我的应用程序中的标记中有很多文本,因此在每个字符/单词周围添加太多的处理内容。 问题答案: 如果您知道字符在文本中的字符串位置,则可以将字符包装在具有ID的或类似元素中,并找到该元素的x,y坐标。要做到这一点最简单

  • 问题内容: 我想替换html元素中的内容,所以为此使用了以下功能: 上面的方法效果很好,但是问题是我要替换其内容的页面上有多个html元素。因此,我不能使用id而是使用类。有人告诉我javascript不支持任何类型的内置get element by class函数。那么如何修改以上代码以使其与类(而不是ID)一起使用? PS我不想为此使用jQuery。 问题答案: 此代码应在所有浏览器中都有效。

  • 本文向大家介绍获取元素在Java ArrayList中的位置,包括了获取元素在Java ArrayList中的位置的使用技巧和注意事项,需要的朋友参考一下 可以使用方法java.util.ArrayList.indexOf()获得ArrayList中元素的位置。此方法返回指定元素首次出现的索引。如果该元素在ArrayList中不可用,则此方法返回-1。 演示此的程序如下所示- 示例 输出结果 现在

  • 问题内容: 我如何获取元素(例如按钮)的实际屏幕位置?如果我使用getBounds,我将获得相对于父容器而不是屏幕的位置。 问题答案: 你试过了吗?