2012-06-22 14 views
15

Wiem, że zasady CSS są dość skomplikowane; jednak, czy następujące parametry nie mogą być po prostu zredukowane na wiele sposobów przez optymalizator? A jeśli tak, czy istnieje opcja dla niego w klejnocie szyn?Czy miniligator SASS może usunąć powielone style?

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; 
} 

dodatkowy kontekst:

Aby pomóc wyjaśnić, chciałbym zaproponować następujące, jak również ...

Źródło:

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

I chciałbym kompilatora wygenerować następujące:

span { 
    background: blue; 
    color: green; 
} 

Wiem, że istnieją zbędne style, ale zdarza się to wielokrotnie podczas ciągłego sprawdzania arkuszy stylów i chcę wyeliminować martwy kod.

+0

Można uruchomić outputted CSS poprzez [CSSTidy] (http://csstidy.sourceforge.net/) lub, lubić. – Whymarrh

Odpowiedz

0

Nie dlatego, że wiem, SASS sformatuje tylko kod inaczej, ale nie zoptymalizować go dla Ciebie http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style

poszerzając komentarzu Whymarrh, w CSSTidy ma linię narzędzie polecenia, które mogą być zintegrowane w procesie budowania lub podobne, http://packages.ubuntu.com/hardy/csstidy

+0

Problem z csstidy polega na tym, że nie był on konserwowany od lat, więc nie wierzę, że będzie on obsługiwał nowsze selektory multimediów i wiele właściwości tła wymaganych dla gradientów i responsywnych projektów. –

+0

Zgadza się, ale możesz także ustawić flagę, aby ignorowała nieznaną składnię, więc przynajmniej to pozostanie nietknięta, wczoraj uruchomiłem kilka testów przeciwko zestawowi 10 wyeksportowanych plików CSS, a wynik był rozczarowujący, w najlepszym przypadku, mieliśmy około 1% wzrostu kompresji, należy pamiętać, że nasza firma jest bardzo analna, jeśli chodzi o wydajność, więc rzeczy takie jak #ffffff (zamiast #fff) są nie do przyjęcia, twój przebieg może się różnić, ja ' d polecam ci wziąć go na jazdę próbną co najmniej :) – leopic

+3

Jeśli masz zainstalowany node.js, jest [csso] (https://github.com/css/csso), który wygląda na to, że jest aktywnie konserwowany. Instrukcja wyjaśnia, jakie optymalizacje to zrobi. – rwb

0

Aby zoptymalizować kod zawsze używać sprężonego --style '' opcji w linii pochwalić

na przykład:

sass --watch screen.sass --style compressed 

SASS ułatwia Ci życie, ale w obecnym stanie nie można uzyskać idealnych optymalizacji, chyba że możesz napisać kod ruby ​​i napisać go samemu. Istnieje kilka obejść, które mogą wyglądać na niezręczne w twoim przykładzie, ale idea, która za tym stoi, aby zaoszczędzić czas i nie trzeba go wpisywać samodzielnie.

na przykład mógłby swój prawdopodobnie optymalizacji kodu przy użyciu (przestrzenie powinny być usunięte) nich podejście:

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

zamiast:

span { 
    background: red; 
    color: green; 
} 

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

w czystym CSS, ponieważ jest on zgodny z nowsza składnia SASS w SASS można to zrobić przez:

%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 
} 

nawet jeśli nie używaliśmy oddzielonych przecinkami stylu jak chcesz w swoim zwykłym CSS byłoby produkować zoptymalizowany kod:

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

i nie powtarzać tego samego atrybutu i wartości:

span { 
    background: red; 
    color: green; 
} 

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

Zauważyłeś Użyłem '% theme-' zamiast '.theme-', co powoduje różnicę w wynikach. Selektor klasy byłby zawarty w pliku wyjściowym

, a dwie niepotrzebne właściwości "koloru" z wartościami "dziedziczącymi" nie zostałyby usunięte nawet w trybie skompresowanym.

+2

Nie chodziło o pytanie, jak zoptymalizować pisanie kodu, ale o to, by kompilator "naprawił" nadmiarowe wiersze css. –

+0

@MarshallAnschutz czy kiedykolwiek pracowałeś z SASS? co według ciebie jest złe w mojej odpowiedzi? Chodzi mi o to, żeby powiedzieć kompilatorowi, żeby to naprawił, nie był on wtedy w stanie odpowiedzieć na to pytanie, żeby to zrozumieć. W ten sposób optymalizuje twój kod. Ktoś uznał to za użyteczne, więc zamiast mnie zgubić, dać mu lepszą odpowiedź, a ja z chęcią dam ci upominkować, bo na końcu liczy się pomoc, jaką od ciebie otrzymują ludzie. – orustammanapov

+1

jeśli spojrzysz na moje oryginalne pytanie, źródło, które ma 4 przęsła, mogło zostać zredukowane do 1 span. Oczywiście, mógłbym napisać to w ten sposób, ale czasami używając biblioteki takiej jak Bootstrap, nadpisujesz wiele stylów dosłownie, powodując powielanie stylów. Moje pytanie brzmi, jak zmusić kompilator do automatycznego usuwania nieużywanych css z dokumentu. –

5

myślę, że mogę się znaleźć sposób, aby przynajmniej znaleźć duplikaty style zarówno CSS Sass/mniej szablonów:

open source csscss kosztownych http://zmoazeni.github.io/csscss/

To wydaje się być w stanie wykryć duplikaty, mimo że mam do poprawki małpy wokół bootstrap-sass gem css nie jest w tym samym folderze co moje zasoby css.

z dokumentacji, można uruchomić:

$ csscss -v path/to/styles.css 

lub

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

"Chociaż mam do poprawki małpy wokół css bootstrap-sass nie jest w tym samym folderze, co moje aktywa css." - Proszę zgłoś problem na [github] (https://github.com/zmoazeni/csscss/issues). Chciałbym wiedzieć, co próbujesz, a co nie działa. –

Powiązane problemy