Этюды для программистов Charles Wetherell, больше жемчуга программирования (Jon Bently),
В терминах CSS, класс - это селектор, который начинается с точки, например
.foo { ... }
Он будет использоваться в форме
<div class="foo">
Это использование «класса» больше в смысл «набор или категория вещей, имеющих общую характеристику и отличающихся от других по виду или качеству», а не заимствование из терминологии OO.
Псевдокласс - это «не совсем настоящий», как пользовательский агент определяет, когда и / или сколько контента соответствует требованиям (например, : hover
, : active
и т. д.).
Это псевдо , потому что вы этого не сделали » т сделать это; браузер "создал" его и позволяет настроить его так, чтобы он изменял внешний вид ссылки, когда она находится в этом состоянии.
С CSS2 / 3, допускающим более сложные правила для элементов (такие как input [type = checkbox] и т.п., термин псевдокласс кажется все более и более устаревшим.
Однако псевдокласс -классы - единственные идентификаторы CSS, которые (более или менее) надежно изменяются при взаимодействии с пользователем. С селекторами атрибутов, а с другими, большинство браузеров, как правило, сохраняют состояние всех элементов при загрузке страницы, и любые внесенные изменения игнорируются. Но с псевдо -классы, они фактически изменяют стиль, когда псевдокласс становится истинным (или ложным).
Итак, имея в виду это конкретное определение, они являются классами, потому что правило применяется к любым элементам, которые имеют одно и то же «состояние» и, следовательно, можно рассматривать как «класс», но это псевдо, потому что это не настоящий класс, определенный атрибутом, и потому что «класс»могут или не могут быть правдой в любой момент времени, когда страница просматривается.
Также интересно отметить, я думаю, что с некоторыми основанными на пользовательском интерфейсе псевдоклассами (я имею в виду конкретно : hover
]) только один элемент в любой момент времени действительно может иметь этот «класс», так что это скорее псевдоидентификатор, основанный на моем вышеупомянутом определении.
Из спецификации селектора w3c CSS2 :
CSS вводит концепции псевдоэлементов и псевдоклассов, чтобы разрешить форматирование на основе информации, которая находится вне дерева документа. .
Псевдоэлементы создают абстракции о дереве документа за пределами тех, которые определены языком документа. Например, языки документов не предлагают механизмов для доступа к первой букве или первой строке содержимого элемента. Псевдоэлементы CSS позволяют разработчикам таблиц стилей обращаться к этой недоступной в противном случае информации. Псевдоэлементы также могут предоставлять разработчикам таблиц стилей способ назначать стиль контенту, который не существует в исходном документе (например, псевдоэлементы: before и: after предоставляют доступ к сгенерированному контенту).
Псевдоклассы классифицируют элементы по характеристикам, отличным от их имени, атрибутов или содержимого; в принципе характеристики, которые не могут быть выведены из дерева документа. Псевдоклассы могут быть динамическими в том смысле, что элемент может приобретать или терять псевдокласс, когда пользователь взаимодействует с документом. Исключениями являются «: first-child», который может быть выведен из дерева документа, и «: lang ()», который в некоторых случаях может быть выведен из дерева документа.
Таким образом, псевдокласс - это то, к чему вы можете прикрепить стиль, но вы никогда не распечатаете его самостоятельно в HTML. Кроме того, псевдокласс может быть получен и потерян в зависимости от взаимодействия пользователя с пользовательским интерфейсом.