Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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 CSS主体{高度:100%}的正则表达式_Javascript_Css_Regex - Fatal编程技术网

Javascript CSS主体{高度:100%}的正则表达式

Javascript CSS主体{高度:100%}的正则表达式,javascript,css,regex,Javascript,Css,Regex,使用Javascript,我正在解析一个DOM样式表对象(例如document.styleSheets[0])——寻找将主体高度设置为任何百分比值的CSS规则 我已经想出了这个正则表达式来完成这项工作——但我想知道是否有任何方法可以优化它 ,?\s*(body)\s*({|,).*(height)\s*:\s*(\d+%)\s*(!important)?; 此正则表达式查找选择器应用于主体的任何CSS规则,并且规则内容(即实际CSS属性)包括一个带有百分比值的“height”属性。 例如: b

使用Javascript,我正在解析一个DOM样式表对象(例如document.styleSheets[0])——寻找将主体高度设置为任何百分比值的CSS规则

我已经想出了这个正则表达式来完成这项工作——但我想知道是否有任何方法可以优化它

,?\s*(body)\s*({|,).*(height)\s*:\s*(\d+%)\s*(!important)?;
此正则表达式查找选择器应用于主体的任何CSS规则,并且规则内容(即实际CSS属性)包括一个带有百分比值的“height”属性。 例如:

body { height:100%}
或:

或:

等等


所以我想知道是否有更好的方法来编写这个正则表达式?

我想试试这个正则表达式:

/body[^{]*?\{[\s\S]*?(height\s*:\s*\d+%)[\s\S]*?\}/i
描述

演示

您知道,您可以使用
样式表[0]获取规则和内容。规则
等作为样式声明,而不是使用regex解析所有内容?谢谢!您的意思是通过
样式表[0].cssRules
?如果是-那么是的,我实际上在循环所有这些(有更好的方法吗?@UJC如果您不介意进行一次小的性能测试,您可以在
document.queryselectoral(rule.selectorText)
返回的节点列表中测试
,如果您找到了,检查
规则.style.height
-这将为您提供所需的准确结果。还有以供应商为前缀的
节点。matchesSelector
;i、 e.
node.webkitMatchesSelector('body');//根据节点给出true或false。谢谢。在这种情况下,不要介意性能受到影响。我曾想过浏览一个节点列表,但发现一些浏览器会以像素为单位返回CSS值。在我的特定场景中,我需要知道用于
高度
的CSS单位是否为百分比。想法?@UJC So
window.getComputedStyle(node)
是不可能的吗?我会同意的。如果您查看每个规则并找到所有匹配的规则,您可能会在“选择”与实际匹配的选择器时遇到一些问题,即
html>body
body
匹配,而
*
匹配,但可能存在
!重要信息
,使用相同选择器的后续选项会覆盖早期选项,等等。
body, h1 { height:100% !important; }
/body[^{]*?\{[\s\S]*?(height\s*:\s*\d+%)[\s\S]*?\}/i