«CSS класс» - это неправильное название; class
является атрибутом (или свойством в терминах сценариев), который вы назначаете элементам HTML. Другими словами, вы объявляете классы в HTML, а не CSS, поэтому в вашем случае класс «мишень» делает на самом деле существует на тех конкретных элементов, и разметка вполне допустимо , как это.
Это не обязательно означает, что вам нужно объявить класс в HTML, прежде чем вы сможете использовать его в CSS. Смотрите комментарий Руаха. То, является ли селектор допустимым, полностью зависит от синтаксиса селектора , и CSS имеет свой собственный набор правил для обработки ошибок синтаксического анализа , ни одно из которых не касается разметки вообще. По сути, это означает, что HTML и CSS полностью независимы друг от друга в аспекте достоверности. 1
Как только вы это поймете, станет ясно, что нет побочного эффекта от не определения .target
правила в вашей таблице стилей. 2 Когда вы присваиваете классы своим элементам, вы можете ссылаться на эти элементы по этим классам либо в таблице стилей, либо в скрипте, либо в обоих. Ни один из них не зависит от другого. Вместо этого они оба ссылаются на разметку (или, точнее, ее представление DOM). Этот принцип применяется даже в том случае, если вы используете JavaScript для применения стилей, как вы делаете это в своей строчке jQuery.
Когда вы пишете правило CSS с помощью селектора классов, все, что вы говорите, это «Я хочу применить стили к элементам, которые принадлежат этому классу». Точно так же, когда вы пишете скрипт для извлечения элементов по определенному имени класса, вы говорите: «Я хочу делать вещи с элементами, которые принадлежат этому классу». Есть ли элементы, которые принадлежат к рассматриваемому классу, - это отдельная проблема.
1 Именно поэтому селектор CSS ID соответствует всем элементы с данным идентификатором, независимо от того, появляется ли идентификатор ровно один раз или несколько раз (что приводит к несоответствующему документу HTML).
2 Единственная известная мне ситуация, когда необходимо использовать такое пустое правило CSS, - это когда некоторые браузеры отказываются применять некоторые другие правила должным образом в результате ошибки; создание пустого правила приведет к тому, что эти другие правила будут применены по какой-то причине. Посмотрите этот ответ для примера такой ошибки. Однако это на стороне CSS и, следовательно, не должно иметь ничего общего с разметкой.
.css
стили, установленные с помощью .css, очень трудно переопределить, не вызывая других проблем, поэтому я стараюсь их избегать.