Javascript CSS主体{高度:100%}的正则表达式
使用Javascript,我正在解析一个DOM样式表对象(例如document.styleSheets[0])——寻找将主体高度设置为任何百分比值的CSS规则 我已经想出了这个正则表达式来完成这项工作——但我想知道是否有任何方法可以优化它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
,?\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 Sowindow.getComputedStyle(node)
是不可能的吗?我会同意的。如果您查看每个规则并找到所有匹配的规则,您可能会在“选择”与实际匹配的选择器时遇到一些问题,即html>body
与body
匹配,而*
与匹配,但可能存在!重要信息
,使用相同选择器的后续选项会覆盖早期选项,等等。
body, h1 { height:100% !important; }
/body[^{]*?\{[\s\S]*?(height\s*:\s*\d+%)[\s\S]*?\}/i