Допустим, у нас есть HTML-страница с единственной таблицей стилей
. Как браузер принимает правила из этой таблицы стилей и применяет их к HTML? Я не спрашиваю, как сделать это быстрее, я хочу знать, как обрабатывается сам рендеринг.
Применяет ли он каждое правило одно за другим, когда он анализирует таблицу стилей и постепенно отображает результат? Или содержимое файла CSS полностью загружено, затем полностью оценено, и , затем применяются к HTML сразу? Или что-то еще?
Я задаю это после публикации ответа ранее на вопрос о порядке правил CSS, влияющем на скорость рендеринга , с предположением, что стили были отображены как загруженная таблица стилей , поэтому первые правила будут применяться раньше последних, а не все сразу. Я не уверен, откуда я взял эту идею, это просто то, о чем я всегда думал.
Я попробовал демонстрацию на своем сервере, которая выглядела так:
Test
test.css
content:
html { background:green }
/* thousands of lines of irrelevant CSS to make the download slow */
html { background:red }
Testing в Firefox 5 я сначала ожидал увидеть зеленый цвет, а затем он станет красным. Этого не произошло. Я пробовал использовать две отдельные таблицы стилей с конфликтующими правилами и получил те же результаты. После многих комбинаций единственным способом заставить его работать был встроенный блок Затронуты ли перерисовки в какие-либо с помощью CSS, или окончательный результат применяется сразу после того, как вся таблица стилей загружена и правила вычислены для того, каким должен быть окончательный результат? Файлы CSS загружаются параллельно с самим HTML или блокируют его (как это делают теги скрипта)? Как это на самом деле работает? Я не ищу советы по оптимизации, я ищу авторитетные ссылки на эту тему, чтобы я мог цитировать их в будущем. Было очень сложно найти эту информацию, не обнаружив тонны несвязанного материала. Резюме:
в
с конфликтующими правилами, исходящими из
в (само тело было полностью пустым, за исключением тега ссылки). Даже использование встроенного атрибута стиля
в теге
с последующей загрузкой этой таблицы стилей не привело к ожидаемому мной мерцанию.
@import
, несколько
s, встроенные атрибуты стиля,
блоки в голова и различные механизмы рендеринга?