8.1 CSS-селекторы

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

Много букв никто не любит, поэтому представим, что вы - новобранцы, заброшенные в качестве подкрепления к противотанковому подразделению. Через 15 минут на нас снова попрут танки врага и мне нужно как можно быстрее научить вас пользоваться устройствами наведения турелей. 

И так, открываем код страницы. Crome - Правая кнопка мыши - Исходный код. В этом режиме Crome открывает новое окно с исходным кодом, в левом верхнем углу которого есть стрелочка с квадратом. Нажимаем её и ведём курсор по странице... её элементы начинают подсвечиваться в коде. Выбираем нужный нам элемент, например заголовок. 

В заголовке мы видим что-то вроде 

<div id="question-header" class="grid sm:fd-column">... 

id - это самый верный наш друг и лучший способ навестись на цель. id обычно не повторяются на странице и однозначно указывают на элемент. Селектором для элемента с указанным id будет такая строчка 

#question-header

Но, допустим, в заголовке присутствуют ещё какие-то элементы и нужны они нам не все. Тогда мы через пробел можем дополнительно уточнить цель. Конструкция 

#question-header h1 

будет обозначать текст внутри тега h1, который в свою очередь находится внутри элемента с id=question-header

Относительно легко можно работать и с вот такой конструкцией

<div id="left-sidebar" data-is-here-when="md lg" class="left-sidebar js-pinned-left-sidebar">

У неё есть class и селектор будет выглядеть как

.js-pinned-left-sidebar 

Но с классами следует быть осторожным, они могут относится к нескольким элементам и вы можете получить больше, чем рассчитывали. В этом случае следует искать дополнительные уточняющие классы или id в вышестоящих элементах, например:

.main-window .js-pinned-left-sidebar

Ну и наконец, самый убийственный вариант, когда нет ничего - ни классов, ни id, голые теги. Тогда мы делаем так: 

body > div:nth-child(2)

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

Этого достаточно для минимального ликбеза, а подробнее об этом и не только, можно почитать здесь: https://habr.com/ru/company/otus/blog/350368/