Войти с помощью github
Форум /

UPDATE: минимизатор написан: http://clubs.ya.ru/ui/replies.xml?item_no=105

Отказавшись от каскада в CSS и начав использовать абсолютно-независимые блоки мы получили более простой CSS (практически без наследования и побочных эффектов), который можно относительно простыми способами оптимизировать по размеру.

Например, можно объединять селекторы с одинаковыми правилами.

Было:

.a { color: red }
.b { color: red }



Стало:

.a, .b { color: red }



Или убирать перекрывающиеся свойства:

Было:

.a { color: red }
.a { color: green }



Стало:

.a { color: green }



Если использовать минимизацию классов, то селекторы получаются короткие и несколько селекторов может быть меньше, чем правила, к которым они относятся. Можно объединять селекторы с повторяющимися правилами:

Было:

.a { position: relative; z-index: 1; width: 100% }
.b { position: relative; width: 100%; color: red }



Стало:

.a, .b { position: relative; width: 100% }
.a { z-index: 1 }
.b { color: red }



Задача состоит в том, чтобы написать оптимизатор, который так переставляет правила, чтобы результирующий CSS получился как можно меньше по размеру без потери функциональности.

Первое и второе это относительно просто, а вот третье это ой-ой-ой.

UPDATE:

Ещё оптимизации:

0px -> 0
#ffffff -> #fff
#f00 -> red
полная запись -> укороченная, если это возможно сделать безопасно