2012-06-22 20 views
15

Sé que las reglas de css son bastante complejas; sin embargo, el optimizador no pudo reducir de manera sencilla los siguientes css de varias maneras. Y si es así, ¿hay alguna opción en la gema rails-sass?¿Puede el minificador de SASS eliminar estilos duplicados?

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

span { 
    background: green; 
    color: inherit; 
} 

.test2 { 
    background: inherit !important; 
    color: inherit; 
    color: inherit; 
    color: inherit; 
} 

Contexto adicional:

Para ayudar a aclarar, yo propondría lo siguiente, así ...

Fuente:

span { 
    background: red; 
} 
span { 
    background: orange; 
    color: green; 
} 
span { 
    background: yellow; 
} 
span { 
    background: blue; 
    color: green; 
} 

Y, me gustaría que un compilador para generar lo siguiente:

span { 
    background: blue; 
    color: green; 
} 

Sé que hay estilos redundantes, pero esto sucede muchas veces al revisar continuamente las hojas de estilo, y quiero eliminar el código muerto.

+0

podría ejecutar la CSS como salida a través [CSSTidy] (http://csstidy.sourceforge.net/) o la me gusta. – Whymarrh

Respuesta

0

No, que yo sepa, SASS será único formato de su código de manera diferente, pero no optimizarlo para que http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style

Ampliando el comentario de Whymarrh, CSSTidy tiene una utilidad de línea de comandos que pudiera integrarse en un proceso de construcción o similares, http://packages.ubuntu.com/hardy/csstidy

+0

El problema con csstidy es que no se ha mantenido en años, por lo que no creo que sea compatible con los selectores de medios más nuevos y con las propiedades de fondo necesarias para degradados y diseños receptivos. –

+0

Correcto, pero también puedes configurar un indicador para ignorar la sintaxis desconocida, por lo que al menos no se tocará, realicé algunas pruebas ayer, contra un conjunto de 10 archivos CSS exportados y el resultado fue decepcionante, en el mejor de los casos caso, tuvimos alrededor del 1% de ganancia en compresión, tenga en cuenta que nuestra compañía es muy anal cuando se trata de rendimiento, por lo que cosas como #ffffff (en lugar de #fff) no son aceptables, su millaje puede variar, I ' Te recomiendo que lo tomes como prueba al menos :) – leopic

+3

Si tienes node.js instalado, hay [csso] (https://github.com/css/csso), que parece que se está manteniendo activamente. El manual explica qué optimizaciones hará. – rwb

0

Para optimizar el código, utilice siempre la opción '--style comprimida' en su línea commend

Por ejemplo:

sass --watch screen.sass --style compressed 

SASS hace su vida mucho más fácil, pero en el estado actual no es posible tener optimizaciones perfectas a menos que pueda escribir el código Ruby y lo escriba usted mismo. Hay algunas soluciones que pueden parecer torpes en su ejemplo, pero la idea subyacente es que ahorre tiempo y no tenga que escribirlo usted mismo.

por ejemplo, su probablemente podría optimizar su código utilizando (espacios también deben ser eliminados) éstos enfoque:

span, .test2 { 
    background: red; 
    color: green; 
} 

en lugar de:

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

en puro CSS, ya que es compatible con la sintaxis SASS más nueva en SASS puede hacerlo por:

%theme-red-green { // i couldn't came up with better naming :) 
    background: red; 
    color: red; 
} 

span { 
    @extend %theme-red-green 
} 
.test2 { 
    @extend %theme-red-green 
} 

incluso si no usamos el estilo separada por comas, como lo haría en su CSS llanura que produciría código optimizado:

span, .test2 { 
    background: red; 
    color: green; 
} 

y no repetir mismo atributo y valores:

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

¿Ha notado utilicé '% theme-' en vez de '.theme-' que hace la diferencia en su salida. El selector de clase se incluiría en su archivo de salida

y dos propiedades innecesarias de 'color' con valores 'heredar' no se eliminarían incluso en el modo comprimido.

+2

El objetivo de la pregunta no era cómo optimizar la escritura del código, sino hacer que un compilador "arreglara" las líneas redundantes de css. –

+0

@MarshallAnschutz ¿Alguna vez trabajó con SASS? lo que en tu opinión es incorrecto sobre mi respuesta? mi punto aquí es sobre decirle a un compilador que lo arregle, no fue capaz en el momento en que respondí la pregunta para resolverlo por sí mismo. De esa forma optimiza tu código. Alguien lo encontró útil, así que en vez de vengarme, dale una mejor respuesta y con mucho gusto te daré un voto positivo, porque lo que cuenta al final es la ayuda que la gente recibe de ti. – orustammanapov

+1

si mira mi pregunta original, la fuente que tiene 4 tramos podría haberse reducido a 1 tramo. Obviamente, podría escribirlo de esa manera, pero a veces usando una biblioteca como Bootstrap, sobreescribes muchos estilos textualmente, causando estilos duplicados. Mi pregunta es cómo hacer para que el compilador elimine automáticamente el CSS no utilizado del documento. –

5

creo que puedo haber encontrado la forma de, al menos, encontrar los estilos duplicados en tanto css y Sass/menos plantillas:

El código abierto csscss joya http://zmoazeni.github.io/csscss/

Parece ser capaz de detectar duplicados, aunque estoy teniendo un parche de mono alrededor de los css de la gema bootstrap-sass que no están en la misma carpeta que mis activos de css.

De la documentación, puede ejecutar:

$ csscss -v path/to/styles.css 

o

$ csscss -v path/to/styles.css.scss 
+3

"aunque tengo que ponerme un parche en el css de la gema de bootstrap-sass, no estando en la misma carpeta que mis activos de CSS". - Por favor, presente un problema en [github] (https://github.com/zmoazeni/csscss/issues). Me gustaría saber qué estás intentando y qué no funciona. –

Cuestiones relacionadas