Как и когда правила CSS применяются к иерархии отображения?

Есть ли открытая или общая реализация CSS, которая может применяться к произвольной иерархии отображения? Я пытаюсь построить один для иерархии отображения Flash в AS3.

Мне интересно, как применить стили CSS к иерархии отображения. Мне кажется, что некоторые или все селекторы должны быть повторно применены ко всему отображаемому списку каждый раз, когда отображаемый объект добавляется, удаляется или перемещается, а также когда происходят события, такие как изменения фокуса, учитывая существование селекторов например, "первый ребенок" и псевдоселектора типа ": focus".

Будет ли начальное приложение стилей включать сканирование всего списка отображения по одному элементу за раз, применение стилей или все объекты будут отсортированы спереди и связаны с определенными категориями правил? Или что-то в этом роде.

Я действительно ищу хороший общий ресурс для реальной реализации.

Обновление: я, вероятно, ищу что-то на уровне this, но я не знаю, является ли это актуальным: "Иерархические ограничения обеспечивают простой и унифицирующий способ понимания большей части спецификации CSS 2.0. Эта точка зрения также предполагает, что решатели ограничений обеспечивают естественную технику реализации. Каждое свойство стиля и размещение каждого элемента в документе могут быть смоделированы переменной Ограничения на эти переменные возникают из-за возможностей браузера, поведения макета по умолчанию, связанного с типом элемента, из структуры древовидной структуры документа и применения правил стиля. Окончательный внешний вид документа определяется путем нахождения решения этих ограничений". Что вызывает вопрос о том, как и когда решать ограничения.

Ответ 1

@Triynko, относительно Как работают браузеры в HTML5 Скалы:

Блин...

WebCore просто бросает глобальный переключатель, когда встречается какой-либо селектор, и отключает разделение стилей для всего документа, когда он присутствует. Это включает селектор + и селектора, такие как: first-child и last-child.

Чтобы один из способов справиться с этим, sledghammer, чтобы убить муху, я помню, чтобы не использовать эти селекторы, когда-либо, lol.

Очень полезно:

После разбора таблицы стилей правила добавляются в одну из нескольких хеш-карт, в соответствии с селектором. Существуют карты по id, по имени класса, по имени тега и общей карте... Если селектор - это id, правило будет добавлено к карте id, если это класс, он будет добавлен в карту классов и т.д. Эта манипуляция значительно упрощает соответствие правил. В каждом объявлении нет необходимости искать: мы можем извлечь соответствующие правила для элемента из карт. Эта оптимизация устраняет 95%% правил, поэтому их не нужно даже учитывать при процессе сопоставления (4.1).

И @BoltClock:

В общем, сложные селекторы сопоставляются справа налево (вторично для этих оптимизаций, конечно), оценивая каждую последовательность простых селекторов и делая шаг через каждый комбинатор при этом.

Ссылки