>p.a.b#main {
> margin-bottom: 20px;
>}
Приоритет самых поздних правил работает, когда у правил одинаковая детализация. Это мера того, насколько точно оно описывает подходящие элементы, определяемая числом и видом необходимых аспектов элементов. К примеру, правило для >p.a
более детально, чем правила для >p
или просто >.a
, и будет иметь приоритет.
Запись >p > a {...}
применима ко всем тегам >
, находящимся внутри тега >
и являющимся его прямыми потомками. >p a {...}
применимо также ко всем тегам >
внутри >
, при этом неважно, является ли >
прямым потомком или нет.
В этой книге мы не будем часто использовать таблицы стилей. Понимание их работы критично для программирования в браузере, но подробное разъяснение всех их свойств заняло бы 2-3 книги. Главная причина знакомства с ними и с синтаксисом селекторов (записей, определяющих, к каким элементам относятся правила) – мы можем использовать тот же эффективный мини-язык для поиска элементов DOM.
Метод >querySelectorAll
, существующий и у объекта >document
, и у элементов-узлов, принимает строку селектора и возвращает массивоподобный объект, содержащий все элементы, подходящие под него.
>Люблю грозу в начале
> мая
>Когда весенний первый гром
>Как бы резвяся
> и играя
>Грохочет в небе голубом.
>
> function count(selector) {
> return document.querySelectorAll(selector).length;
> }
> console.log(count("p")); // Все элементы
> // → 4
> console.log(count(".animal")); // Класс animal
> // → 2
> console.log(count("p .animal")); // Класс animal внутри
> // → 2
> console.log(count("p > .animal")); // Прямой потомок
> // → 1
>
В отличие от методов вроде >getElementsByTagName
, возвращаемый >querySelectorAll
объект не интерактивный. Он не изменится, если вы измените документ.
Метод >querySelector
(без >All
) работает сходным образом. Он нужен, если вам необходим один конкретный элемент. Он вернёт только первое совпадение, или >null
, если совпадений нет.
Свойство стилей >position
сильно влияет на расположение элементов. По умолчанию оно равно >static
, что означает, что элемент находится на своём обычном месте в документе. Когда оно равно >relative
, элемент всё ещё занимает место, но теперь свойства >top
и >left
можно использовать для сдвига относительно его обычного расположения. Когда оно равно >absolute
, элемент удаляется из нормального «потока» документа – то есть, он не занимает место и может накладываться на другие. Кроме того, его свойства