如何在Javascript中计算CSS规则优先级?

约翰·波

我已经创建了这段代码来计算CSS规则的优先级

var selectorText = "body";
A = selectorText.match(/#/gm); // id
A = !A ? 0 : A.length;
B1 = selectorText.match(/\\./gm); // class
B1 = !B1 ? 0 : B1.length;
B2 = selectorText.match(/[[]/gm); // attribute selector
B2 = !B2 ? 0 : B2.length;
B3 = selectorText.match(/[\\w\\d_\\s^]:(?!:)/gm); // pseudo třída
B3 = !B3 ? 0 : B3.length;
B = B1 + B2 + B3;
C1 = selectorText.match(/::/gm); // pseudo element
C1 = !C1 ? 0 : C1.length;
C2 = selectorText.match(/\\w+[$\\s#\\.:\\[]/gm); // element
C2 = !C2 ? 0 : C2.length;
C = C1 + C2;
A *= 10000;
B *= 100;
alert(C)

选择器中的匹配项(A,B或C)不得超过100个。由于某种原因,C的结果为0(但我使用“ body”选择器)。您能建议如何更正最后一场比赛吗?您还会在代码中看到任何错误吗?

笔记:

最初的问题只是说“ body”选择器,但我想到任何选择器或多个选择器,例如:“ div#menu ul li,div#id,div.class”选择器可以包含伪类,伪元素,属性选择器。在C2正则表达式的情况下,我试图查找元素的数量,在这里最后一个字符串中的元素总数为5个元素(那么C2应该为5个元素)。

来宾271314

selectorText不包含::C1 = selectorText.match(/::/gm);应退货null; C1 = !C1 ? 0 : C1.length;回报0; C2 = selectorText.match(/\\w+[$\s#\\.:\\[]/gm);回报nullC2 = !C2 ? 0 : C2.length;回报0; C = C1 + C2;等于0; 那是0 + 0 = 0


最初的问题只是说“ body”选择器,但我想到任何选择器或多个选择器,例如:“ div#menu ul li,div#id,div.class”选择器可以包含伪类,伪元素,属性选择器。对于C2正则表达式,我试图查找最后一个字符串中总共有5个元素的元素数(那么C2应该是5个)

您可以使用.split()withRegExp /,|\s/分割多个选择,符。.map().filter(Boolean)删除空字符串,.match()RegExp /^[a-z]+(?=[.#:\s]|$)/i相匹配的元素。

var selectorText = "div#menu ul li, div#id, div.class";
C2 = selectorText.split(/,|\s/).filter(Boolean)
     .map(el => el.trim().match(/^[a-z]+(?=[.#:\s]|$)/i)[0]);
console.log(C2);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为规则设定优先级?

来自分类Dev

如何更改默认JAVA规则的Sonarqube规则优先级?

来自分类Dev

语法规则优先级如何工作?

来自分类Dev

如何在优先级队列中设置优先级

来自分类Dev

CSS优先级问题

来自分类Dev

CSS类优先级

来自分类Dev

反应 css 优先级

来自分类Dev

标记化规则优先级解析

来自分类Dev

IIS重定向规则优先级

来自分类Dev

grako的规则优先级问题

来自分类Dev

AEM调度程序规则优先级

来自分类Dev

Apache htaccess规则优先级

来自分类Dev

更改Make中规则的优先级

来自分类Dev

grako的规则优先级问题

来自分类Dev

AWS ALB:规则优先级

来自分类Dev

JavaScript事件优先级

来自分类Dev

执行的javascript的优先级

来自分类Dev

如何在OpenSSL中设置SSL协议优先级

来自分类Dev

如何在Playframework中配置ThreadPool优先级

来自分类Dev

如何在最大堆中修改值的优先级?

来自分类Dev

如何在ActiveAdmin中设置父菜单优先级?

来自分类Dev

brms:如何在分类变量上设置优先级?

来自分类Dev

如何在Microsoft Luis模式中设置优先级?

来自分类Dev

如何在React中确定路由的优先级?

来自分类Dev

如何在Java中确定特定请求的优先级?

来自分类Dev

如何在Linux中确定带宽的优先级

来自分类Dev

如何在C ++中正确使用优先级队列

来自分类Dev

如何在Teradata中衡量用户对请求的优先级?

来自分类Dev

如何在uiwebviews之间设置cpu优先级?