-
Notifications
You must be signed in to change notification settings - Fork 189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Учёт встречаемости свойств при определении нужно ли склеивать #20
Comments
Жаль нет голосования за Issues. |
Ещё подумалось: можно при анализе «есть ли что-то, что мешает склеивать селекторы» учитывать могут ли фактически пересечься селекторы. Например, если в селекторах есть разные имена тегов для конечного элемента, то они точно друг друга не перекроют и их порядок не важен:
То же и с nth-childами: два подобных селектора никогда не будут применяться к одному элементу, следовательно, они не будут и конфликтовать:
Ну и, кажется, селекторы с айдишниками не могут конфликтовать т.к. для одного элемента в html не может быть два айди:
Вообще, подозреваю, подобных случаев может быть довольно много (селекторы атрибутов, :not() и т.д.), правда, и учитывать всё это дело, должно быть, сложно. Но какой-то профит от этого можно будет в конце концов получить. Хотя, это можно и отдельным issue вынести, наверное ) |
Ты пока всё сюда складывай, я потом всё унесу в CSS stat, когда всерьёз за него возьмусь. |
Ага, ок. Роман Комаров 09.09.2011, 15:10, "Sergey Kryzhanovsky" reply@reply.github.com:
|
Ёлки, я не в тот issue ответил. Т.ч. не "ок". :) Всё пока на своих местах. |
+ сюда же — можно смотреть на вес селекторов. Можно безопасно сжать .a{width:10px}
.b .c{width:20px}
.d{width:10px;} до .b .c{width:20px}.a,.d{width:10px} т.к. .a{width:10px}
.b .c{width:20px}
.a{height:10px} можно сжать до .b .c{width:20px}.a{width:10px;height:10px} |
В итоге, кажется, что, если всё это учитывать (наличие перекрывающих свойств, невозможность пересечения селекторов, важность специфичности), то структурная минификация может стать заметно круче. |
М... Первые CSSO умели сжимать так, как в последнем примере. Оказалось, что в ряде случаев это опасная фишка, дающая разный рендер "до" и "после". Одна из причин, почему тотальная лихая реструктуризация закончилась тем, что сейчас. Было год назад, детали не вспомню. |
Дада, но в этом таске я как раз описываю примеры когда не будет разницы в «до» и «после» — т.е. когда есть
и т.д. — т.е. всё-таки есть случаи когда можно структурно минифицировать. |
Хороший пример, в котором много чего можно было бы лучше структурно сжать — http://csswizardry.com/inuitcss/inuit.min.css У меня пока не получилось нормально выделить кейс оттуда, но если посмотреть на несколько первых селекторов, то там (с учётом последующих) в результате получаем такой сжатый CSS: body{margin:0}body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,dl,dd,ol,ul{padding:0}form,legend{margin:0;padding:0}table{padding:0}th,td,caption{margin:0}caption,figure,hr{padding:0} Т.к. селекторы по элементам никогда не пересекаются (т.е. порядок не важен), тут можно сгруппировать паджины и паддинги. |
Для многих новых свойств (т.е. редко используемых) может быть ситуация, что оно (свойство), встретится в таблице стилей только в двух-трёх местах, но при этом значение будет везде одинаковым. Сейчас если между двумя селекторами будет третий, то эти свойства не склеются, тогда как вынести это свойство из них в отдельный блок будет безопасным т.к. мы точно знаем, что нигде нет блоков, в которых это свойство могло бы быть переопределено.
Например, сейчас у
будут оптимизированы только первые два блока, тогда как если это и есть вся таблица стилей, то безопасно склеивать блоки с одинаковыми значениями. А вот если бы появился какой-то селектор
.block4 {text-shadow: 0 -1px 1px green;}
(причём только где-то между этими свойствами т.к. если он будет в конце или начале, то вес селектора не позволит потом им что-то переопределить), то всё, мы только тогда начинаем бояться и всё делаем как и сейчас.Тот же
text-shadow
часто может использоваться только для одного и того же эффекта вдавленного текста с одним и тем же значением, и из-за его природы вынести его в отдельный блок будет выгоднее и безопасно. Для всяких бордер-радиусов, бокс-шедоу и т.д. тоже вполне может возникнуть такая же ситуация.The text was updated successfully, but these errors were encountered: