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
полная запись -> укороченная, если это возможно сделать безопасно
Все цвета с названиями заменять или только red, ведь выгода по моему только на нем )?
@Виктор
Гринчик я так понимаю любое сжатие, особенно с переименованием селекторов, это для браузера )
я в этом чую подвох!
Пока на уровне предположения:
.b-block-name { color: red }
.b-block-name_modified { color: green }
Да-да, я просто забил на специфичность и никаких проблем с этим не имею. Вы не думали насчёт такого?
Правда в этом случае будет green вместо blue.