В чем разница между : и :: в CSS?

Я годами гуглила «чем отличается : от :: в CSS», прежде чем эта информация наконец осела у меня в голове. Звучит знакомо? Тогда эта статья для вас.

Если вы хотите быстро получить ответ на вопрос из заголовка статьи, то вот он:

  • : относится к псевдоклассам, таким как :visited или :hover
  • :: – для псевдоэлементов, таких как ::first-of-type или ::after

А если хотите более подробных объяснений, давайте рассмотрим примеры.

Что означает «псевдо»?

Приставка «псевдо» указывает на то, что нечто является поддельным, ненастоящим. Но как могут быть поддельными классы или элементы? Псевдоклассы и псевдоэлементы не прописаны в HTML вручную и не появляются в DOM (или дереве документа). Их создает CSS!

Что такое псевдокласс?

Псевдоклассы позволяют вам выбирать элементы в CSS, основываясь на информации не из HTML страницы. Например, на информации, хранящейся в браузере. Доступ к псевдоклассам осуществляется при помощи одного двоеточия, за которым идет имя псевдокласса.

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

a:visited {
  color: #c58af9;
}

Это можно посмотреть в действии на примере движка Google. Зайдите на google.com и поищите что-нибудь такое, что вы точно уже искали. Откройте инструменты разработчика в браузере и найдите селектор a:visited в CSS.

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

a:hover {
  text-decoration: underline;
}

О различных видах псевдоклассов, доступных в CSS, можно почитать в обширной документации на MDN.

Что такое псевдоэлемент?

Селекторы псевдоэлементов позволяют использовать CSS для стилизации конкретной части элемента DOM. Доступ к псевдоэлементам осуществляется при помощи двойного двоеточия, за которым идет селектор псевдоэлемента.

В отличие от псевдоклассов псевдоэлементы нельзя использовать для стилизации элементов в привязке к их состоянию.

От редакции Techrocks. На тему псевдоэлементов у нас есть отдельная статья – “Псевдоэлементы в CSS: продвинутая стилизация”.

Рассмотрим пример. Часто сайты со статьями используют в оформлении буквицы: первая буква обозначает начало блока текста и делается очень большой. Достичь такого эффекта можно при помощи псевдоэлемента ::first-letter.

p::first-letter {
  font-size: 300%;
}

Вот пример того, как выглядит буквица в посте.

Также можно нацелиться на первую строку элемента – для этого используется селектор ::first-line.

p::first-line {
  font-size: 300%;
}

Вот еще несколько распространенных селекторов псевдоэлементов, которые вы можете использовать в своих CSS-файлах:

  • ::before
  • ::after
  • ::first-of-type
  • ::last-of-type
  • ::placeholder.

Почитать о разных видах доступных псевдоэлементов можно в официальной документации на MDN.

Вот и все! Возможно, это был последний раз, когда вам пришлось гуглить разницу между : и :: в CSS!

Перевод статьи «What’s the difference between : and :: in CSS?».

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

1 комментарий к “В чем разница между : и :: в CSS?”

  1. В смысле блин “:first-of-type” это псевдоэлемент?! Обычный псведокласс и пишется с одинарным двоеточием

    Вот это статья!!!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх