Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:获取pseudo:before元素的高度_Javascript_Html_Css - Fatal编程技术网

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"