Браузеры рассматривают селекторы cправа налево. Например, при нахождении элемента <a>
в дереве документа будут выбраны все селекторы с a
или *
на конце и будет осуществлён просмотр вверх по дереву в поисках элементов входящих в селектор до тех пор пока не будут найдены подходящие элементы, не станет понятно, что селектор не применим или не будет достигнут конец документа.
Т.е. в случае селекторов .b-services li a
и .b-user a
(Tag Rules) оба они будут испробованы для каждой ссылки на странице.
Источники, подтверждающие это:
- Writing Efficient CSS for use in the Mozilla UI
- Faster HTML and CSS: Layout Engine Internals for Web Developers
Наглядный пример: 30 тысяч div'ов на странице, селекторы заканчиваются на .text (рефлоу 5 секунд) и на div (рефлоу 37 секунд, осторожно! браузер замерзает, а потом оттаивает).
Чем больше Tag Rules на странице, тем медленнее страница отрисовывается. Для того, чтобы вёрстка была масштабируемой, чтобы на одних и тех же подходах можно было сделать и «Home Page для кота» и почту Яндекса надо найти универсальное решение, которое подходит на все случаи жизни.
Такое решение, на мой взгляд, это использование абсолютно-независимых блоков для вёрстки всех-всех блоков на странице и отказ от global reset. В этом случае каждый элемент блока получает свой уникальный класс и селекторы отрабатывают максимально быстро.
Открытым вопросом пока остаётся влияют ли на скорость применения селекторов наличие селекторов которые ничего не матчат, надо написать тесты.
Другие проблемы вёрстки и их решения в следующих выпусках нашего журнала. Оставайтесь на проводе.
Вы неискажающие блоки обратно переименовали?
А, вообще, мне эта идея очень нравится ещё и потому, что она решает серьёзную проблему в новом ULL (которая появилась в контексте отказа от собственной семантической разметки в пользу YACF-разметки).
На счёт ускорения рендера в других браузерах в 2-5 раз - это, насколько я понимаю, 200-500%, а Вы вроде бы говорили о 5-7%. Как-то не логично в общем.
Опять же, не знаю насколько большим должен быть проект, чтобы идти на такое. А проекты в 20-50 страниц верстки, имхо, такого геморроя не стоят.
231 ms. Привет из 2014