gpt4 book ai didi

javascript - 使用javascript获取伪元素的offsetLeft

转载 作者:行者123 更新时间:2023-12-05 00:28:02 25 4
gpt4 key购买 nike

有没有办法只使用 javascript 来获取伪元素的 offsetLeft ?

我可以通过 chrome devtools 控制台检查::before 元素并获取它的 offsetLeft。

由于 window.getComputedStyle(elem, ':before') 给出了::before 的计算样式,是否有类似访问 offsetLeft 的东西?

最佳答案

您可能已经想通了,但是我偶然发现了这个问题,自己寻找答案,而且我非常有信心答案是否定的。至少,并非没有一些骇人听闻的解决方法。
超过 here有人想要使用的伪元素的完全 CSS 转换的高度 window.getComputedStyle()拉出所有样式,将它们贴在真实元素上,然后访问它的边界矩形。
但由于我们只需要视口(viewport)中未转换的位置,我们可能不需要所有这些。如果它绝对定位在其父级中,则仅获取其父级的 offsetLeft 就足够了,然后使用 getComputedStyle 将其偏移以获得真实的东西:

var pseudoStyles = window.getComputedStyle(parent, ":before");
var pseudoOffsetLeft = parent.offsetLeft + parseFloat(pseudoStyles.left) + "px"
https://jsfiddle.net/4q5uy2af/
它不如 getBoundingClientRect 好,因为它没有考虑 CSS 转换,但 offsetLeft 无论如何都不会这样做。如果伪元素有 position: fixed , offsetLeft 可以纯粹从样式中计算出来。但是,如果浏览器仍然可以控制将其置于流中,我认为事情会变得更加棘手。您可以将样式复制到真实元素,但在检查其替代元素的 offsetLeft 时,您需要隐藏伪元素。

关于javascript - 使用javascript获取伪元素的offsetLeft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com