javascript:获取pseudo:before元素的高度
我需要一个伪javascript:获取pseudo:before元素的高度,javascript,html,css,Javascript,Html,Css,我需要一个伪:在元素之前的高度。听起来很简单,但我无法让它工作。这就是我尝试过的: $('.test:before').height() // --> null 和 有什么建议我做错了什么 更新:测试的高度取决于内容。我需要做的是,当高度大于伪元素时,我需要在元素的右侧添加一个填充。然而,由于伪元素的高度是由css设置的,我在我的程序中不知道它,正如Paulie_D所说,“jQuery无法选择伪元素” 但是,如果站点上的元素的样式与JSFiddle中的相同,那么div的高度将与:befo
:在元素之前的高度。听起来很简单,但我无法让它工作。这就是我尝试过的:
$('.test:before').height() // --> null
和
有什么建议我做错了什么
更新:测试的高度取决于内容。我需要做的是,当高度大于伪元素时,我需要在元素的右侧添加一个填充。然而,由于伪元素的高度是由css设置的,我在我的程序中不知道它,正如Paulie_D所说,“jQuery无法选择伪元素”
但是,如果站点上的元素的样式与JSFiddle中的相同,那么div的高度将与:before的高度相同,您可以得到以下值:
$('.test').height()
如果不一样,请告诉我们您希望获得高度的原因,您还可以做些其他事情。您可以根据您的布局以某种方式接近它。
如果您的伪元素溢出父元素,那么scrollWith/scrollHeight将为您提供伪元素维度,因为该属性返回框内容的总体大小,无论是否可见(可滚动)
参考资料:
超晚回复,但是:您可以使用vanilla JavaScript通过以下方法获取伪元素维度:
这将返回一个像素值字符串,与CSS声明无关(例如,4.375rem=70px
,10vh=70px
,calc(8vh+1rem)=70px
),因此要获取数字(以像素为单位),您可以执行以下操作:
var pseudoHeightNum=parseInt(pseudobeforehight);
关于兼容性:CanIUse建议,从2017年7月起,它在所有现代浏览器中几乎都能跨浏览器工作(显然,即使支持IE9及以上版本):.伪元素不可由JQ选择,因为它们不在DOM中。为什么您需要高度…您还没有定义它吗?@Paulie\u D可能他正在使用CSS媒体选择,不知道哪些样式规则有效?您应该能够使用window.getComputedStyle()
使用伪元素,但我不确定是否支持浏览器。请参阅@BoltClock,这很好。显示浏览器支持我已经添加了一个解释,解释了为什么以及我要做什么!感谢迄今为止的答案!@JeanlucaScaljeri如果在这一点上获得接受标记,那将非常棒,即使有点晚了
var testBox = document.querySelector('.test');
// Or with jQuery: testBox = $('.test').get(0); - We want the JS element, without the jQuery wrapper
var pseudoBeforeHeight = window.getComputedStyle(testBox, ':before').height; // Returns (string) "70px"