2011-03-08 3 views
29

Existe-t-il un plugin/app/programme/script/tout ce qui analyse et compte les sélecteurs css d'un fichier? Je veux vérifier si la raison pour laquelle mon fichier css ne fonctionne pas dans IE est parce que mon compte de sélecteur est plus de 4095 (qui im ​​assez sûr n'est pas)Compter le nombre de sélecteurs dans un fichier css

merci!

p.s. plus les points s'il y a une solution haml/sass/compass

+0

at le nombre de sélecteurs se révèle être le problème? Si non, qu'était-ce? Je cours dans le même problème. Tout d'un coup IE9 et seulement IE9 affiche mes sites de manière incorrecte ... – hawkeye126

Répondre

67

L'extrait suivant peut être exécuté dans la console Firebug dans Firefox pour compter le nombre total de sélecteurs CSS (pas seulement les règles CSS) et vérifier si elle atteint la limit of 4095 selectors par stylesheet:

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); 
} 
+1

Merci d'avoir posté une réponse! Alors qu'un extrait de code pourrait répondre à la question, il est toujours bon d'ajouter quelques informations supplémentaires, comme expliquer, etc. – j0k

+1

Ok. Mon anglais est très pauvre, mais je vais essayer) – jetli13

+4

@ jetli13 Mon Firebug dit 'Erreur: L'opération n'est pas sûre. "rules = styleSheet.cssRules," '. Des idées? FB 1.11.2 sur FF 20.0.1 – RaphaelDDL

3

Il y a ce bookmarklet qui vous indique le nombre de règles CSS utilisées parmi les règles CSS (qui vous intéressent).

CSS Crunch

1

Cela fera CSS en ligne ...

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.

+0

ne cherche pas inline, j'ai une feuille de style séparée – corroded

0

Rechercher & Remplacer "{" par "{" dans votre fichier CSS. La plupart des éditeurs diront combien de remplacements vous avez faits ...

+2

Cela ne comptera que le nombre de règles, pas le nombre de sélecteurs. Il peut y avoir plusieurs sélecteurs par règle, par ex. 'h1, h2, h3 {marge: 0; } ' –

+0

Je pense que vous devriez compter le nombre de {plus le nombre de, (virgule). Autant que je puisse voir, ce serait un mécanisme de détection très simple. – Wouter

4

Mon projet, Bless CSS, pourrait être ce que vous cherchez. Il analysera les fichiers et les divisera au point optimal en fonction de la limite du sélecteur. Il est également intégré dans CodeKit.

+0

'npm install -g bless' puis' blessc count ' – qff

1

algorithme simple pour compter les sélecteurs si vous voulez le faire dans le cadre du processus de construction ou tout simplement ne pas le faire dans JS:

Remplacer les textes entre "{" et "}" par un "," puis calculer le nombre de ",". Cela vous donnera le nombre de sélecteurs sur le fichier.

Questions connexes