Почему псевдокласс так называется?

a:hover

Почему это называется "псевдокласс"?

Есть ли сходство с понятием "класс"?

4 ответа

Решение

В терминах CSS класс - это селектор, который начинается с полной остановки, например

.foo { ... }

Это будет использоваться в форме

<div class="foo">

Такое использование "класса" в большей степени означает "набор или категорию вещей, имеющих общую характеристику и отличающихся от других по виду или качеству", а не заимствование из терминологии ОО.

Псевдокласс является "не совсем реальным", так как пользовательский агент определяет, когда и / или сколько контента квалифицируется (например, :hover, :active, так далее).

Это псевдо, потому что ты не сделал это; браузер "создал" его и позволяет настроить его, чтобы изменить внешний вид ссылки, когда она находится в этом состоянии.

Из спецификации селектора w2c CSS2:

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

  • Псевдоэлементы создают абстракции о дереве документа за пределами указанных в языке документа. Например, языки документа не предлагают механизмов доступа к первой букве или первой строке содержимого элемента. Псевдоэлементы CSS позволяют дизайнерам таблиц стилей ссылаться на эту недоступную в противном случае информацию. Псевдоэлементы также могут предоставлять разработчикам таблиц стилей способ назначать стиль контенту, который не существует в исходном документе (например, псевдоэлементы:before и:after дают доступ к сгенерированному контенту).

  • Псевдоклассы классифицируют элементы по характеристикам, отличным от их имени, атрибутов или содержимого; в принципе характеристики, которые не могут быть выведены из дерева документов. Псевдоклассы могут быть динамическими в том смысле, что элемент может получить или потерять псевдокласс, пока пользователь взаимодействует с документом. Исключения составляют: "first-child", который может быть выведен из дерева документа, и ":lang()", который в некоторых случаях может быть выведен из дерева документа.

В общем, псевдокласс - это то, к чему вы можете прикрепить стиль, но вы никогда не распечатываете его сами в HTML. Кроме того, псевдоклас может быть получен и потерян в зависимости от взаимодействия пользователя с пользовательским интерфейсом.

С CSS2/3, допускающим более сложные правила элементов (такие как input[type=checkbox] и т. П., Термин псевдокласс выглядит все более и более устаревшим).

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

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

Также интересно отметить, я думаю, что с некоторыми псевдоклассами на основе пользовательского интерфейса (я имею в виду :hover) только один элемент в любой момент времени может действительно иметь этот "класс", так что это почти что псевдо-идентификатор, основанный на моем приведенном выше определении.

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

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

Другие вопросы по тегам