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

a:hover

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

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


person omg    schedule 15.08.2009    source источник


Ответы (5)


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

.foo { ... }

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

<div class="foo">

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

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

person Rowland Shaw    schedule 15.08.2009

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

person Noon Silk    schedule 15.08.2009
comment
но почему это класс? Если вы можете наводить курсор только на одну область экрана за раз, то только один p ​​может принять правило CSS в любой момент времени. Разве класс не подразумевает несколько элементов, принадлежащих к какой-то общей группе, а правило стиля класса означает, что все они будут наследовать это правило? - person Anthony; 15.08.2009
comment
@Anthony: псевдокласс можно рассматривать как состояние. И каждый элемент, находящийся в состоянии hover, может быть классифицирован по :hover. Поэтому всякий раз, когда элемент a получает состояние hover, его можно выбрать с помощью :hover. - person Gumbo; 15.08.2009

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

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

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

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

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

person PatrikAkerstrand    schedule 15.08.2009

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

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

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

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

person Anthony    schedule 15.08.2009

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

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

person AYANTOLA TESLIM    schedule 22.12.2019