计算css文件中选择器的数量

Posted

技术标签:

【中文标题】计算css文件中选择器的数量【英文标题】:Count number of selectors in a css file 【发布时间】:2011-07-10 20:25:49 【问题描述】:

是否有现有的插件/应用程序/程序/脚本/任何东西来分析和计算文件的 css 选择器?我想检查我的 css 文件在 IE 中不起作用的原因是否是因为我的选择器计数超过 4095(我很确定不是)

谢谢!

附言如果有 haml/sass/compass 解决方案,则加分

【问题讨论】:

选择器的数量是否是问题所在?如果不是,那是什么?我遇到了同样的问题。突然间 IE9 并且只有 IE9 无法正确显示我的网站... 【参考方案1】:

有这个小书签可以告诉您在所有 CSS 规则(您感兴趣的)中使用的 CSS 规则的数量。

CSS Crunch

【讨论】:

【参考方案2】:

这将执行内联 CSS...

var selectors = 0;

$('style').each(function() 

   var styles = $(this).html();

   // Strip comments
   styles = styles.replace(/\/\*.+?\*\//sg, ''); 

   var matches = styles.match(/\[\s.]*\/g);

   selectors += matches.length;

);

jsFiddle.

【讨论】:

【参考方案3】:

在您的 CSS 文件中搜索并用“”替换“”。大多数编辑会告诉你做了多少次替换……

【讨论】:

这只会计算规则的数量,而不是选择器的数量。每个规则可以有多个选择器,例如h1, h2, h3 margin: 0; 我认为你应该计算 的数量加上 , 的数量(逗号)。据我所知,这将是一个非常简单的检测机制。【参考方案4】:

我的项目Bless CSS 可能就是您正在寻找的。它将根据选择器限制分析文件并在最佳点拆分它们。

它也内置于CodeKit。

【讨论】:

npm install -g bless 然后blessc count <path-to-file>【参考方案5】:

可以在 Firefox 的 Firebug 控制台中运行以下 sn-p 来统计 CSS 选择器(不仅仅是 CSS 规则)的总数,并检查它是否达到每个样式表的 limit of 4095 selectors:

var
  styleSheets = document.styleSheets,
  totalStyleSheets = styleSheets.length;

for (var j = 0; j < totalStyleSheets; j++)
  var
    styleSheet = styleSheets[j],
    rules = styleSheet.cssRules,
    totalRulesInStylesheet = rules.length,
    totalSelectorsInStylesheet = 0;

  for (var i = 0; i < totalRulesInStylesheet; i++) 
    if (rules[i].selectorText)
      totalSelectorsInStylesheet += rules[i].selectorText.split(',').length;
    
  
  console.log("Stylesheet: "+styleSheet.href);
  console.log("Total rules: "+totalRulesInStylesheet);
  console.log("Total selectors: "+totalSelectorsInStylesheet);

【讨论】:

感谢您发布答案!虽然代码 sn-p 可以回答这个问题,但添加一些附加信息仍然很棒,比如解释等.. 好的。我的英语很差,但我会努力的) @jetli13 我的萤火虫说Error: The operation is insecure. "rules = styleSheet.cssRules,"。有任何想法吗? FF 20.0.1 上的 FB 1.11.2 @RaphaelIDDL 我想你需要的答案在这里link 在 Chrome 控制台中也为我工作。【参考方案6】:

如果您想将其作为构建过程的一部分,或者只是不想在 JS 中进行,则用于计算选择器的简单算法:

用“,”替换“”和“”之间的文本,然后计算“,”的个数。这将为您提供文件上的选择器数量。

【讨论】:

【参考方案7】:

有点晚了,但对于任何正在寻找 CSS 选择器计数器的人来说: http://snippet.bevey.com/css/selectorCount.php 它非常简单,并且可以使用多个样式表,它甚至会告诉您何时达到 4096 限制

【讨论】:

以上是关于计算css文件中选择器的数量的主要内容,如果未能解决你的问题,请参考以下文章

CSS-层叠性中的权重计算规则

CSS选择器和权重计算

计算机,网页设计中CSS各选择器的含义,用途和不同,尤其是复合内容选择器?

css选择器执行的顺序是啥样的?

css优先级和层叠

css里关于定义class选择器的问题