30

ファイルのcssセレクターを分析してカウントする既存のプラグイン/アプリ/プログラム/スクリプト/何かがありますか?私のcssファイルがIEで機能していない理由が、セレクターの数が4095を超えているためかどうかを確認したいのですが(確かにそうではありません)

ありがとう!

haml / sass/compassソリューションがある場合はpsプラスポイント

4

8 に答える 8

68

次のスニペットをFirefoxのFirebugコンソールで実行して、CSSセレクターの総数(CSSルールだけでなく)をカウントし、スタイルシートごとに4095セレクターの制限に達しているかどうかを確認できます。

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);
}
于 2012-09-07T07:30:38.527 に答える
4

私のプロジェクトであるBlessCSSは、あなたが探しているものかもしれません。ファイルを分析し、セレクターの制限に基づいて最適なポイントでファイルを分割します。

CodeKitにも組み込まれています。

于 2012-07-20T02:39:24.127 に答える
3

このブックマークレットには、CSSルールの総数(関心のあるもの)のうち、使用されているCSSルールの数が記載されています。

CSSクランチ

于 2011-03-08T05:05:28.090 に答える
1

これはインライン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

于 2011-03-08T05:09:37.587 に答える
1

CSSファイルで「{」を「{」に検索して置き換えます。ほとんどの編集者は、あなたが行った交換の数を教えてくれます…</ p>

于 2012-07-18T20:51:33.427 に答える
1

ビルドプロセスの一部として実行したい場合、または単にJSで実行したくない場合に、セレクターをカウントするための単純なアルゴリズム:

「{」と「}」の間のテキストを「、」に置き換えてから、「、」の数を計算します。これにより、ファイルのセレクターの数がわかります。

于 2014-03-19T08:41:17.833 に答える
1

少し遅れますが、cssセレクターカウンターを探している人は誰でも: http ://snippet.bevey.com/css/selectorCount.php 非常にシンプルで、複数のスタイルシートを使用できます。 4096の制限に達しました

于 2015-07-28T15:59:06.680 に答える
0

10年後のjetli13の回答に基づいて、IEセレクターの制限はありませんが、将来的にはJSジェネレーターのスタイル付きコンポーネントとメガCSSを追加しました。

  1. 1000以上のスタイルの警告
  2. サードパーティの外部ルールがある場合でもスクリプトは機能します
  3. styleタグまたはexternalスタイルシートごとのスタイルの追加を表示します
  4. 個々のCSSルールセットを拡張できます

スクリプト-コピーしてコンソールで実行

SPAアプリケーションでルートを変更した後に実行して、追加されたルールの数を確認できます。

var
  styleSheets = document.styleSheets,
  totalStyleSheets = styleSheets.length,
  overAllDocumentRules =0;
try {
for (var j = 0; j < totalStyleSheets; j++){

    try{
  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;
    }
  }
}
catch(err){
    console.warn("skipping>", styleSheet.href, err);
    console.warn(styleSheet)
}
if(totalRulesInStylesheet>1000) console.error("This stylesheet has over 1000 rules")
  console.log("Stylesheet: "+styleSheet.href);
  console.log(styleSheet)
  console.info("Total rules: "+totalRulesInStylesheet);
  overAllDocumentRules += totalRulesInStylesheet;
  console.warn("Total Document Rules > "+ overAllDocumentRules)
}
}
catch(err){
    console.warn("Error",err)

}

クロスドメインスタイルシートルール別名サードパーティは何をしていますか

Safari Webインスペクターでサードパーティのスタイルが必要な場合は、次のようにします。 ここに画像の説明を入力してください

出力

ここに画像の説明を入力してください

于 2022-02-24T23:08:19.870 に答える