2011-03-08 8 views
29

¿Existe un complemento/aplicación/programa/script/lo que sea que analice y cuente los selectores css de un archivo? Quiero comprobar si la razón por la que mi archivo css no está funcionando en IE es porque mi número de selector es más de 4095 (que estoy bastante seguro)Número de selectores en un archivo css

gracias!

p.s. más puntos si hay una solución de haml/sass/brújula

+0

Did la cantidad de selectores resulta ser el problema? Si no, ¿qué fue? Me estoy encontrando con el mismo problema. De repente, IE9 y solo IE9 muestra mis sitios incorrectamente ... – hawkeye126

Respuesta

67

El siguiente fragmento de código se puede ejecutar en la consola de Firebug en Firefox para contar el número total de selectores CSS (no sólo las reglas CSS) y comprobar si se alcanza el limit of 4095 selectors por hoja de estilo:

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

¡Gracias por publicar una respuesta! Mientras que un fragmento de código podría responder a la pregunta, sigue siendo genial agregar información adicional, como explicar, etc. – j0k

+1

Ok. Mi inglés es muy pobre, pero lo intentaré) – jetli13

+4

@ jetli13 Mi Firebug dice 'Error: la operación es insegura. "rules = styleSheet.cssRules," '. ¿Algunas ideas? FB 1.11.2 en FF 20.0.1 – RaphaelDDL

3

Hay este bookmarklet que le indica el número de reglas de CSS usadas fuera de las reglas de CSS totales (que le interesan).

CSS Crunch

1

Esto hará CSS en línea ...

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

sin buscar en línea, tengo una hoja de estilos separada – corroded

0

Buscar & reemplazar "{" por "{" en su archivo CSS. La mayoría de los editores le dirá cuántos reemplazos ha realizado ...

+2

Esto solo contará el número de reglas, no el número de selectores. Puede haber múltiples selectores por regla, p. 'h1, h2, h3 {margen: 0; } ' –

+0

Creo que deberías contar el número de {más el número de, (coma). Por lo que puedo ver, este sería un mecanismo de detección muy simple. – Wouter

4

Mi proyecto, Bless CSS, podría ser lo que está buscando. Analizará los archivos y los dividirá en el punto óptimo según el límite del selector.

También está incorporado en CodeKit.

+0

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

1

algoritmo simple para contando los selectores si desea hacerlo como parte del proceso de compilación o simplemente no desea hacerlo en JS:

Reemplace los textos entre "{" y "}" con un "," y luego calcule el número de ",". Esto le dará la cantidad de selectores en el archivo.

Cuestiones relacionadas