Начало работы с псевдоклассами и псевдоэлементами CSS
Вы можете использовать селекторы CSS для нацеливания и стилизации элементов на веб-странице. Стандартный селектор может нацеливаться на определенный абзац или все заголовки на определенном уровне. Псевдоселекторы идут еще дальше, позволяя таргетировать части страницы с большим количеством нюансов.
Псевдоклассы нацелены на разные состояния элемента: например, когда указатель наведен на ссылку. Псевдоэлементы позволяют выбрать определенную часть элемента, например первую строку абзаца.
Итак, без лишних слов, давайте объясним основы псевдоклассов и псевдоэлементов.
Что такое псевдокласс?
Псевдокласс – это селектор CSS, который выбирает элементы HTML в определенном состоянии. Некоторые состояния относятся к контексту, например к первому элементу его типа. Другие являются поведенческими, например, когда ссылка наведена указателем мыши. Они позволяют стилизовать контент на основе действий пользователя. В частности, контекстные состояния помогают писать гибкий, удобный и чистый код. Поведенческие состояния предлагают ярлык для функциональности, для которой в противном случае вам, возможно, пришлось бы использовать JavaScript.
Вы можете легко распознать псевдо-классы , как они начинаются с двоеточия (:). Давайте посмотрим на несколько примеров простых псевдоклассов и псевдоклассов действий пользователя.
Пример простого псевдокласса
Сначала напишем HTML-код.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Pseudo-class and Pseudo-element</title>
</head>
<body>
<header>Lorem ipsum dolor, sit amet consectetur adipisicing elit.</header>
<section>
<p>
Voluptatum fuga, impedit sequi totam numquam assumenda repellat
tempora sapiente! Nihil unde vel recusandae, expedita aperiam tempora
totam deserunt non porro reprehenderit.
</p>
<p>
Dicta totam non iusto labore sapiente numquam hic tempora earum,
minima repellendus pariatur fugit nobis ex adipisci, tempore vitae
laboriosam harum. Quidem!
</p>
<p>
Suscipit repellendus cupiditate dignissimos eveniet beatae quas
laudantium, laboriosam minus iusto, corporis ullam alias porro sequi
necessitatibus autem ipsam debitis libero sapiente!
</p>
<p>
Iste iure deserunt vel? Nisi omnis quo quibusdam inventore delectus.
Molestias exercitationem in quia possimus consectetur dolorum sequi
veniam quo corporis ullam?
</p>
<p>
Suscipit repellendus cupiditate dignissimos eveniet beatae quas
laudantium, laboriosam minus iusto, corporis ullam alias porro sequi
necessitatibus autem ipsam debitis libero sapiente!
</p>
<p>
Iste iure deserunt vel? Nisi omnis quo quibusdam inventore delectus.
Molestias exercitationem in quia possimus consectetur dolorum sequi
veniam quo corporis ullam?
</p>
<p>
Asperiores illum beatae dolores, dolore quae exercitationem laudantium,
officia nam distinctio tempora deleniti itaque quibusdam iste quo eaque
reiciendis nostrum saepe aperiam?
</p>
</section>
</body>
</html>
Обратите внимание, что в одном разделе есть несколько абзацев. Чтобы стилизовать их индивидуально, вы можете дать каждому отдельный класс и использовать селектор классов CSS. Но это не очень практично, особенно если контент может часто меняться. Вместо этого вы можете использовать псевдоклассы, которых нет в HTML, но которые по-прежнему позволяют настраивать таргетинг и стили для элементов. Посмотрим, как это работает:
CSS
body {
font-size: 1em;
}
header {
font-size: 3em;
}
/* Selecting the first paragraph */
p:first-child {
font-size: 1.3em;
}
/* Selecting the last paragraph */
p:last-child {
color: red;
text-decoration: underline;
}
/* Selecting the nth paragraph */
p:nth-child(3) {
color: blue;
font-style: italic;
}
p:nth-child(4) {
color: #666;
font-size: 1.9em;
}
p:nth-child(5) {
color: yellowgreen;
font-weight: bold;
}
Выход:
Используя простые псевдоклассы, такие как : first-child ,: nth-child (x) и ,: last-child, мы можем легко выбирать и стилизовать абзацы. Обратите внимание, что эти псевдоклассы выбирают сами абзацы, а не их дочерние элементы.
Пример псевдокласса действий пользователя
Псевдоклассы действий пользователя или поведения применяются только тогда, когда пользователь взаимодействует с документом. Один из самых популярных примеров включает в себя : link,: посещено ,: hover и : focus . Давайте посмотрим на пример состояния : hover для ссылки и изображения.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Pseudo-class and Pseudo-element</title>
</head>
<body>
<div class="image-box">
<img class="image-back" src="images/By_Unsplash_Search.jpg" alt="Coding on a laptop" />
<img class="img-front" src="images/By_Unsplash.jpg" alt="Search bar with blue background" />
</div>
<div>
<a href="#">Learn more about Pseudo-classes</a>
</div>
</body>
</html>
В этом примере есть два изображения и ссылка. Изображения расположены в одном месте, поэтому вы можете переключать их, скрывая одно и показывая другое.
CSS
body {
font-family: 'Inter', sans-serif;
}
.image-box {
position: relative;
width: 70%;
margin: 5em;
color: #fff;
}
.image-box img {
display: inline-block;
position: absolute;
left: 0;
width: 70%;
}
.image-box img.img-front:hover{
opacity:0;
cursor: pointer;
}
a {
position: absolute;
bottom: 2em;
left: 3em;
text-decoration: none;
color: #222;
display: inline-block;
font-size: 2.5em;
font-weight: 600;
border-bottom: 5px solid rgb(250, 0, 0);
}
a:hover {
color: rgb(250, 0, 0);
border-bottom: none;
}
Этот первый пример демонстрирует эффект наведения курсора на ссылку. CSS меняет свой цвет и границу:
Во втором примере вы можете увидеть эффект наведения курсора на изображение. Его непрозрачность установлена на 0, что фактически делает изображение прозрачным.
Что такое псевдоэлемент?
Псевдоэлемент ведет себя аналогично псевдоклассу. Помните, что псевдокласс применяется к существующему элементу. Между тем, псевдоэлемент действует так, как будто существует новый элемент HTML. Кроме того, псевдоэлемент начинается с двойного двоеточия ( ::) . Посмотрим, как это работает, на примере.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Pseudo-class and Pseudo-element</title>
</head>
<body>
<header>
<div class="header-img">
<img src="By_Unsplash.jpg" alt="Coding on a laptop" />
</div>
</header>
</body>
</html>
Теперь мы будем использовать псевдоэлемент :: before, чтобы добавить текст Learn More, и псевдоэлемент :: after, чтобы добавить текст Buy Now, используя только CSS. Мы также применим свойство position, чтобы разместить эти псевдоэлементы относительно родительского контейнера.
body {
font-family: 'Inter', sans-serif;
color: #666;
}
img {
width: 30em;
vertical-align: middle;
}
.header-img::before {
content: "Learn More";
color: #fff;
background-color: rgb(75, 159, 192);
padding: 0.3em 5em;
display: inline-block;
position: absolute;
top: 25px;
left: -70px;
transform: rotate(-45deg);
}
.header-img::after {
content: "Buy Now";
color: #fff;
background-color: rgb(212, 115, 91);
padding: 0.3em 5em;
display: inline-block;
position: absolute;
bottom: 25px;
right: -70px;
transform: rotate(-45deg);
}
header {
position: relative;
overflow: hidden;
font-weight: 600;
}
header,
section {
width: 30em;
}
Последний эффект накладывает метки в виде ленты в верхнем левом и нижнем правом углу изображения:
Получите в свои руки псевдоклассы и псевдоэлементы
Псевдоклассы и псевдоэлементы CSS при правильном использовании открывают двери для многих возможностей. Поначалу вы можете почувствовать себя ошеломленным, но практика этой техники – ключ к совершенствованию ваших навыков веб-дизайна. Главное – всегда тщательно тестировать свои проекты, используя такие функции, как DevTools Google Chrome.
Мы надеемся, что вы узнали основы псевдоклассов и псевдоэлементов. Помните, что обучение никогда не прекращается! Итак, продолжайте изучать новые селекторы CSS и попробуйте реализовать и протестировать их в своем предстоящем проекте.