#статьи
Учимся создавать плавные переходы, наложения и мягкие анимации.
Иллюстрация: Polina Vari для Skillbox Media
Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.
Свойство CSS opacity управляет прозрачностью элементов на веб-странице: оно позволяет сделать элемент невидимым или частично прозрачным, чтобы сквозь него просвечивал фон. С его помощью вы можете создавать наложения, анимации появления и исчезновения, а также различные визуальные акценты в интерфейсе.
Давайте разберёмся, как работает свойство opacity, какие значения оно принимает и в каких случаях его лучше всего применять на практике.
Содержание
Свойство CSS opacity (от англ. opacity — «непрозрачность») управляет степенью прозрачности элемента и всего его содержимого. Когда элемент становится полупрозрачным, сквозь него просвечивает фон страницы или другие элементы, которые находятся позади него.
Этот эффект широко применяется в современных интерфейсах. Он помогает создавать реакции на наведение курсора — например, затемнение или подсветку элементов. Также он позволяет реализовать плавные появления и исчезновения через переходы и анимации, добавлять полупрозрачные оверлеи и модальные окна. Кроме того, opacity позволяет временно скрыть элемент, не ломая всю вёрстку.
В отличие от display: none, свойство opacity не убирает элемент из потока и никак не влияет на расположение соседних блоков. Это делает его идеальным для интерфейсов, где нужны плавные изменения состояния без перестройки макета. Например, при наведении на карточку товара она плавно становится полупрозрачной, а остальные элементы страницы остаются на месте — никаких «прыжков».
Свойство opacity принимает значения от 0 до 1. Это коэффициент непрозрачности элемента: 0 — полная прозрачность (элемент невидим), 1 — полная непрозрачность (элемент полностью видим). Промежуточные значения создают разные степени полупрозрачности. Значение по умолчанию равно 1 — элемент полностью непрозрачен.
Дробные значения можно записывать с нулём впереди или без него. Например, opacity: 0.5 и opacity: .5 работают одинаково. Помимо числовых значений, opacity поддерживает процентную запись: 0% равно 0, а 100% соответствует 1. Однако, чтобы не путаться, советуем выбирать один вариант записи и использовать его во всём проекте.
Кроме того, свойство opacity поддерживает глобальные CSS-значения: inherit — наследует значение прозрачности от родительского элемента; initial — возвращает значение по умолчанию, то есть 1 (полная непрозрачность, как если бы свойство не было задано); unset — сбрасывает свойство к наследуемому значению от родителя, если оно установлено, или к начальному значению 1, если наследования нет.
.element {
opacity: 0; /* Полностью прозрачный */
opacity: 0.3; /* 30% видимости */
opacity: .5; /* 50% видимости */
opacity: 1; /* Непрозрачный */
opacity: 50%; /* То же, что opacity: 0.5 */
}
Браузер рисует веб-страницу не целиком, а по частям. Каждая такая часть называется композитным слоем — это отдельная область памяти, где браузер хранит готовое изображение одного или нескольких элементов. Слои нужны, чтобы при прокрутке, анимации или перемещении элемента не перерисовывать всю страницу — достаточно обновить только нужный слой. Так всё работает быстрее и плавнее.
Когда вы задаёте элементу свойство opacity со значением меньше 1, браузер переносит его на отдельный композитный слой. Сначала браузер полностью отрисовывает элемент, затем применяет к нему прозрачность и после этого накладывает готовый слой на то, что находится ниже на странице.
Создадим синий блок с текстом «Фоновый элемент» и поверх него разместим красный блок с opacity: 0.7, слегка сдвинутый в сторону. Красный блок полупрозрачен — сквозь него виден синий фон и текст. В зоне перекрытия цвета смешиваются, образуя промежуточный оттенок.
Вот как это выглядит в браузере.
Скриншот: Google Chrome / Skillbox Media
Чтобы попробовать, вставьте этот фрагмент в HTML-разметку:
<div class="container">
<div class="background">Фоновый элемент</div>
<div class="overlay">Полупрозрачное наложение</div>
</div>
Затем добавьте стили:
.container {
position: relative;
background: #f0f0f0;
width: 300px;
height: 300px;
}
.background {
padding: 20px;
background: #3498db;
color: #ffffff;
height: 100%;
width: 100%;
}
.overlay {
position: absolute;
top: 30px;
left: 30px;
right: 0;
bottom: 0;
background: rgba(231, 76, 60, 0.7);
display: flex;
align-items: center;
justify-content: center;
color: #ffffff;
}
Когда у элемента значение opacity становится меньше 1, браузер переносит его на отдельный композитный слой, и содержимое элемента не может выйти за границы слоя по оси Z. Даже если дочерний элемент имеет position: absolute и большой z-index, он останется внутри полупрозрачного родителя и не сможет перекрыть другие элементы.
Например, если внутри полупрозрачного красного блока сделать всплывающее меню, оно не сможет перекрыть элементы, которые находятся вне красного блока: оно будет видно только внутри него.
Браузер создаёт композитные слои не только для прозрачности. Он использует их также для элементов с position: fixed, трансформациями (transform), анимациями и многими другими свойствами. Это позволяет браузеру обновлять только изменённые части страницы, экономить ресурсы и обеспечивать плавность анимаций и переходов.
Браузер обрабатывает opacity особым образом: даже если элемент полностью прозрачен (opacity: 0), он остаётся частью страницы и продолжает реагировать на действия пользователя. По невидимой кнопке можно кликнуть, перевести на неё фокус или прокрутить её содержимое. Это отличает opacity от display: none — последнее свойство удаляет элемент из потока, и он перестаёт принимать события.
Возьмём кнопку с opacity: 0, но с отступами и курсором pointer. Она не видна, но занимает место. При наведении курсора срабатывает :hover, и прозрачность меняется на 0.5 — кнопка проявляется. Это доказывает, что браузер продолжает отслеживать положение курсора и обрабатывать события, даже если элемент визуально отсутствует.
Посмотрите, как это работает.
Скриншот: Google Chrome / Skillbox MediaФрагмент HTML-разметки:
<button class="invisible-button">Невидимая кнопка</button> <p>Попробуйте кликнуть в области выше</p>
CSS-стили:
.invisible-button {
opacity: 0;
padding: 20px;
background: #3498db;
color: white;
border: none;
cursor: pointer;
}
.invisible-button:hover {
opacity: 0.5;
}
Добавьте кнопке дополнительный класс:
<button class="invisible-button non-interactive">Невидимая кнопка</button>
<p>Попробуйте кликнуть в области выше</p>
Теперь в стилях добавим дополнительное свойство и отключим любое взаимодействие с прозрачным элементом — чтобы при наведении курсора невидимая кнопка никак не отреагировала на ваши действия.
.invisible-button {
opacity: 0;
padding: 20px;
background: #3498db;
color: white;
border: none;
cursor: pointer;
}
.invisible-button:hover {
opacity: 0.5;
}
.non-interactive {
opacity: 0;
pointer-events: none;
}
Ещё одна особенность opacity — возможность плавной анимации через transition. Это удобно для эффектов появления и исчезновения элементов. Достаточно задать начальное значение opacity: 0, а при наведении или другом событии изменить его на opacity: 1. Браузер рассчитает промежуточные значения и создаст плавный переход.
Скриншот: Google Chrome / Skillbox MediaЧтобы попробовать, вставьте этот фрагмент HTML-разметки.
<button class="fade-element">Невидимая кнопка</button>
<p>Попробуйте кликнуть в области выше</p>
Затем добавьте CSS-стили:
.fade-element {
opacity: 0;
transition: opacity 0.3s ease-in-out;
padding: 20px;
background: #3498db;
color: white;
border: none;
cursor: pointer;
}
.fade-element:hover {
opacity: 1;
}
Элементы с opacity остаются доступными для программ экранного доступа (скринридеров), голосового управления и навигации с клавиатуры. Пользователи с нарушениями зрения смогут обнаружить элемент и взаимодействовать с ним, даже если он визуально невидим. То есть скринридер прочитает текст кнопки, даже если она прозрачна.
Чтобы полностью скрыть элемент от программ экранного доступа, используйте атрибут aria-hidden="true». Скринридер проигнорирует такой элемент, и пользователь не узнает о его существовании.
Когда вы задаёте opacity родительскому элементу, прозрачность применяется ко всем его потомкам. Браузер отрисовывает контейнер со всем содержимым — заголовками, текстом, кнопками и другими вложенными элементами, а затем применяет эффект прозрачности к получившейся картинке целиком. Поэтому увеличить непрозрачность отдельного дочернего элемента невозможно — даже если задать ему opacity: 1, его видимость останется такой же, как у родителя.
Например, если контейнеру задать opacity: 0.3, то весь его контент станет прозрачным на 70%. В этом opacity отличается от большинства CSS-свойств: оно не переопределяется на уровне дочерних элементов.
Скриншот: Google Chrome / Skillbox MediaФрагмент HTML-разметки:
<div class="parent">
<h2>Заголовок</h2>
<p>Абзац текста</p>
<button>Кнопка</button>
</div>
CSS-стили:
.parent {
opacity: 0.3;
background: #3498db;
padding: 20px;
color: white;
}
Чтобы сохранить полную непрозрачность содержимого при полупрозрачном фоне, можно вынести содержимое за пределы прозрачного контейнера или использовать псевдоэлемент :before.
Попробуем первый способ. Для этого создадим общего родителя, внутри которого разместим два элемента: один — абсолютно позиционированный блок для полупрозрачного фона, второй — блок с position: relative и более высоким z-index для контента. Фон станет полупрозрачным, а текст и элементы останутся полностью видимыми.
Обновите HTML-разметку:
<div class="container">
<div class="background"></div>
<div class="content">
<h2>Этот заголовок останется непрозрачным</h2>
</div>
</div>
Затем пропишите следующие стили:
.container {
position: relative;
}
.background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #3498db;
opacity: 0.2;
}
.content {
position: relative;
z-index: 1;
padding: 20px;
}
Вы увидите непрозрачный заголовок на почти прозрачном фоне.
В CSS-стилях вы можете попробовать разные значения opacity, чтобы посмотреть, как меняется прозрачность фона
Скриншот: Google Chrome / Skillbox MediaТеперь попробуем второй способ — с псевдоэлементом :before. Псевдоэлемент позиционируется абсолютно и растягивается на всю площадь родителя. Ему задаются нужный цвет и opacity, после чего он отправляется назад с помощью z-index: -1. Содержимое элемента остаётся на переднем плане и сохраняет полную непрозрачность.
Замените предыдущий HTML-фрагмент этим кодом:
<div class="element">
<h2>Этот заголовок останется непрозрачным</h2>
</div>
После этого обновите стили и посмотрите на результат в браузере:
.element {
position: relative;
padding: 20px;
}
.element::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #3498db;
opacity: 0.2;
z-index: -1;
}
Если нужно сделать прозрачным только фон, текст или границу — но не весь элемент целиком, — используйте цветовые функции rgba() и hsla(). В отличие от opacity, они применяют прозрачность к конкретному свойству (например, background или color), не влияя на дочерние элементы и не создавая отдельный композитный слой.
Функция rgba() задаёт цвет через красный (red), зелёный (green) и синий (blue) каналы — каждый принимает значения от 0 до 255. Четвёртый параметр (альфа-канал) управляет прозрачностью и принимает значения от 0 (прозрачный) до 1 (непрозрачный).
Например, rgba(52, 152, 219, 0.5) создаст синий цвет с прозрачностью 50%. С rgba() можно делать полупрозрачными фон, текст или границу независимо друг от друга, не трогая остальные свойства элемента.
Вставьте в редактор следующий HTML-фрагмент:
<div class="element">Пример текста</div>
После этого пропишите стили и откройте страницу в браузере:
body {
background: #333;
/* Тёмный фон страницы */
}
.element {
background: rgba(52, 152, 219, 0.7);
/* Полупрозрачный синий фон */
color: rgba(0, 0, 0, 0.8);
/* Полупрозрачный чёрный текст */
border: 2px solid rgba(255, 255, 255, 0.5);
/* Полупрозрачная белая рамка */
}
Функция hsla() работает аналогично, но использует модель HSL: оттенок задаётся в градусах (0–360), насыщенность и яркость — в процентах (0–100%), а альфа-канал отвечает за прозрачность.
Чтобы убедиться, замените в стилях значение для класса .element:
.element {
background: hsla(210, 70%, 53%, 0.7);
/* Полупрозрачный синий фон */
color: hsla(0, 0%, 0%, 0.8);
/* Полупрозрачный чёрный текст */
border: 2px solid hsla(0, 0%, 100%, 0.5);
/* Полупрозрачная белая рамка */
}
Главное отличие от opacity — точечный контроль прозрачности. С rgba() и hsla() вы можете сделать фон полупрозрачным, а текст, кнопки и другие элементы оставить видимыми: они не наследуют прозрачность родителя. Если задать карточке полупрозрачный белый фон (rgba(255, 255, 255, 0.3)), добавить размытие через backdrop-filter: blur (10px) и лёгкую тень, получится эффект матового стекла. При этом весь внутренний контент останется чётким и читаемым.
Скриншот: Google Chrome / Skillbox MediaЧтобы создать такую карточку, добавьте разметку:
<div class="card">
<h3>Заголовок карточки</h3>
<p>Текст остаётся читаемым</p>
<button type="button">Кнопка действия</button>
</div>
Затем добавьте стили и откройте страницу в браузере:
body {
background: #008001;
margin: 0;
padding: 40px;
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
}
.card {
background: #c0dabc;
padding: 30px;
border-radius: 15px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
width: 100%;
max-width: 600px;
}
h3 {
color: #333;
margin-top: 0;
margin-bottom: 15px;
font-size: 18px;
}
p {
color: #333;
line-height: 1.6;
margin-bottom: 20px;
font-size: 14px;
}
button {
background: #5a8c5a;
color: white;
border: none;
padding: 10px 20px;
border-radius: 8px;
cursor: pointer;
font-size: 14px;
}
button:hover {
background: #4a7a4a;
}
Браузер обрабатывает свойство opacity на уровне графического процессора, что экономит ресурсы системы. Благодаря этому оно отлично подходит для анимаций: переходы получаются плавными даже на слабых устройствах. Именно поэтому эффекты появления и исчезновения на основе прозрачности так популярны в интерфейсах.
Самый простой эффект плавного появления создаётся через transition. Элемент изначально имеет opacity: 0.3, а при наведении курсора или добавлении класса значение меняется на opacity: 1. Браузер автоматически рассчитывает промежуточные значения и создаёт плавный переход.
HTML-разметка:
<div class="pulsing-element fade-element">
?
</div>
CSS-стили:
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: #f5f5f5;
font-family: Arial, sans-serif;
}
.fade-element {
opacity: 0.3;
transition: opacity 0.3s ease-in;
padding: 30px 50px;
background: #3498db;
color: white;
font-size: 18px;
border-radius: 8px;
cursor: pointer;
}
.fade-element:hover {
opacity: 1;
}
Для более сложных анимаций используют CSS-правило @keyframes. Например, эффект пульсации циклически меняет прозрачность от 1 до 0.5 и обратно. Чтобы применить анимацию к элементу, используйте свойство animation с указанием длительности и числа повторений.
Попробуйте заменить все предыдущие стили на следующий код:
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: #f0f0f0;
}
.pulsing-element {
display: flex;
align-items: center;
justify-content: center;
width: 80px;
height: 80px;
color: white;
cursor: pointer;
background: #3498db;
border: none;
border-radius: 50%;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% {
opacity: 1;
}
50% {
opacity: 0.5;
}
100% {
opacity: 1;
}
}
Когда вы запустите код в браузере, то увидите такую анимацию.
Скриншот: Google Chrome / Skillbox MediaСвойство opacity часто комбинируют с другими свойствами. Например, если одновременно изменить прозрачность и масштаб через transform: scale(), то у вас получится эффект открытия модального окна — элемент плавно появится из центра и станет полностью видимым.
Из-за технических ограничений GIF-формата модальное окно в анимации отображается не совсем плавно — с задержками и рывками. Если вы запустите этот же код в браузере, анимация будет выглядеть значительно лучше и плавнее
Скриншот: Google Chrome / Skillbox MediaЧтобы повторить, вставьте этот код в пустой HTML-файл:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Модальное окно с анимацией</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: #f0f0f0;
font-family: Arial, sans-serif;
}
.modal {
opacity: 0;
transform: scale(0.8);
transition: opacity 0.3s ease-out, transform 0.3s ease-out;
background: white;
padding: 40px;
border-radius: 12px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
max-width: 400px;
}
.modal.show {
opacity: 1;
transform: scale(1);
}
.modal h2 {
margin-top: 0;
color: #333;
}
.modal p {
color: #666;
line-height: 1.6;
}
.modal button {
background: #3498db;
color: white;
border: none;
padding: 10px 20px;
border-radius: 6px;
cursor: pointer;
font-size: 14px;
margin-top: 20px;
}
.modal button:hover {
background: #2980b9;
}
.trigger-btn {
position: fixed;
top: 20px;
left: 20px;
background: #3498db;
color: white;
border: none;
padding: 12px 24px;
border-radius: 6px;
cursor: pointer;
font-size: 16px;
}
.trigger-btn:hover {
background: #2980b9;
}
</style>
</head>
<body>
<button class="trigger-btn" onclick="toggleModal()">Показать модальное окно</button>
<div class="modal" id="modal">
<h2>Модальное окно</h2>
<p>Это модальное окно появляется с эффектом плавного увеличения и изменения прозрачности.</p>
<button onclick="toggleModal()">Закрыть</button>
</div>
<script>
function toggleModal() {
const modal = document.getElementById('modal');
modal.classList.toggle('show');
}
</script>
</body>
</html>
Функция времени — ease-in, ease-out или linear — определяет, как именно изменяется скорость анимации на протяжении её выполнения. Плавное ускорение в начале (ease-in) или замедление в конце (ease-out) делает анимацию более естественной и приятной для восприятия. Браузеры особенно эффективно оптимизируют свойства opacity и transform, обрабатывая их на уровне графического процессора (GPU).
Визуализация работы функций времени
Скриншот: Google Chrome / Skillbox MediaПри работе с несколькими элементами можно добавить задержку через transition-delay. Например, в списке каждый пункт получает свою индивидуальную задержку: первый элемент — 0,1 секунды, второй — 0,2 секунды, третий — 0,3 секунды и так далее. Когда вы добавляете класс .show к родительскому контейнеру, элементы начинают появляться последовательно один за другим — создаётся эффект каскадного появления или волны. Посмотрите, как это выглядит в браузере.
Скриншот: Google Chrome / Skillbox MediaВот HTML-разметка, которая поможет вам создать такой же список:
<button onclick="showList()">Показать список</button>
<ul class="list-container">
<li class="list-item">Первый элемент</li>
<li class="list-item">Второй элемент</li>
<li class="list-item">Третий элемент</li>
</ul>
CSS-стили:
.list-item {
padding: 10px;
background: #f0f0f0;
margin: 5px 0;
border-radius: 4px;
opacity: 0;
transition: opacity 0.3s ease-out;
}
.list-item:nth-child(1) {
transition-delay: 0.1s;
}
.list-item:nth-child(2) {
transition-delay: 0.2s;
}
.list-item:nth-child(3) {
transition-delay: 0.3s;
}
.list-container.show .list-item {
opacity: 1;
}
Также вам понадобится немного JavaScript:
function showList() {
document.querySelector(".list-container").classList.add("show");
}
В CSS есть три основных способа скрыть элемент на странице: opacity, visibility и display. Каждый из них подходит для разных задач.
Свойство opacity: 0 делает элемент невидимым, но при этом он продолжает занимать место в макете и остаётся интерактивным. То есть элемент всё ещё реагирует на события мыши, может получать фокус при навигации с клавиатуры и доступен для скринридеров.
Свойство visibility: hidden также сохраняет место элемента в потоке, но отключает его интерактивность. Элемент не реагирует на события мыши, не получает фокус и становится невидимым для скринридеров.
Свойство display: none полностью удаляет элемент из потока документа — браузер не резервирует для него место в макете и не учитывает его при расчёте положения других элементов. Такой элемент не реагирует на действия пользователя и невидим для скринридеров.
Элементы с opacity: 0 остаются доступными для скринридеров и клавиатурной навигации, даже когда они визуально невидимы. Это полезно, если нужно скрыть информацию от зрячих пользователей.
Например, это полезно для уведомлений об ошибках валидации форм: они озвучиваются скринридером сразу после отправки формы, но визуально скрыты до момента появления ошибки. Также это подходит для динамически обновляемого контента — например, счётчиков непрочитанных сообщений или уведомлений о новых данных.
Однако в других случаях это может создать проблемы с доступностью. Например, пользователь, перемещающийся по странице с помощью клавиатуры, может случайно установить фокус на невидимую кнопку и не понять, где он находится. Кроме того, скринридер может озвучить содержимое фонового изображения или другого декоративного элемента, который должен быть скрыт для ассистивных технологий.
Для управления доступностью прозрачных элементов для ассистивных технологий используются ARIA-атрибуты. Чтобы увидеть их в действии, вставьте в разметку код из следующего примера. Если вы откроете страницу в браузере, то ничего не увидите. Однако код там есть — чтобы в этом убедиться, воспользуйтесь инспектором элементов.
<!-- Элемент невидим визуально, но доступен для скринридеров -->
<div class="status-message" style="opacity: 0;">
Сообщение о статусе операции
</div>
<!-- Элемент невидим и для скринридеров тоже -->
<div class="decorative-overlay" style="opacity: 0;" aria-hidden="true">
Декоративный элемент
</div>
При работе с интерактивными элементами важно следить за контрастом в видимом состоянии. Кнопки или поля ввода с высокой прозрачностью плохо различимы — особенно на сложных фонах или при наложении на изображения. Чем прозрачнее элемент, тем сложнее его воспринимать. Это касается в первую очередь пользователей с нарушениями зрения, а также тех, кто работает в условиях яркого освещения или на экранах с низким качеством цветопередачи.
Сравнение двух кнопок с разной степенью прозрачности
Скриншот: Google Chrome / Skillbox MediaЭто особенно заметно в формах: полупрозрачные поля ввода затрудняют чтение введённого текста, усложняют проверку данных перед отправкой и замедляют процесс заполнения. Например, поле ввода с opacity: 0.5 на светлом фоне может выглядеть стильно, но текст в нём станет трудночитаемым. В результате пользователю придётся прищуриваться, чтобы убедиться, что он правильно ввёл email.
Для модальных окон, всплывающих подсказок и других подобных элементов советуем сочетать opacity с pointer-events. В неактивном состоянии элемент получает opacity: 0 и pointer-events: none — он становится невидимым и некликабельным, что предотвращает случайные клики. При активации возвращаются opacity: 1 и pointer-events: auto — элемент становится видимым и интерактивным.
Непонимание наследования прозрачности. Разработчики часто пытаются сделать дочерний элемент менее прозрачным, чем родительский. Но это не работает: дочерний элемент наследует прозрачность родителя и поэтому не может быть менее прозрачным.
/* Неправильно — так не сработает */
.parent {
opacity: 0.3;
}
.child {
opacity: 1; /* Дочерний элемент останется полупрозрачным */
}
Правильное решение — использовать rgba() для фона родительского элемента вместо opacity или изменить структуру HTML так, чтобы дочерний элемент находился за пределами прозрачного родителя.
Вот пример реализации с помощью rgba():
.parent {
background: rgba(52, 152, 219, 0.3);
}
.child {
/* Дочерний элемент останется непрозрачным */
}
Другой вариант — изменить структуру разметки за счёт вынесения прозрачного фона в отдельный элемент. Тогда прозрачность будет применяться только к фону, а содержимое останется видимым.
<div class="wrapper">
<!-- Этот элемент отвечает только за фон и может быть полупрозрачным -->
<div class="background"></div>
<!-- А здесь находится контент, который должен оставаться полностью непрозрачным -->
<div class="content">
<p>Этот текст остаётся полностью непрозрачным</p>
</div>
</div>
Ошибки с контекстом наложения. Элемент с opacity, отличной от 1, автоматически создаёт новый контекст наложения. Из-за этого дочерние элементы с высоким z-index не смогут выйти за пределы родительского контейнера и наложиться поверх элементов, находящихся снаружи, — даже если z-index дочерних элементов имеет большее значение.
В результате это часто приводит к тому, что всплывающие блоки, выпадающие меню, подсказки или модальные окна оказываются под другими элементами страницы, которые должны были быть ниже.
/* Неправильно — popup не сможет перекрыть overlay */
.overlay {
position: absolute;
opacity: 0.9; /* Создаёт новый контекст наложения */
z-index: 10;
}
.popup {
position: absolute;
z-index: 20; /* Не перекроет overlay, если вложен внутрь него */
}
Правильное решение зависит от ситуации и может быть реализовано несколькими способами. Самый простой вариант — вынести проблемный элемент за пределы прозрачного контейнера.
Так это может выглядеть в HTML-разметке:
<!-- Правильно — popup и overlay на одном уровне -->
<div class="page">
<div class="content-with-overlay">
<div class="overlay"></div>
<div class="content">Основной контент</div>
</div>
<div class="popup">Всплывающее окно</div>
</div>
Такой может быть стилизация:
.overlay {
position: absolute;
opacity: 0.9;
z-index: 10;
}
.popup {
position: fixed; /* Или absolute относительно .page */
z-index: 20; /* Теперь корректно работает */
}
Следующий способ — создать прозрачный псевдоэлемент вместо применения opacity к самому контейнеру:
.overlay {
position: relative;
/* Свойство opacity здесь не используется */
}
.overlay::before {
content: '';
position: absolute;
inset: 0;
background: black;
opacity: 0.9; /* Прозрачность только у фона */
z-index: -1;
}
.popup {
position: absolute;
z-index: 20; /* Перекрывает внешние элементы */
}
Если прозрачность необходима только для фона, можно использовать цвет с альфа-каналом (rgba или hsla) вместо свойства opacity. Так вы сможете сделать прозрачным только фон, не затрагивая содержимое.
/* Правильно — контекст наложения не создаётся */
.overlay {
position: absolute;
background: rgba(0, 0, 0, 0.9); /* Вместо opacity */
z-index: 10;
}
.popup {
position: absolute;
z-index: 20; /* Теперь работает как ожидается */
}
Непродуманная анимация множества элементов. Если вы одновременно анимируете десятки или сотни элементов по opacity без подготовки, браузер может дёргаться. Это происходит из-за большого объёма вычислений по смешиванию цветов (альфа-блендинга) или постоянного перемещения элементов в композитные слои и обратно.
/* Неправильно — без подготовки может лагать */
.many-items {
opacity: 0;
transition: opacity 0.3s;
}
Правильное решение будет заключаться в том, чтобы явным образом подготовить элементы к анимации с помощью свойства will-change или transform: translateZ (0). Браузер заранее создаст композитный слой для каждого элемента, и анимация будет проходить без лагов и перерисовок.
/* Правильно — подсказываем браузеру заранее */
.many-items {
opacity: 0;
transition: opacity 0.3s;
will-change: opacity; /* Cовременный способ */
}
/* Альтернатива для старых браузеров */
.many-items-legacy {
opacity: 0;
transition: opacity 0.3s;
transform: translateZ(0); /* Принудительно создаём композитный слой */
Также важно динамически включать will-change перед анимацией и выключать после её завершения: так вы избежите удержания лишних композитных слоёв в памяти, которое может снизить производительность.
// Перед анимацией включаем will-change
function fadeIn(el) {
el.style.willChange = 'opacity';
// Запускаем анимацию появления
requestAnimationFrame(() => {
el.classList.add('show'); // В CSS: .show { opacity: 1; }
});
// После завершения перехода снимаем will-change
el.addEventListener('transitionend', function onEnd() {
el.style.willChange = 'auto';
el.removeEventListener('transitionend', onEnd);
});
}
Основная проблема при работе с opacity — элементы с низкой прозрачностью часто теряются в процессе разработки. Становится сложно найти их в макете страницы и позиционировать относительно других элементов или заметить случайно оставленные невидимыми блоки, которые могут мешать взаимодействию с интерфейсом.
Чтобы избежать этих проблем, добавьте в HTML-разметку временный класс .debug, который будет подсвечивать прозрачные элементы:
<!-- Во время разработки добавьте класс debug -->
<div class="container debug">
<div class="opacity-element">
Этот элемент теперь подсвечен красной обводкой.
</div>
</div>
CSS-стили:
/* Обычные стили */
.opacity-element {
opacity: 0.2;
background: rgba(255, 0, 0, 0.1);
}
/* Временный debug-класс — только для разработки */
/* !important нужен, чтобы перебить inline-стили и высокую специфичность */
.debug .opacity-element {
outline: 2px dashed red !important;
background: rgba(255, 0, 0, 0.1) !important;
}
После настройки элемента просто удалите класс .debug из разметки:
<!-- Перед коммитом удалите класс debug -->
<div class="container">
<div class="opacity-element">
Этот элемент теперь не подсвечен красной обводкой.
</div>
</div>
А вот CSS-правило .debug .opacity-element можно оставить в файле. Если в HTML нет класса .debug, правило не применится и никак не повлияет на страницу. Зато при следующей отладке оно уже будет готово к использованию. Только желательно добавить комментарий, чтобы другие разработчики понимали назначение этого куска кода.
В этом разделе мы создадим адаптивное меню, которое скрывается под кнопкой и раскрывается при нажатии. Такой подход используется в мобильных версиях сайтов, где важно экономить место на экране.
Ключевая особенность реализации — комбинация трёх CSS-свойств для плавной анимации: opacity управляет прозрачностью меню, pointer-events блокирует клики по скрытым элементам, а transform добавляет движение при раскрытии. Пункты появляются поочерёдно — каждый следующий с большей задержкой, создавая эффект каскада.
Скриншот: Google Chrome / Skillbox MediaЧтобы реализовать такое меню, вставьте следующий код в пустой HTML-файл и запустите его в браузере:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Навигационное меню</title>
<style>
body {
margin: 0;
font-family: Arial, sans-serif;
background: #f6f8fb;
padding: 50px 20px;
}
/* Контейнер для кнопки и меню */
.main-navigation {
position: relative;
max-width: 560px;
}
/* Кнопка с иконкой ☰ */
.menu-toggle {
width: 44px;
height: 44px;
background: #4c9aff;
color: white;
border: none;
border-radius: 10px;
font-size: 22px;
cursor: pointer;
}
.menu-toggle:hover {
background: #3a89f0;
}
/* Само меню (изначально спрятано) */
.menu-items {
list-style: none;
margin: 12px 0 0;
padding: 0;
position: absolute;
top: 100%;
left: 0;
right: 0;
background: white;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);
/* Делаем меню невидимым и некликабельным */
opacity: 0;
pointer-events: none;
transform: translateY(-10px);
/* Поднимаем вверх */
transition: opacity 0.3s ease, transform 0.3s ease;
}
/* Стили для открытого меню (есть класс open) */
.main-navigation.open .menu-items {
opacity: 1;
pointer-events: auto;
/* Теперь можно кликать */
transform: translateY(0);
/* Опускаем на место */
}
.menu-items li {
border-bottom: 1px solid #f0f0f0;
}
.menu-items li:last-child {
border-bottom: none;
}
.menu-items a {
display: block;
padding: 14px 20px;
color: #333;
text-decoration: none;
opacity: 0;
transform: translateX(-20px);
transition: opacity 0.3s ease, transform 0.3s ease, background 0.2s ease;
}
.main-navigation.open .menu-items a {
opacity: 1;
transform: translateX(0);
}
/* Каждая ссылка появляется с задержкой */
.main-navigation.open .menu-items li:nth-child(1) a {
transition-delay: 0.06s;
}
.main-navigation.open .menu-items li:nth-child(2) a {
transition-delay: 0.12s;
}
.main-navigation.open .menu-items li:nth-child(3) a {
transition-delay: 0.18s;
}
.main-navigation.open .menu-items li:nth-child(4) a {
transition-delay: 0.24s;
}
.menu-items a:hover {
background: #f5f9ff;
color: #4c9aff;
}
</style>
</head>
<body>
<nav class="main-navigation">
<button class="menu-toggle">☰</button>
<ul class="menu-items">
<li><a href="#home">Главная</a></li>
<li><a href="#about">О нас</a></li>
<li><a href="#services">Услуги</a></li>
<li><a href="#contact">Контакты</a></li>
</ul>
</nav>
<script>
// Находим элементы на странице
const nav = document.querySelector('.main-navigation');
const toggleButton = document.querySelector('.menu-toggle');
const menuLinks = document.querySelectorAll('.menu-items a');
// Клик по кнопке — открываем или закрываем меню
toggleButton.addEventListener('click', function () {
nav.classList.toggle('open');
});
// Клик по любой ссылке — закрываем меню
menuLinks.forEach(function (link) {
link.addEventListener('click', function () {
nav.classList.remove('open');
});
});
// Клик мимо меню — тоже закрываем
document.addEventListener('click', function (event) {
if (!nav.contains(event.target)) {
nav.classList.remove('open');
}
});
// Кнопка Escape — закрываем меню
document.addEventListener('keydown', function (event) {
if (event.key === 'Escape') {
nav.classList.remove('open');
}
});
</script>
</body>
</html>
В этом коде меню изначально скрыто с помощью opacity: 0 и pointer-events: none, а также смещено вверх на 10 пикселей. Когда пользователь нажимает на кнопку с иконкой «☰», JavaScript добавляет класс open к элементу навигации. Это запускает CSS-анимацию: меню плавно опускается на своё место (translateY (0)) и становится видимым (opacity: 1). Свойство pointer-events меняется на auto — элемент снова становится интерактивным и доступным для кликов мышью.
Каждая ссылка внутри меню также сначала прозрачна (opacity: 0) и смещена влево (translateX (-20px)). При открытии меню пункты поочерёдно проявляются и выезжают на место: каждый следующий — с небольшой задержкой благодаря разным значениям transition-delay.
Меню закрывается в четырёх случаях: при клике на один из пунктов, при клике в любом месте за пределами меню, при нажатии клавиши Escape или при повторном нажатии на кнопку с иконкой «☰».
Закрытие происходит с той же плавной анимацией, только в обратном порядке: пункты поочерёдно уезжают влево и исчезают, а само меню поднимается на 10 пикселей и становится полностью прозрачным.
Курс с трудоустройством: «Профессия Фронтенд-разработчик + ИИ»
Узнать о курсе
<!DOCTYPE html>
<html class="l-html" lang="ru">
<head>
<script>
mindbox = window.mindbox || function() { mindbox.queue.push(arguments); };
mindbox.queue = mindbox.queue || [];
mindbox('create', {
endpointId: 'skillbox.skillboxMediaWebsite'
});
</script>
<script src="https://api.s.mindbox.ru/scripts/v1/tracker.js" async></script>
<script>window.yaContextCb = window.yaContextCb || []</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
<!-- Google Tag Manager -->
<script async data-skip-moving="true" type="text/javascript">
/** Google Tagmanager */
;(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-NLCGQ25');
window.dataLayer = window.dataLayer || [];
function gtag() {
window.dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'GTM-NLCGQ25');
</script>
<!-- End Google Tag Manager -->
<!-- Retail Rocket -->
<script type="text/javascript">
var rrPartnerId = "6048a0d097a52514f050731f";
var rrApi = {};
var rrApiOnReady = rrApiOnReady || [];
rrApi.addToBasket = rrApi.order = rrApi.categoryView = rrApi.view =
rrApi.recomMouseDown = rrApi.recomAddToCart = function() {};
(function(d) {
var ref = d.getElementsByTagName('script')[0];
var apiJs, apiJsId = 'rrApi-jssdk';
if (d.getElementById(apiJsId)) return;
apiJs = d.createElement('script');
apiJs.id = apiJsId;
apiJs.async = true;
apiJs.src = "//cdn.retailrocket.ru/content/javascript/tracking.js";
ref.parentNode.insertBefore(apiJs, ref);
}(document));
</script>
<!-- End Retail Rocket -->
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<meta name="google-site-verification" content="UA-kf725UpqwkHenFmDQ05SW115fL9UdD9uXiFy-ibQ"/>
<meta name="robots" content="index, follow"/>
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="canonical" href="https://skillbox.ru/media/code/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte/">
<link rel="preload" href="https://marketplace.canva.com/EAD2962NKnQ/2/0/1600w/canva-rainbow-gradient-pink-and-purple-zoom-virtual-background-_Tcjok-d9b4.jpg" as="image" />
<link rel="preload" href="https://via.placeholder.com/1170x250/92c952" as="image" />
<link rel="preload" href="https://via.placeholder.com/768x250/40E0D0" as="image" />
<link rel="preload" href="https://via.placeholder.com/375x250/ffbcee" as="image" />
<title>Свойство opacity в CSS: как задать прозрачность элементам на сайте / Skillbox Media</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="css opacity, прозрачность в css, свойство opacity" />
<meta name="description" content="Рассказываем, как работает свойство opacity в CSS: как сделать прозрачными или полупрозрачными текст, блоки, фон." />
<link href="/bitrix/cache/css/s1/media/kernel_main/kernel_main_v1.css?177096852510536" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/ui/fonts/opensans/ui.font.opensans.css?16341171742599" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/main/popup/dist/main.popup.bundle.css?163411696226345" type="text/css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/css/swiper.min.css" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/page_a1ad23d5ae1fea4c6ac7c690c80a4763/page_a1ad23d5ae1fea4c6ac7c690c80a4763_v1.css?1771490810746236" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/template_176a7c2453ad8025fa7d27f65ba6a4b1/template_176a7c2453ad8025fa7d27f65ba6a4b1_v1.css?1771490810442835" type="text/css" data-template-style="true" rel="stylesheet" />
<script type="text/javascript">if(!window.BX)window.BX={};if(!window.BX.message)window.BX.message=function(mess){if(typeof mess==='object'){for(let i in mess) {BX.message[i]=mess[i];} return true;}};</script>
<script type="text/javascript">(window.BX||top.BX).message({'JS_CORE_LOADING':'Загрузка...','JS_CORE_NO_DATA':'- Нет данных -','JS_CORE_WINDOW_CLOSE':'Закрыть','JS_CORE_WINDOW_EXPAND':'Развернуть','JS_CORE_WINDOW_NARROW':'Свернуть в окно','JS_CORE_WINDOW_SAVE':'Сохранить','JS_CORE_WINDOW_CANCEL':'Отменить','JS_CORE_WINDOW_CONTINUE':'Продолжить','JS_CORE_H':'ч','JS_CORE_M':'м','JS_CORE_S':'с','JSADM_AI_HIDE_EXTRA':'Скрыть лишние','JSADM_AI_ALL_NOTIF':'Показать все','JSADM_AUTH_REQ':'Требуется авторизация!','JS_CORE_WINDOW_AUTH':'Войти','JS_CORE_IMAGE_FULL':'Полный размер'});</script>
<script type="text/javascript" src="/bitrix/js/main/core/core.js?1634117028565340"></script>
<script>BX.setJSList(['/bitrix/js/main/core/core_ajax.js','/bitrix/js/main/core/core_promise.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/loadext/loadext.js','/bitrix/js/main/loadext/extension.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/includes/js/includes.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/ui/polyfill/closest/js/closest.js','/bitrix/js/main/polyfill/fill/main.polyfill.fill.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/core/core.js','/bitrix/js/main/polyfill/intersectionobserver/js/intersectionobserver.js','/bitrix/js/main/lazyload/dist/lazyload.bundle.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/parambag/dist/parambag.bundle.js']);
BX.setCSSList(['/bitrix/js/main/lazyload/dist/lazyload.bundle.css','/bitrix/js/main/parambag/dist/parambag.bundle.css']);</script>
<script type="text/javascript">(window.BX||top.BX).message({'AMPM_MODE':false});(window.BX||top.BX).message({'MONTH_1':'Январь','MONTH_2':'Февраль','MONTH_3':'Март','MONTH_4':'Апрель','MONTH_5':'Май','MONTH_6':'Июнь','MONTH_7':'Июль','MONTH_8':'Август','MONTH_9':'Сентябрь','MONTH_10':'Октябрь','MONTH_11':'Ноябрь','MONTH_12':'Декабрь','MONTH_1_S':'января','MONTH_2_S':'февраля','MONTH_3_S':'марта','MONTH_4_S':'апреля','MONTH_5_S':'мая','MONTH_6_S':'июня','MONTH_7_S':'июля','MONTH_8_S':'августа','MONTH_9_S':'сентября','MONTH_10_S':'октября','MONTH_11_S':'ноября','MONTH_12_S':'декабря','MON_1':'янв','MON_2':'фев','MON_3':'мар','MON_4':'апр','MON_5':'май','MON_6':'июн','MON_7':'июл','MON_8':'авг','MON_9':'сен','MON_10':'окт','MON_11':'ноя','MON_12':'дек','DAY_OF_WEEK_0':'Воскресенье','DAY_OF_WEEK_1':'Понедельник','DAY_OF_WEEK_2':'Вторник','DAY_OF_WEEK_3':'Среда','DAY_OF_WEEK_4':'Четверг','DAY_OF_WEEK_5':'Пятница','DAY_OF_WEEK_6':'Суббота','DOW_0':'Вс','DOW_1':'Пн','DOW_2':'Вт','DOW_3':'Ср','DOW_4':'Чт','DOW_5':'Пт','DOW_6':'Сб','FD_SECOND_AGO_0':'#VALUE# секунд назад','FD_SECOND_AGO_1':'#VALUE# секунду назад','FD_SECOND_AGO_10_20':'#VALUE# секунд назад','FD_SECOND_AGO_MOD_1':'#VALUE# секунду назад','FD_SECOND_AGO_MOD_2_4':'#VALUE# секунды назад','FD_SECOND_AGO_MOD_OTHER':'#VALUE# секунд назад','FD_SECOND_DIFF_0':'#VALUE# секунд','FD_SECOND_DIFF_1':'#VALUE# секунда','FD_SECOND_DIFF_10_20':'#VALUE# секунд','FD_SECOND_DIFF_MOD_1':'#VALUE# секунда','FD_SECOND_DIFF_MOD_2_4':'#VALUE# секунды','FD_SECOND_DIFF_MOD_OTHER':'#VALUE# секунд','FD_SECOND_SHORT':'#VALUE#с','FD_MINUTE_AGO_0':'#VALUE# минут назад','FD_MINUTE_AGO_1':'#VALUE# минуту назад','FD_MINUTE_AGO_10_20':'#VALUE# минут назад','FD_MINUTE_AGO_MOD_1':'#VALUE# минуту назад','FD_MINUTE_AGO_MOD_2_4':'#VALUE# минуты назад','FD_MINUTE_AGO_MOD_OTHER':'#VALUE# минут назад','FD_MINUTE_DIFF_0':'#VALUE# минут','FD_MINUTE_DIFF_1':'#VALUE# минута','FD_MINUTE_DIFF_10_20':'#VALUE# минут','FD_MINUTE_DIFF_MOD_1':'#VALUE# минута','FD_MINUTE_DIFF_MOD_2_4':'#VALUE# минуты','FD_MINUTE_DIFF_MOD_OTHER':'#VALUE# минут','FD_MINUTE_0':'#VALUE# минут','FD_MINUTE_1':'#VALUE# минуту','FD_MINUTE_10_20':'#VALUE# минут','FD_MINUTE_MOD_1':'#VALUE# минуту','FD_MINUTE_MOD_2_4':'#VALUE# минуты','FD_MINUTE_MOD_OTHER':'#VALUE# минут','FD_MINUTE_SHORT':'#VALUE#мин','FD_HOUR_AGO_0':'#VALUE# часов назад','FD_HOUR_AGO_1':'#VALUE# час назад','FD_HOUR_AGO_10_20':'#VALUE# часов назад','FD_HOUR_AGO_MOD_1':'#VALUE# час назад','FD_HOUR_AGO_MOD_2_4':'#VALUE# часа назад','FD_HOUR_AGO_MOD_OTHER':'#VALUE# часов назад','FD_HOUR_DIFF_0':'#VALUE# часов','FD_HOUR_DIFF_1':'#VALUE# час','FD_HOUR_DIFF_10_20':'#VALUE# часов','FD_HOUR_DIFF_MOD_1':'#VALUE# час','FD_HOUR_DIFF_MOD_2_4':'#VALUE# часа','FD_HOUR_DIFF_MOD_OTHER':'#VALUE# часов','FD_HOUR_SHORT':'#VALUE#ч','FD_YESTERDAY':'вчера','FD_TODAY':'сегодня','FD_TOMORROW':'завтра','FD_DAY_AGO_0':'#VALUE# дней назад','FD_DAY_AGO_1':'#VALUE# день назад','FD_DAY_AGO_10_20':'#VALUE# дней назад','FD_DAY_AGO_MOD_1':'#VALUE# день назад','FD_DAY_AGO_MOD_2_4':'#VALUE# дня назад','FD_DAY_AGO_MOD_OTHER':'#VALUE# дней назад','FD_DAY_DIFF_0':'#VALUE# дней','FD_DAY_DIFF_1':'#VALUE# день','FD_DAY_DIFF_10_20':'#VALUE# дней','FD_DAY_DIFF_MOD_1':'#VALUE# день','FD_DAY_DIFF_MOD_2_4':'#VALUE# дня','FD_DAY_DIFF_MOD_OTHER':'#VALUE# дней','FD_DAY_AT_TIME':'#DAY# в #TIME#','FD_DAY_SHORT':'#VALUE#д','FD_MONTH_AGO_0':'#VALUE# месяцев назад','FD_MONTH_AGO_1':'#VALUE# месяц назад','FD_MONTH_AGO_10_20':'#VALUE# месяцев назад','FD_MONTH_AGO_MOD_1':'#VALUE# месяц назад','FD_MONTH_AGO_MOD_2_4':'#VALUE# месяца назад','FD_MONTH_AGO_MOD_OTHER':'#VALUE# месяцев назад','FD_MONTH_DIFF_0':'#VALUE# месяцев','FD_MONTH_DIFF_1':'#VALUE# месяц','FD_MONTH_DIFF_10_20':'#VALUE# месяцев','FD_MONTH_DIFF_MOD_1':'#VALUE# месяц','FD_MONTH_DIFF_MOD_2_4':'#VALUE# месяца','FD_MONTH_DIFF_MOD_OTHER':'#VALUE# месяцев','FD_MONTH_SHORT':'#VALUE#мес','FD_YEARS_AGO_0':'#VALUE# лет назад','FD_YEARS_AGO_1':'#VALUE# год назад','FD_YEARS_AGO_10_20':'#VALUE# лет назад','FD_YEARS_AGO_MOD_1':'#VALUE# год назад','FD_YEARS_AGO_MOD_2_4':'#VALUE# года назад','FD_YEARS_AGO_MOD_OTHER':'#VALUE# лет назад','FD_YEARS_DIFF_0':'#VALUE# лет','FD_YEARS_DIFF_1':'#VALUE# год','FD_YEARS_DIFF_10_20':'#VALUE# лет','FD_YEARS_DIFF_MOD_1':'#VALUE# год','FD_YEARS_DIFF_MOD_2_4':'#VALUE# года','FD_YEARS_DIFF_MOD_OTHER':'#VALUE# лет','FD_YEARS_SHORT_0':'#VALUE#л','FD_YEARS_SHORT_1':'#VALUE#г','FD_YEARS_SHORT_10_20':'#VALUE#л','FD_YEARS_SHORT_MOD_1':'#VALUE#г','FD_YEARS_SHORT_MOD_2_4':'#VALUE#г','FD_YEARS_SHORT_MOD_OTHER':'#VALUE#л','CAL_BUTTON':'Выбрать','CAL_TIME_SET':'Установить время','CAL_TIME':'Время','FD_LAST_SEEN_TOMORROW':'завтра в #TIME#','FD_LAST_SEEN_NOW':'только что','FD_LAST_SEEN_TODAY':'сегодня в #TIME#','FD_LAST_SEEN_YESTERDAY':'вчера в #TIME#','FD_LAST_SEEN_MORE_YEAR':'более года назад'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'WEEK_START':'1'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'BITRIX_SM','SERVER_TZ_OFFSET':'10800','UTF_MODE':'Y','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1771634237','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'04002f458fa481044190da60ea6d3263'});</script>
<script type="text/javascript" src="/bitrix/js/main/date/main.date.js?159955296434530"></script>
<script type="text/javascript" src="/bitrix/js/main/popup/dist/main.popup.bundle.js?1634116962109107"></script>
<script type="text/javascript" src="/bitrix/js/main/core/core_date.js?163411653136080"></script>
<script type="text/javascript" src="/bitrix/js/ui/vue/vue2/prod/dist/vue.bundle.js?1635848017173206"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/js/swiper.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>
<script type="text/javascript">BX.setCSSList(['/bitrix/js/main/core/css/core_date.css','/setka/css/setka_skillbox.css','/local/templates/.default/components/bitrix/news.detail/article/style.css','/static/css/newarticle.css','/local/templates/media/libs/jquery.formstyler.css','/local/templates/media/fonts/graphik-font/stylesheet.css','/static/css/main.css','/local/templates/media/template_styles.css']);</script>
<script src="https://cdn.skillbox.pro/frontend-libs/promo-banner/5.10.1/banner-plugin.min.js"></script>
<script type="text/javascript" async src="https://relap.io/api/v6/head.js?token=sI73Ph6a5BnkqK2o"></script>
<meta property="og:title" content="Opacity в CSS: как управлять прозрачностью элементов на сайте" />
<meta property="og:description" content="Учимся создавать плавные переходы, наложения и мягкие анимации." />
<meta property="og:url" content="https://skillbox.ru/media/code/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte/" />
<meta property="og:type" content="article" />
<meta property="og:site_name" content="skillbox.ru" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:image" content="https://248006.selcdn.ru/main/iblock/fd2/fd2e273f0c81d775d66b165546fe8fd6/cb93b66a2233eeead82e013c2b278117.jpg" />
<meta name="relap-image" content="https://248006.selcdn.ru/main/iblock/fd2/fd2e273f0c81d775d66b165546fe8fd6/cb93b66a2233eeead82e013c2b278117.jpg" />
<meta property="og:image:width" content="600" />
<meta property="og:image:height" content="315" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://248006.selcdn.ru/main/iblock/fd2/fd2e273f0c81d775d66b165546fe8fd6/cb93b66a2233eeead82e013c2b278117.jpg" />
<meta property="vk:image" content="https://248006.selcdn.ru/main/iblock/5e1/5e1a92f25bd93a18b6fc2f13cbf49e68/de397c5c0dee1cfa6513436d66556c83.jpg" />
<meta property="article:author" content="Редакция «Код» Skillbox Media" />
<meta property="article:tag" content="статьи" />
<meta property="article:section" content="Код" />
<script type="text/javascript" src="/static/js/vendor.js?1771489421543641"></script>
<script type="text/javascript" src="/local/assets/js/common.js?177148933727419"></script>
<script type="text/javascript" src="/static/js/main.js?1771489421125222"></script>
<script type="text/javascript" src="/local/templates/media/js/main.js?17714893372418"></script>
<script type="text/javascript" src="/local/components/prmedia/popup.subscribe/templates/.default/script.js?17714893376820"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/infinity.js?177148933713735"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news/articles/script.js?1771489337246"></script>
<script type="text/javascript" src="/setka/js/setka_skillbox.js?1771489337106775"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/script.js?17714893377503"></script>
<script type="text/javascript">var _ba = _ba || []; _ba.push(["aid", "84a6082a990bbac8858fb733b97bed30"]); _ba.push(["host", "skillbox.ru"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();</script>
</head>
<body>
<div class="js-sticky-delimiter"></div>
<div class="bx-panel"></div>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NLCGQ25" height="0" width="0"
style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<svg class="app-svg-visually-hidden" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path id="def-arrow-down-a" d="M223 20813l4 5 4-5z"/>
<path id="def-arrow-a" d="M1044.6 803.2a.81.81 0 01-.5.18.8.8 0 01-.8-.8v-3.24c-2.97.1-5.17.88-6.52 2.3a4.86 4.86 0 00-1.39 3.29.8.8 0 01-.75.83h-.04a.79.79 0 01-.79-.74c-.22-3.78.69-6.76 2.69-8.84a10.76 10.76 0 016.81-3.07v-3.3a.8.8 0 011.29-.63l7.91 6.39a.8.8 0 010 1.25zm.3-11.73v2.42a.5.5 0 01-.03.1.8.8 0 01-.05.21.78.78 0 01-.47.42.67.67 0 01-.25.05h-.01c-.06 0-3.93-.04-6.46 2.62-.8.85-1.4 1.87-1.74 2.99 1.79-1.7 4.55-2.57 8.21-2.57.44 0 .8.36.8.8v2.4l5.85-4.72z"/>
<path id="def-be-a" d="M55.6 29.58h6.12v-1.59H55.6zm.64 5.74s.26-2.23 2.58-2.23c2.32 0 2.26 2.23 2.26 2.23zm-3.23 1.27S52.56 42 58.72 42c0 0 5.26.37 5.26-3.81H61.4s-.09 1.59-2.58 1.59c0 0-2.58.17-2.58-2.55l7.74-.01c-.08-.32.9-6.42-5.16-6.36-5.77.05-5.81 5.73-5.81 5.73zm-10.34 2.8v-4.24H47s1.7.16 1.7 2.24c0 1.76-1.06 1.99-1.7 2zM47 29.61s1.16.06 1.16 1.62-.76 1.64-1.49 1.64h-4v-3.26zm4.33 1.3c0-2.68-1.81-3.91-4.26-3.91H39v15.01h8.07s4.92.15 4.92-4.43c0 0 .22-3.73-2.9-3.73 0 0 2.24-.25 2.24-2.94z"/>
<path id="def-briefcase-a" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/>
<path id="def-comments-a" d="M752 8958l-4 4v-12a1 1 0 011-1h11a1 1 0 011 1v7a1 1 0 01-1 1zm12-6v13l-3.2-4H751l2-2h9v-8h1c1 0 1 .45 1 1z"/>
<path id="def-eaye-a" d="M630 8956.22c0 1.04-3.58 5.21-8 5.21s-8-4.26-8-5.21c0-1.05 3.58-5.22 8-5.22s8 4.17 8 5.22zm-5 0h-3v-3.13a3.13 3.13 0 100 6.26 3.07 3.07 0 003-3.13z"/>
<path id="def-file-a" d="M493 9457a2 2 0 01-1.98-2v-16a2 2 0 011.98-2h19.82c1.13 0 2.07.87 2.15 2v16a2.15 2.15 0 01-2.15 2zm0-18v8.83l5.3-4.59a.98.98 0 011.35.05l5.34 5.39 3.27-2.48a.98.98 0 011.36.16l3.35 4.07V9439zm19.97 14.55l-4.27-5.18-3.21 2.43c-.4.3-.95.26-1.3-.09l-5.3-5.35-5.9 5.1v4.54h19.98zm-6.1-10.55a1.98 1.98 0 113.97.04 1.98 1.98 0 01-3.97-.04z"/>
<path id="def-gplus-a" d="M466 10169a4 4 0 013.87-3.99 4.14 4.14 0 012.93.99c-.33.36-.67.71-1.03 1.04-.72-.42-1.58-.75-2.41-.46a2.52 2.52 0 00-1.67 3.23c.41 1.35 2.09 2.1 3.4 1.52a2.22 2.22 0 001.33-1.51c-.78-.01-1.56 0-2.34-.03v-1.36h3.9a4.45 4.45 0 01-.83 3.2c-1 1.28-2.88 1.66-4.4 1.16a4 4 0 01-2.75-3.79z"/><path id="def-gplus-b" d="M476.34 10166h1.32l.01 1.33H479v1.33l-1.33.01v1.33h-1.33l-.01-1.33H475v-1.33l1.33-.01.01-1.33z"/>
<path id="def-inst-a" d="M1480.93 332c-3.5 0-3.95.02-5.32.07-1.37.07-2.3.28-3.14.6-.84.34-1.57.77-2.28 1.5a6.36 6.36 0 00-1.5 2.28 9.84 9.84 0 00-.6 3.14c-.07 1.37-.07 1.82-.07 5.32s.02 3.96.07 5.32c.07 1.37.28 2.31.6 3.14.34.85.77 1.58 1.5 2.29a6.51 6.51 0 002.28 1.5c.82.3 1.77.53 3.14.6 1.37.07 1.82.07 5.32.07s3.96-.02 5.32-.07a9.48 9.48 0 003.14-.6 6.14 6.14 0 002.29-1.5 6.36 6.36 0 001.5-2.29c.3-.81.53-1.77.6-3.14.07-1.36.07-1.82.07-5.32s-.02-3.95-.07-5.32a9.48 9.48 0 00-.6-3.14 6.14 6.14 0 00-1.5-2.28 6.36 6.36 0 00-2.29-1.5 9.84 9.84 0 00-3.14-.6c-1.38-.05-1.82-.07-5.32-.07zm0 2.32c3.45 0 3.85.02 5.22.07 1.27.05 1.94.26 2.4.45.6.25 1.03.52 1.48.97.45.45.73.89.97 1.5.18.44.39 1.14.45 2.39.07 1.37.07 1.76.07 5.21s-.01 3.85-.07 5.22a6.55 6.55 0 01-.45 2.4c-.24.6-.52 1.03-.97 1.48-.45.45-.88.73-1.49.97-.45.18-1.14.39-2.39.45-1.37.07-1.77.07-5.22.07-3.45 0-3.84-.01-5.21-.07a6.55 6.55 0 01-2.4-.45 4.11 4.11 0 01-1.49-.97 4.11 4.11 0 01-.97-1.49 7.52 7.52 0 01-.45-2.39c-.07-1.37-.07-1.77-.07-5.22 0-3.45.02-3.84.07-5.21.05-1.27.26-1.95.45-2.4.25-.6.52-1.04.97-1.49.45-.45.89-.72 1.5-.97a7.52 7.52 0 012.39-.45c1.35-.05 1.76-.07 5.21-.07z"/><path id="def-inst-b" d="M1480.93 349.2a4.3 4.3 0 110-8.59 4.3 4.3 0 010 8.6zm0-10.93a6.62 6.62 0 100 13.24 6.62 6.62 0 000-13.24z"/><path id="def-inst-c" d="M1486.27 338.01a1.54 1.54 0 113.09 0 1.54 1.54 0 01-3.09 0z"/>
<path id="def-like-down-a" d="M1004.33 543.66c-1.1 0-2.45-.86-2.61-3.31-.05-1.41.11-2.82.48-4.19h-2.96c-2.15 0-3.42-1.35-3.42-2.67 0-.39.05-.77.17-1.13a2.4 2.4 0 01-.99-2.03 2.35 2.35 0 011.02-2.05c-.12-.34-.18-.7-.17-1.06.86-.6 1.2-1.7.86-2.7 0-2.52 3.45-2.52 4.57-2.52h2.85c1.3.06 2.56.4 3.71 1 .67.36 1.41.6 2.18.67h3.23c.25 0 .5.11.65.31.12.14 1.1 1.47 1.1 4.69.03 1.8-.28 3.6-.9 5.31a.83.83 0 01-.67.5c-.03 0-3.27.4-4.85 1.98a10.32 10.32 0 00-2.8 5.94 1.4 1.4 0 01-1.45 1.26zm-6.84-10.17c0 .34.52 1 1.75 1h4.06a.83.83 0 01.8 1.1c-.5 1.5-.73 3.07-.72 4.65.08 1.1.44 1.6.79 1.72a11.94 11.94 0 013.23-6.67c1.57-1.58 4.2-2.18 5.32-2.38.41-1.37.62-2.8.61-4.24a8.18 8.18 0 00-.56-3.34h-2.75c-1-.07-1.97-.35-2.85-.81a7.53 7.53 0 00-3.04-.85h-2.85c-1.32 0-2.9.15-2.9.85-.02.11.02.22.09.3a.73.73 0 01.75.77.92.92 0 01-.85.87.85.85 0 00-.85.77c-.05.22.01.44.17.6.42.07.71.45.67.88a.87.87 0 01-.86.77.77.77 0 00-.83.85.8.8 0 00.87.85c.46.01.82.4.81.85 0 .43-.33.78-.76.8-.09.21-.12.44-.1.66z"/>
<path id="def-like-up-a" d="M944.67 520c1.1 0 2.45.87 2.61 3.32.05 1.4-.11 2.82-.48 4.18h2.96c2.15 0 3.42 1.36 3.42 2.67 0 .39-.05.77-.17 1.14a2.4 2.4 0 01.99 2.02c.04.81-.35 1.59-1.02 2.05.12.34.18.7.17 1.07-.86.6-1.2 1.7-.86 2.69 0 2.52-3.45 2.52-4.57 2.52h-2.85a8.94 8.94 0 01-3.71-.99 5.67 5.67 0 00-2.18-.67h-3.23a.83.83 0 01-.65-.32c-.12-.14-1.1-1.47-1.1-4.68-.03-1.81.28-3.62.9-5.32a.83.83 0 01.67-.5c.03 0 3.27-.4 4.85-1.98a10.32 10.32 0 002.8-5.93 1.4 1.4 0 011.45-1.27zm6.84 10.17c0-.34-.52-1-1.75-1h-4.06a.83.83 0 01-.8-1.1c.5-1.5.73-3.07.72-4.65-.08-1.1-.44-1.6-.79-1.72a11.94 11.94 0 01-3.23 6.67c-1.57 1.58-4.2 2.19-5.32 2.38a14.38 14.38 0 00-.61 4.25 8.18 8.18 0 00.56 3.33h2.75c1 .07 1.97.35 2.85.82.94.49 1.98.78 3.04.85h2.85c1.32 0 2.9-.15 2.9-.86a.35.35 0 00-.09-.3.73.73 0 01-.75-.77.92.92 0 01.85-.87c.44 0 .81-.33.85-.77a.65.65 0 00-.17-.6.81.81 0 01-.67-.87.87.87 0 01.86-.78.77.77 0 00.83-.85.8.8 0 00-.87-.85.83.83 0 01-.81-.85c0-.43.33-.78.76-.8.09-.21.12-.43.1-.66z"/>
<path id="def-like-a" d="M701.32 8960.32a.95.95 0 01-.95.95h-5.72c-.96 0-1.92-.95-2.87-.95h-.95v-6.68c.04-.6.4-1.12.95-1.36a4.78 4.78 0 002.87-4.37v-.96a.95.95 0 01.95-.95h.95c.53 0 .95.43.95.95v5.73h3.82a.9.9 0 01.96.96zm-14.31.95v-9.54h1.9a.96.96 0 01.97.95v7.64a.96.96 0 01-.96.95zm.99-8.3a.48.48 0 10.88.38.48.48 0 00-.88-.38z"/>
<path id="def-link-a" d="M626.02 1163.93l-.02 15.99 13.02.01v-4a.86.86 0 01.24-.68.9.9 0 01.66-.28 1 1 0 011 1v4.95a1 1 0 01-.29.7 1 1 0 01-.71.29H625a1 1 0 01-.71-.29 1 1 0 01-.29-.7V1163a1 1 0 011-1h3.95a1 1 0 011 1 .89.89 0 01-.93.93z"/><path id="def-link-b" d="M641.95 1171a1 1 0 01-1-1v-5.59l-9.25 9.3a.99.99 0 01-1.41-.01.99.99 0 01.01-1.41l9.24-9.29h-5.56a1 1 0 01-1-1 1 1 0 011-1h7.97a1 1 0 011 1v8a1 1 0 01-1 1z"/>
<path id="def-mail-a" d="M1058 261c0-.6-.4-1-1-1h-14c-.6 0-1 .4-1 1l8 6.5z"/><path id="def-mail-b" d="M1042 262.5v8.5c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-8.5l-8 6.5z"/>
<path id="def-outside-a" d="M1204.24 9231.16h-10.05c-.92 0-1.67-.75-1.67-1.68v-4.2c0-.46.38-.84.84-.84a.81.81 0 01.8.84v4.2h10.08v-16.8h-10.08v4.2a.81.81 0 01-.8.84.84.84 0 01-.84-.84v-4.2c0-.93.75-1.68 1.67-1.68h10.05c.92 0 1.67.75 1.67 1.68v16.8c0 .93-.75 1.68-1.67 1.68zm-15.56-10.92h11.37a.84.84 0 110 1.68h-11.36l1.91 1.92a.84.84 0 11-1.18 1.2l-3.35-3.36a.86.86 0 01-.24-.6v-.02a.83.83 0 01.24-.58l3.35-3.36a.83.83 0 011.18 0c.33.33.33.87 0 1.2z"/>
<path id="def-pencil-a" d="M1190.84 9818.68a.64.64 0 01-.19.13l-.07.06-4.42 1.82c-.1.05-.21.07-.32.07a.83.83 0 01-.77-1.15l1.84-4.4v-.02a.38.38 0 01.09-.13l.08-.13v-.01l10.82-10.82-.44-.44-3.56 3.57a.83.83 0 01-1.18-1.18l4.16-4.15a.81.81 0 011.17 0l1.03 1.03 1.86-1.86a.84.84 0 011.17 0l2.58 2.58c.33.32.33.85 0 1.18zm-2.88-1.7l-.58 1.41 1.41-.58zm.88-1.47l1.41 1.4 10.24-10.23-1.4-1.4zm12.69-12.68l-1.27 1.27 1.4 1.4 1.28-1.27z"/>
<path id="def-phone-a" d="M732.62 41c-2.25 0-6.37-2.73-10.24-6.78a33.08 33.08 0 01-5.22-6.96c-1.33-2.53-1.52-4.32-.56-5.31l2.91-2.72c.17-.16.4-.24.63-.23.24.02.46.13.61.32l3.79 4.58c.23.28.28.68.12 1.01l-1.47 3.08 5.24 5.48 2.93-1.54a.83.83 0 01.96.12l4.38 3.96c.17.16.28.38.3.63a.97.97 0 01-.22.67l-2.53 3.02c-.33.34-.81.67-1.63.67zm-14.76-17.78c-.15.21-.25 1.09.83 3.15 1.06 2 2.8 4.32 4.93 6.55 3.87 4.06 7.53 6.25 9 6.25.2 0 .3-.04.33-.08l1.94-2.3-3.27-2.95-2.98 1.56a.84.84 0 01-1.01-.17l-6.12-6.42a.92.92 0 01-.16-1.05l1.48-3.12-2.82-3.42z"/>
<path id="def-plus-a" d="M1223.33 4172.67h-6.66v6.66a.67.67 0 01-1.34 0v-6.66h-6.66a.67.67 0 010-1.34h6.66v-6.66a.67.67 0 011.34 0v6.66h6.66a.67.67 0 010 1.34z"/>
<path id="def-search-a" d="M1092.53 24.87a6.7 6.7 0 10-.05 13.4 6.7 6.7 0 00.05-13.4zm12.1 18.85a.95.95 0 01-1.35 0l-5.4-5.43a8.62 8.62 0 111.35-1.35l5.4 5.43c.37.37.37.98 0 1.35z"/>
<path id="def-shape-a" d="M879 13323h-4a1 1 0 01-1-1v-4a1 1 0 011-1h.85c-1.29-8.14-8.38-15.22-16.85-16.81v.81a1 1 0 01-1 1h-4a1 1 0 01-1-1v-.81c-8.47 1.6-15.56 8.67-16.85 16.81h.85a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4a1 1 0 011-1h1.13c1.03-7.24 6.24-13.76 13.07-17h-6.48a1.98 1.98 0 01-1.72 1.01c-.97 0-1.8-.69-1.98-1.65a2 2 0 011.28-2.23 2 2 0 012.42.87H853v-1a1 1 0 011-1h4a1 1 0 011 1v1h12.27a2.01 2.01 0 110 2h-6.47c6.83 3.24 12.04 9.76 13.07 17H879a1 1 0 011 1v4a1 1 0 01-1 1zm-43-4h-2v2h2zm21-21h-2v2h2zm21 21h-2v2h2zm-22.93-12.51a.52.52 0 01.1-.18l.01-.03.03-.03a1 1 0 01.2-.21l.06-.04c.06-.04.12-.08.19-.1l.04-.02.09-.01.05-.01.16-.03.15.03h.04l.11.01.04.02.19.1.02.02.02.01a.92.92 0 01.24.25l.02.03c.04.05.08.12.1.18l.03.05c.02.07 2.33 7.26 8.51 10.59.26.14.45.39.51.68a.97.97 0 01-.2.82 23.7 23.7 0 00-3.99 8.81 8.02 8.02 0 012.21 5.57 1 1 0 01-1 1h-14a1 1 0 01-1-1 8.02 8.02 0 012.21-5.57 23.66 23.66 0 00-3.99-8.8 1 1 0 01.31-1.51c6.21-3.34 8.49-10.52 8.51-10.59l.03-.04zm.93 20.49a6 6 0 00-5.92 5.02h11.84a6 6 0 00-5.92-5.02zm-4.06-.9a8.17 8.17 0 018.12 0 25.8 25.8 0 013.47-7.78 20.33 20.33 0 01-6.53-6.96v6.93a2 2 0 01-.97 3.73 2.03 2.03 0 01-2.03-2 2 2 0 011-1.7v-6.96a20.33 20.33 0 01-6.53 6.96 25.8 25.8 0 013.47 7.78z"/>
<path id="def-strawberry-a" d="M873.26 13427.96a7.49 7.49 0 01-4.13-1.21 20.45 20.45 0 012.02 8.92c0 10.41-17.26 18.25-28.46 18.25-3.71 0-6.53-.86-8.17-2.48l-.1-.1c-3.9-4.01-2.65-13.97.62-21.78 3.77-9.01 9.53-14.39 15.41-14.39 3.1 0 6.17.68 8.97 1.99a8.12 8.12 0 01-.65-1.24c-1.09-2.7-.53-5.87 1.68-9.44a1 1 0 011.11-.45c.21.06 5.12 1.38 6.8 5.49.8 2.19.7 4.61-.29 6.72 1.25-.51 2.58-.79 3.92-.83 5.12 0 7.74 4.75 8.4 7.26a.97.97 0 01-.45 1.1 12.95 12.95 0 01-6.68 2.19zm-36.36 2.36c-3.42 8.19-3.85 16.84-.97 19.69l.08.09c1.26 1.18 3.62 1.82 6.68 1.82a38.27 38.27 0 0017.26-4.82c3.43-1.92 9.18-5.96 9.18-11.43a18.4 18.4 0 00-18.68-18.5c-5.93 0-10.89 6.79-13.55 13.15zm29.59-18.05c-.97-2.38-3.49-3.6-4.73-4.07-1.52 2.71-1.89 5.05-1.12 6.96.96 2.37 3.48 3.6 4.73 4.08 1.52-2.71 1.89-5.05 1.12-6.97zm5.5 7.13c-1.75.08-3.45.6-4.95 1.51.59 1.54 2.36 5.06 6.22 5.06 1.75-.08 3.45-.6 4.94-1.5-.59-1.55-2.36-5.07-6.21-5.07zm-13.43 13.54h3v3h-3zm-4-5h3v3h-3zm2 13h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm2 22h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm-5 14h3v3h-3zm0-9h3v3h-3z"/>
<path id="def-telegram-a" d="M823.8 272.93l-4.09 20.05c-.3 1.42-1.16 1.76-2.36 1.1l-6.52-4.77-3.13 3c-.55.47-.75.66-1.27.65-.5 0-.74-.3-1.03-1.1l-2.4-7.29-6.26-1.94c-1.01-.32-1.06-1.66.31-2.05l25.01-9.39c1.14-.52 2.18 0 1.74 1.74zm-17.39 18.55l.6-5.26 11.83-10.54c.31-.36.09-.88-.61-.42l-14.24 8.87z"/>
<path id="def-tm-a" d="M1406.46 346.34l13.28-8.34c.65-.44.86.05.57.39l-11.02 9.91-.57 4.96zm16.84-12.16l-23.32 8.83c-1.27.37-1.24 1.62-.3 1.93l5.84 1.82 2.24 6.86c.28.75.5 1.04.96 1.04.49 0 .67-.18 1.19-.62.58-.55 1.5-1.43 2.92-2.83l6.08 4.49c1.12.62 1.92.3 2.21-1.04l3.8-18.85c.41-1.63-.55-2.12-1.62-1.63z"/>
<path id="def-trash-a" d="M1175 9805h-1.09l-1.8 13.12a2.15 2.15 0 01-2.11 1.88h-8a2.14 2.14 0 01-2.1-1.88l-1.78-13.12H1157a1 1 0 010-2h5v-1a3 3 0 013-3h2a3 3 0 013 3v1h5a1 1 0 010 2zm-7-3a1 1 0 00-1-1h-2a1 1 0 00-1 1v1h4zm-7.87 3l1.75 12.9c.02.05.07.09.12.1h8c.06-.01.1-.05.12-.11l1.78-12.89zm6.87 3h2v6h-2zm-4 0h2v6h-2z"/>
<path id="def-triangle-a" d="M1238 6883l7.22 7.22 7.22-7.22z"/>
<path id="def-user-circle-a" d="M1265.24 30.18a10 10 0 01-2.18 10.9 6.94 6.94 0 00-4.7-4.69 5 5 0 10-4.66.01c-2.24.72-4 2.47-4.72 4.71a10 10 0 1116.26-10.93zm-6.22 1.82a3 3 0 11-6-.01 3 3 0 016 .01zm-8.3 10.48c.4-2.6 2.65-4.5 5.28-4.48 2.73 0 5.1 1.96 5.27 4.37l.03.09a9.9 9.9 0 01-10.57.02zM1256 46a12.01 12.01 0 000-24 12 12 0 100 24z"/>
<path id="def-vb-a" d="M955.45 276.38c.68 3.25.79 6.51-.02 9.76-.14.57-.36 1.11-.58 1.65-.84 2.05-2.5 3.13-4.57 3.73-1.63.48-3.31.69-5 .82-.89.07-2.29.03-3.18.02-.76-.01-.55-.04-1.04.45-.96.97-1.84 1.82-2.76 2.84a28 28 0 01-1.35 1.35v-4.93c0-.25-.07-.4-.3-.5-.26-.1-.5-.24-.75-.34a6.95 6.95 0 01-4.35-4.98 19.93 19.93 0 01-.51-6.16c.07-1.4.26-2.79.64-4.15a6.8 6.8 0 013.48-4.25 13.83 13.83 0 014.79-1.47 25.9 25.9 0 019.8.59 8.9 8.9 0 013.5 1.69 6.59 6.59 0 012.2 3.88zm-12.05-1.52c.54.04 1.07.15 1.6.28 1.98.5 3.52 1.53 4.32 3.43.42.99.63 2.02.7 3.08.02.27.15.42.43.42.27-.01.38-.19.39-.43.02-.21.01-.42.01-.64a7.41 7.41 0 00-1.39-4.12c-1.49-1.96-3.43-2.7-6-2.82-.31-.02-.49.1-.51.42-.01.31.21.36.45.38zm4.39 4.61c.11.4.21.81.26 1.22.03.27-.03.64.42.65.32.01.4-.13.43-.67a4.58 4.58 0 00-.68-2.46c-.96-1.52-2.37-2.16-4.16-2.32-.28-.03-.48.08-.52.37-.05.3.14.44.41.48.55.08 1.08.22 1.6.4a3.32 3.32 0 012.24 2.33zm-2.22-1.46a2.29 2.29 0 00-.89-.22c-.38.03-.58.19-.58.45.01.33.3.33.52.39l.27.06c.72.19 1.13.65 1.27 1.36.03.13.04.27.08.4.06.18.18.31.4.31.21-.01.34-.13.39-.32l.04-.35a2.4 2.4 0 00-1.5-2.08zm4.89 7.94c-.78-.65-1.6-1.25-2.47-1.78-1.02-.62-1.77-.45-2.47.49l-.11.14c-.32.39-.72.54-1.22.4a5.89 5.89 0 01-1.51-.74 6.76 6.76 0 01-2.77-3.19c-.35-.82-.19-1.35.54-1.88l.28-.2c.55-.45.68-.89.37-1.52a9.94 9.94 0 00-2.3-3.05 1.3 1.3 0 00-.97-.36 2.9 2.9 0 00-2.62 2.74c-.01.37.08.78.24 1.17 2.23 5.38 6.16 9.1 11.6 11.36.4.17.82.27 1.25.15a3.75 3.75 0 002.55-2.16c.28-.61.14-1.13-.39-1.57z"/>
<path id="def-ynadex-a" d="M471.93 10326.44h-.59c-.92 0-1.8-.64-1.8-2.24 0-1.67.83-2.35 1.68-2.35h.7v4.59zm.92-5.44h-1.6c-1.55 0-2.87 1.13-2.87 3.33 0 1.32.64 2.3 1.78 2.78l-2.13 3.68c-.07.12 0 .21.1.21h1c.08 0 .14-.03.17-.1l1.93-3.6h.7v3.6c0 .05.04.1.1.1h.86c.08 0 .11-.04.11-.1v-9.77c0-.09-.06-.13-.15-.13z"/>
<path id="def-ytube-a" d="M1343.37 349.72v-9.44l6.27 4.72zm-7.81-14.03a3.54 3.54 0 00-3.56 3.51v11.6a3.54 3.54 0 003.56 3.51h19.88a3.54 3.54 0 003.56-3.5V339.2a3.54 3.54 0 00-3.56-3.51h-19.88z"/>
</defs>
<symbol id="icon-arrow-chevron" viewBox="0 0 9 15"><path d="M7.07.862L0 7.93 7.072 15l1.06-1.06-6.011-6.01L8.13 1.922 7.07.862z"/></symbol>
<symbol id="icon-arrow-down" viewBox="0 0 8 5"><use xlink:href="#def-arrow-down-a" transform="translate(-223 -20813)"/></symbol>
<symbol id="icon-arrow-left" viewBox="0 0 18 12"><path d="M.1 6.3c-.1-.3 0-.6.1-.8l4.3-4.3c.3-.3.7-.3 1 0 .3.3.3.7 0 1l-3 3.1h14.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H2.5l3.1 3.1c.3.3.3.8 0 1-.2.2-.3.2-.4.3-.2.1-.5 0-.7-.2L.2 6.6c-.1-.1-.1-.2-.1-.3z"/></symbol>
<symbol id="icon-arrow-menu" viewBox="0 0 10 5"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 0l5 5 5-5H0z"/></symbol>
<symbol id="icon-arrow-right" viewBox="0 0 15 12"><path d="M14.19 5.77c.11.26.05.57-.15.78l-4.32 4.33a.72.72 0 01-1.02 0 .72.72 0 010-1.02l3.09-3.1H.69A.72.72 0 010 6.04c0-.38.31-.7.69-.72h11.1L8.7 2.23a.73.73 0 01.33-1.21c.24-.06.51.01.69.19l4.32 4.32a.6.6 0 01.15.24z"/></symbol>
<symbol id="icon-arrow" viewBox="0 0 20 17"><use xlink:href="#def-arrow-a" transform="translate(-1033 -789)"/></symbol>
<symbol id="icon-be" viewBox="0 0 25 16"><use xlink:href="#def-be-a" transform="translate(-39 -27)"/></symbol>
<symbol id="icon-be2-mob" viewBox="0 0 34 34"><path d="M15.426 16.508s1.507-.112 1.507-1.879S15.7 12 14.138 12H9v9.875h5.138s3.137.099 3.137-2.915c0 0 .137-2.452-1.85-2.452zm-4.162-2.753h2.874s.699 0 .699 1.027c0 1.028-.411 1.177-.877 1.177h-2.696v-2.204zm2.742 6.365h-2.742v-2.64h2.874s1.041-.013 1.041 1.357c0 1.142-.761 1.271-1.173 1.283zM23.408 12.582h-4.074v1.216h4.074v-1.216zM21.458 14.513c-3.797 0-3.794 3.793-3.794 3.793s-.26 3.775 3.794 3.775c0 0 3.38.193 3.38-2.626H23.1s.058 1.062-1.584 1.062c0 0-1.737.116-1.737-1.718h5.116s.56-4.286-3.437-4.286zm1.545 2.968h-3.244s.213-1.522 1.738-1.522 1.506 1.522 1.506 1.522z"/></symbol>
<symbol id="icon-be2" viewBox="0 0 56 56"><path d="M27.475 27.946s1.987-.148 1.987-2.479c0-2.33-1.625-3.467-3.685-3.467H19v13.024h6.777s4.137.13 4.137-3.844c0 0 .18-3.234-2.439-3.234zm-5.489-3.631h3.791s.921 0 .921 1.355-.542 1.551-1.156 1.551h-3.556v-2.906zm3.616 8.394h-3.616v-3.48h3.79s1.374-.018 1.374 1.788c0 1.506-1.004 1.677-1.548 1.692zM38.004 22.767H32.63v1.604h5.373v-1.604zM35.432 25.314c-5.009 0-5.004 5.003-5.004 5.003s-.344 4.98 5.004 4.98c0 0 4.456.254 4.456-3.464h-2.292s.077 1.4-2.088 1.4c0 0-2.291.154-2.291-2.266h6.748s.738-5.653-4.533-5.653zm2.037 3.915H33.19s.28-2.008 2.291-2.008c2.013 0 1.987 2.008 1.987 2.008z"/></symbol>
<symbol id="icon-briefcase" viewBox="834 13519 48 44"><path d="M836.5 13563c-1.4 0-2.5-1.2-2.5-2.6v-19.4c0 .6.4 1 1 1h1v18.4c0 .3.2.6.5.6h42.9c.3 0 .5-.3.5-.6v-18.4h1c.6 0 1-.4 1-1s-.4-1-1-1h-1v-10.4c0-.3-.2-.5-.5-.6h-42.9c-.3 0-.5.3-.5.6v10.4h-1c-.6 0-1 .4-1 1v-11.4c0-1.4 1.1-2.5 2.5-2.6H849v1c0 .6.4 1 1 1s1-.4 1-1v-1h14v1c0 .6.4 1 1 1 .3 0 .5-.1.7-.3.2-.2.3-.4.3-.7v-1h12.5c1.4 0 2.5 1.2 2.5 2.6v30.9c0 1.4-1.1 2.6-2.5 2.6h-43zm18.4-21H836v-2h18.9c.6 0 1 .4 1 1s-.4 1-1 1zm25.1-2v2h-18.9c-.6 0-1-.4-1-1s.4-1 1-1H880zm-13-16.8c0-2.3-1.9-4.2-4.2-4.2h-9.6c-2.3 0-4.2 1.9-4.2 4.2v3.8h2v-3.8c0-1.2 1-2.2 2.2-2.2h9.6c1.2 0 2.2 1 2.2 2.2v3.8h2v-3.8z"/><clipPath id="def-briefcase-b"><use xlink:href="#def-briefcase-a" overflow="visible"/></clipPath><g clip-path="url(#def-briefcase-b)"><path stroke-width="4" stroke-miterlimit="50" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/></g></symbol>
<symbol id="icon-burger" viewBox="0 0 20 14"><g fill-rule="evenodd"><path d="M0 0h20v2H0zM0 6h20v2H0zM0 12h20v2H0z"/></g></symbol>
<symbol id="icon-cancel-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm0-22a10 10 0 100 20 10 10 0 000-20zm4.71 13.29L13.41 12l3.3-3.29a1 1 0 00-.02-1.4 1 1 0 00-1.4-.02L12 10.59l-3.29-3.3a1 1 0 00-1.4.02 1 1 0 00-.02 1.4l3.3 3.29-3.3 3.29a1 1 0 00.02 1.4 1 1 0 001.4.02l3.29-3.3 3.29 3.3a1 1 0 001.42 0 1 1 0 000-1.42z"/></symbol>
<symbol id="icon-clip" viewBox="0 0 25 22"><path d="M12.1 21.37a1.02 1.02 0 01-.71-1.73L21.74 9.11a4.19 4.19 0 000-5.87 4.04 4.04 0 00-5.78 0l-12 12.21c-.59.49-.94 1.2-.97 1.97.05.49.28.95.63 1.29.31.35.77.53 1.23.48.74-.17 1.4-.57 1.89-1.15l9.42-9.58a.98.98 0 011.41 0c.39.4.39 1.04 0 1.44l-9.42 9.58A5.3 5.3 0 015.1 21.2a3.37 3.37 0 01-2.89-1.05A4.16 4.16 0 011 17.54a4.62 4.62 0 011.55-3.53l12-12.2a6.03 6.03 0 018.6 0 6.24 6.24 0 010 8.74L12.8 21.07a.98.98 0 01-.7.3z"/></symbol>
<symbol id="icon-clock" viewBox="0 0 24 24"><path d="M0 12a12 12 0 1124 0 12 12 0 01-24 0zm2 0a10 10 0 1020 0 10 10 0 00-20 0zm14 5a1 1 0 00.71-1.71L13 11.59V5a1 1 0 00-1-1 1 1 0 00-1 1v7a1 1 0 00.08.38c.05.12.12.24.21.33l4 4c.19.18.45.29.71.29z"/></symbol>
<symbol id="icon-close-menu" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.636 2.303L13.97.636 8.136 6.469 2.303.636.636 2.303 6.47 8.136.636 13.97l1.667 1.667 5.833-5.833 5.833 5.833 1.667-1.666-5.833-5.834 5.833-5.833z"/></symbol>
<symbol id="icon-close" viewBox="0 0 16 15"><g fill-rule="evenodd"><path d="M1.963.045l13.791 12.86-1.364 1.463L.6 1.508z"/><path d="M14.39.045L.6 12.905l1.364 1.463 13.79-12.86z"/></g></symbol>
<symbol id="icon-comments" viewBox="0 0 16 16"><use xlink:href="#def-comments-a" transform="translate(-748 -8949)"/></symbol>
<symbol id="icon-eaye" viewBox="0 0 16 11"><use xlink:href="#def-eaye-a" transform="translate(-614 -8951)"/></symbol>
<symbol id="icon-fb" viewBox="0 0 13 25"><path d="M8.44 25V13.6h3.83l.58-4.45H8.44V6.31c0-1.28.36-2.16 2.2-2.16H13V.18A29.7 29.7 0 009.57 0c-3.4 0-5.73 2.07-5.73 5.87v3.28H0v4.45h3.84V25z"/></symbol>
<symbol id="icon-fb2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.415 24.638v-7.131h2.457l.366-2.784h-2.823v-1.776c0-.8.23-1.351 1.411-1.351h1.514v-2.49A21.931 21.931 0 0019.14 9c-2.182 0-3.677 1.295-3.677 3.672v2.051H13v2.784h2.463v7.13h2.952z"/></symbol>
<symbol id="icon-fb2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M30.142 38.625V29.22h3.24l.483-3.671H30.14v-2.343c0-1.056.305-1.782 1.862-1.782H34V18.14a28.937 28.937 0 00-2.902-.14c-2.877 0-4.849 1.708-4.849 4.843v2.706H23v3.671h3.25v9.405h3.892z"/></symbol>
<symbol id="icon-file" viewBox="0 0 24 20"><use xlink:href="#def-file-a" transform="translate(-491 -9437)"/></symbol>
<symbol id="icon-github-mob" viewBox="0 0 34 34"><path d="M17.2 10c-3.978 0-7.2 3.307-7.2 7.386 0 3.263 2.063 6.031 4.923 7.007.36.07.492-.16.492-.355 0-.175-.006-.64-.009-1.256-2.003.445-2.425-.99-2.425-.99-.328-.853-.801-1.081-.801-1.081-.652-.458.05-.449.05-.449.723.052 1.103.761 1.103.761.642 1.13 1.685.803 2.097.615.065-.478.25-.803.456-.988-1.599-.185-3.28-.82-3.28-3.65 0-.806.28-1.464.741-1.981-.08-.187-.324-.938.063-1.955 0 0 .603-.198 1.98.757a6.754 6.754 0 011.8-.25 6.754 6.754 0 011.8.25c1.368-.955 1.971-.757 1.971-.757.387 1.017.144 1.768.072 1.955.46.517.738 1.175.738 1.981 0 2.838-1.683 3.462-3.285 3.644.252.222.486.674.486 1.366 0 .989-.009 1.783-.009 2.023 0 .193.126.424.495.35 2.881-.969 4.942-3.739 4.942-6.997 0-4.079-3.224-7.386-7.2-7.386z"/></symbol>
<symbol id="icon-github" viewBox="0 0 56 56"><path d="M27.913 19C22.436 19 18 23.362 18 28.741c0 4.305 2.84 7.955 6.778 9.242.496.092.677-.21.677-.468 0-.232-.008-.844-.012-1.657-2.758.588-3.34-1.306-3.34-1.306-.45-1.125-1.102-1.425-1.102-1.425-.898-.604.07-.592.07-.592.995.068 1.518 1.004 1.518 1.004.884 1.49 2.32 1.059 2.887.81.09-.63.344-1.059.628-1.302-2.202-.244-4.515-1.082-4.515-4.814 0-1.063.384-1.932 1.02-2.614-.112-.246-.446-1.236.086-2.578 0 0 .83-.26 2.727.999a9.676 9.676 0 012.478-.329 9.676 9.676 0 012.478.329c1.883-1.26 2.714-.999 2.714-.999.532 1.342.198 2.332.099 2.578a3.737 3.737 0 011.016 2.614c0 3.742-2.317 4.566-4.523 4.805.347.293.67.89.67 1.803 0 1.303-.013 2.35-.013 2.667 0 .255.173.56.681.463 3.966-1.279 6.804-4.932 6.804-9.23 0-5.38-4.439-9.741-9.913-9.741z"/></symbol>
<symbol id="icon-gplus" viewBox="0 0 13 8"><use xlink:href="#def-gplus-a" transform="translate(-466 -10165)"/><use xlink:href="#def-gplus-b" transform="translate(-466 -10165)"/></symbol>
<symbol id="icon-head" viewBox="0 0 54 45"><g transform="translate(2 2)" fill-rule="evenodd"><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" fill-rule="nonzero"/><path stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" d="M46.923 13.25L22.99 0 0 14.007l23.179 13.44L46.923 13.25V30"/><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" cx="47.308" cy="32.692" r="2.692"/><path d="M32.733 18.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865-3.694-1.99-7.403-3.98-11.097-5.957-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957zM36.733 15.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865a4281.61 4281.61 0 00-11.097-5.957c-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957z" fill-rule="nonzero"/></g></symbol>
<symbol id="icon-inst" viewBox="0 0 26 26"><use xlink:href="#def-inst-a" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-b" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-c" transform="translate(-1468 -332)"/></symbol>
<symbol id="icon-instagram-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M24.027 20.23a3.801 3.801 0 01-3.797 3.797h-6.433A3.801 3.801 0 0110 20.23v-6.433A3.801 3.801 0 0113.797 10h6.433a3.801 3.801 0 013.797 3.797v6.433zm-7.014-7.052a3.84 3.84 0 00-3.835 3.835 3.84 3.84 0 003.835 3.836 3.84 3.84 0 003.836-3.836 3.84 3.84 0 00-3.836-3.835zm0 6.848A3.016 3.016 0 0114 17.013 3.016 3.016 0 0117.013 14a3.016 3.016 0 013.013 3.013 3.016 3.016 0 01-3.013 3.013zm2.794-7.077c0-.625.509-1.133 1.133-1.133.625 0 1.134.508 1.134 1.133s-.509 1.134-1.134 1.134a1.135 1.135 0 01-1.133-1.134z"/></symbol>
<symbol id="icon-instagram" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M37.5 32.492a5.014 5.014 0 01-5.008 5.008h-8.484A5.014 5.014 0 0119 32.492v-8.484A5.014 5.014 0 0124.008 19h8.484a5.014 5.014 0 015.008 5.008v8.484zm-9.25-9.3a5.064 5.064 0 00-5.058 5.058c0 2.79 2.269 5.059 5.058 5.059 2.79 0 5.059-2.27 5.059-5.059 0-2.79-2.27-5.058-5.059-5.058zm0 9.032a3.978 3.978 0 01-3.974-3.974 3.978 3.978 0 013.974-3.974 3.978 3.978 0 013.974 3.974 3.978 3.978 0 01-3.974 3.974zm3.685-9.334c0-.825.67-1.495 1.494-1.495.825 0 1.495.67 1.495 1.495 0 .824-.67 1.495-1.495 1.495-.824 0-1.494-.67-1.494-1.495z"/></symbol>
<symbol id="icon-like-down" viewBox="0 0 20 22"><use xlink:href="#def-like-down-a" transform="translate(-995 -522)"/></symbol>
<symbol id="icon-like-up" viewBox="0 0 20 22"><use xlink:href="#def-like-up-a" transform="translate(-934 -520)"/></symbol>
<symbol id="icon-like" viewBox="0 0 16 16"><use xlink:href="#def-like-a" transform="translate(-687 -8946)"/></symbol>
<symbol id="icon-link" viewBox="0 0 19 21"><use xlink:href="#def-link-a" transform="translate(-624 -1161)"/><use xlink:href="#def-link-b" transform="translate(-624 -1161)"/></symbol>
<symbol id="icon-mail" viewBox="0 0 16 12"><use xlink:href="#def-mail-a" transform="translate(-1042 -260)"/><use xlink:href="#def-mail-b" transform="translate(-1042 -260)"/></symbol>
<symbol id="icon-minus-zoom" viewBox="0 0 26 2"><path stroke-linecap="square" stroke-miterlimit="50" stroke-width="2" d="M1.5 1h23.19"/></symbol>
<symbol id="icon-outside" viewBox="0 0 21 21"><use xlink:href="#def-outside-a" transform="translate(-1185 -9211)"/></symbol>
<symbol id="icon-pencil" viewBox="0 0 20 21"><use xlink:href="#def-pencil-a" transform="translate(-1185 -9800)"/></symbol>
<symbol id="icon-phone" viewBox="0 0 21 22"><use xlink:href="#def-phone-a" transform="translate(-716 -19)"/></symbol>
<symbol id="icon-play-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zM2 12a10 10 0 1020 0 10 10 0 00-20 0z"/><path d="M11.01 14.52c-.05.28.1.55.35.67.25.13.55.07.74-.14l2.85-2.94c.26-.27.27-.7.02-.98l-2.83-2.94a.69.69 0 00-.75-.13.67.67 0 00-.38.65z"/></symbol>
<symbol id="icon-play-reviews" viewBox="0 0 9 9"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.074 4.507c0 .41-.745.741-.745.741l-5.854 2.91a.619.619 0 01-.563-.054.649.649 0 01-.294-.494V1.392A.586.586 0 01.895.853a.557.557 0 01.595.01l5.839 2.903s.745.331.745.741z"/></symbol>
<symbol id="icon-play" viewBox="0 0 17 17"><path d="M17 9.02c0 .88-1.6 1.59-1.6 1.59L2.84 16.86c-.4.16-.84.12-1.21-.12A1.4 1.4 0 011 15.68V2.33c-.03-.47.2-.92.6-1.16.39-.24.89-.23 1.27.02L15.4 7.43s1.6.71 1.6 1.59z"/></symbol>
<symbol id="icon-plus-zoom" viewBox="0 0 24 24"><path d="M23 13H13v10a1 1 0 01-1 1 1 1 0 01-1-1V13H1a1 1 0 01-1-1 1 1 0 011-1h10V1a1 1 0 011-1 1 1 0 011 1v10h10a1 1 0 011 1 1 1 0 01-1 1z"/></symbol>
<symbol id="icon-plus" viewBox="0 0 16 16"><use xlink:href="#def-plus-a" transform="translate(-1208 -4164)"/></symbol>
<symbol id="icon-search" viewBox="0 0 22 22"><use xlink:href="#def-search-a" transform="translate(-1083 -22)"/></symbol>
<symbol id="icon-shape" viewBox="0 0 48 38"><use xlink:href="#def-shape-a" transform="translate(-832 -13296)"/></symbol>
<symbol id="icon-share" viewBox="0 0 26 24"><path d="M21.03 8a3.95 3.95 0 01-3.02-1.41l-9.08 4.54c.12.55.13 1.11.02 1.66l9.06 4.61a3.98 3.98 0 11-.9 1.79l-9.05-4.61a4 4 0 11-.05-5.22l9.1-4.55A4 4 0 1121.03 8zm0 14a2 2 0 002-2 2 2 0 10-2 2zm-18-10a2 2 0 104 0 2 2 0 00-4 0zm16-8a2 2 0 104 0 2 2 0 00-4 0z"/></symbol>
<symbol id="icon-smile" viewBox="0 0 23 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 23.278c-6.351 0-11.5-5.148-11.5-11.5C0 5.427 5.149.278 11.5.278S23 5.427 23 11.778c-.005 6.35-5.15 11.495-11.5 11.5zm0-21.083a9.583 9.583 0 00-9.583 9.583 9.584 9.584 0 1019.167 0A9.599 9.599 0 0011.5 2.195zm-6.613 12.87a7.38 7.38 0 006.613 4.38 7.333 7.333 0 006.613-4.38.957.957 0 00-.93-1.427.96.96 0 00-.796.603 5.277 5.277 0 01-9.774 0 .959.959 0 00-1.726.824zm10.447-3.287a1.917 1.917 0 110-3.833 1.917 1.917 0 010 3.833zM5.75 9.862a1.917 1.917 0 103.833 0 1.917 1.917 0 00-3.833 0z"/></symbol>
<symbol id="icon-socials" viewBox="0 0 40 40"><g fill-rule="evenodd"><circle cx="20" cy="20" r="20"/><path d="M20.021 31h-.485C13.717 31 9 26.08 9 20.009c0-6.07 4.717-10.991 10.536-10.991.309-.024.619-.024.928 0 5.819 0 10.536 4.92 10.536 10.99C31 26.08 26.283 31 20.464 31h-.443zm0-2.198h.316c4.655 0 8.43-3.937 8.43-8.793s-3.775-8.793-8.43-8.793h-.632c-4.655 0-8.43 3.937-8.43 8.793s3.775 8.793 8.43 8.793h.316z"/><path d="M19.382 31C13.648 31 9 26.08 9 20.009c0-6.07 4.648-10.991 10.382-10.991.305-.024.61-.024.914 0 .252.02.488.138.665.33 5.385 5.95 5.385 15.338 0 21.29a.998.998 0 01-1.142.252.992.992 0 01-.437.11zm.322-19.784h-.238c-4.588 0-8.306 3.937-8.306 8.793s3.718 8.793 8.306 8.793a.981.981 0 01.26 0c4.23-5.007 4.23-12.58 0-17.586h-.022z" clip-rule="evenodd"/><path d="M19.91 30.967a1.101 1.101 0 01-.419-.077 1.101 1.101 0 01-1.21-.253c-5.708-5.95-5.708-15.337 0-21.288a1.1 1.1 0 01.704-.33 6.664 6.664 0 011.012 0C26.074 9.02 31 13.94 31 20.01S26.074 31 19.997 31l-.088-.033zm-.353-19.783a13.177 13.177 0 000 17.585c.091-.012.184-.012.275 0 4.861 0 8.802-3.936 8.802-8.792s-3.94-8.793-8.802-8.793h-.275z" clip-rule="evenodd"/><path d="M27.944 17H11.056C10.473 17 10 16.552 10 16s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1zM27.944 25H11.056C10.473 25 10 24.552 10 24s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1z"/></g></symbol>
<symbol id="icon-strawberry" viewBox="0 0 49 48"><use xlink:href="#def-strawberry-a" transform="translate(-832 -13406)"/></symbol>
<symbol id="icon-telegram" viewBox="0 0 29 24"><use xlink:href="#def-telegram-a" transform="translate(-795 -271)"/></symbol>
<symbol id="icon-telegram2-mob" viewBox="0 0 34 34"><path d="M14.95 19.329l-.25 3.528c.358 0 .514-.154.7-.34l1.683-1.607 3.486 2.553c.64.356 1.09.168 1.263-.588L24.12 12.15c.204-.946-.341-1.316-.964-1.084l-13.452 5.15c-.918.357-.904.869-.156 1.1l3.44 1.07 7.988-4.998c.375-.25.717-.112.436.137L14.95 19.33z"/></symbol>
<symbol id="icon-telegram2" viewBox="0 0 56 56"><path d="M25.848 30.985l-.331 4.653c.473 0 .678-.203.924-.447l2.22-2.121 4.598 3.367c.843.47 1.437.223 1.665-.776l3.018-14.143.001-.001c.268-1.247-.45-1.734-1.272-1.428L18.929 26.88c-1.211.47-1.193 1.145-.206 1.451l4.536 1.411 10.536-6.593c.495-.328.946-.146.575.182l-8.522 7.653z"/></symbol>
<symbol id="icon-tm" viewBox="0 0 26 22"><use xlink:href="#def-tm-a" transform="translate(-1399 -334)"/></symbol>
<symbol id="icon-trash" viewBox="0 0 20 21"><use xlink:href="#def-trash-a" transform="translate(-1156 -9799)"/></symbol>
<symbol id="icon-triangle" viewBox="0 0 16 8"><use xlink:href="#def-triangle-a" transform="translate(-1237 -6883)"/></symbol>
<symbol id="icon-tw" viewBox="0 0 18 15"><path d="M18 1.75c-.66.3-1.37.5-2.12.59A3.7 3.7 0 0017.5.27c-.71.43-1.5.74-2.34.91a3.68 3.68 0 00-6.39 2.56c0 .3.03.58.09.85A10.45 10.45 0 011.25.69 3.75 3.75 0 002.4 5.68a3.67 3.67 0 01-1.68-.47v.05a3.75 3.75 0 002.97 3.67 3.51 3.51 0 01-1.67.06 3.7 3.7 0 003.45 2.6A7.33 7.33 0 010 13.14a10.37 10.37 0 005.66 1.68c6.79 0 10.51-5.7 10.51-10.64l-.01-.49A7.35 7.35 0 0018 1.76z"/></symbol>
<symbol id="icon-twitter-mob" viewBox="0 0 34 34"><path d="M24.406 12.386a6.16 6.16 0 01-1.702.466 2.937 2.937 0 001.3-1.632c-.572.34-1.202.58-1.873.715a2.952 2.952 0 00-5.109 2.02c0 .233.02.458.068.672a8.36 8.36 0 01-6.087-3.089 2.957 2.957 0 00.908 3.947 2.917 2.917 0 01-1.335-.363v.032a2.967 2.967 0 002.366 2.902c-.24.066-.502.097-.774.097-.189 0-.38-.01-.56-.05a2.981 2.981 0 002.76 2.057 5.934 5.934 0 01-3.661 1.26c-.242 0-.475-.011-.707-.04a8.314 8.314 0 004.53 1.325c5.435 0 8.406-4.502 8.406-8.404 0-.13-.004-.257-.01-.382a5.89 5.89 0 001.48-1.533z"/></symbol>
<symbol id="icon-twitter" viewBox="0 0 56 56"><path d="M38 21.828c-.707.31-1.46.515-2.244.615a3.874 3.874 0 001.713-2.153 7.783 7.783 0 01-2.47.943 3.894 3.894 0 00-6.738 2.664c0 .308.026.605.09.887a11.025 11.025 0 01-8.028-4.074 3.922 3.922 0 00-.533 1.969 3.9 3.9 0 001.73 3.237 3.847 3.847 0 01-1.76-.48v.043a3.913 3.913 0 003.12 3.827 3.887 3.887 0 01-1.02.129c-.25 0-.502-.015-.738-.067.505 1.543 1.937 2.677 3.64 2.714a7.827 7.827 0 01-4.83 1.66c-.32 0-.626-.013-.932-.052a10.966 10.966 0 005.976 1.748c7.167 0 11.086-5.938 11.086-11.085a9.95 9.95 0 00-.014-.503A7.77 7.77 0 0038 21.828z"/></symbol>
<symbol id="icon-user-circle" viewBox="0 0 24 24"><use xlink:href="#def-user-circle-a" transform="translate(-1244 -22)"/></symbol>
<symbol id="icon-vb" viewBox="0 0 25 27"><use xlink:href="#def-vb-a" transform="translate(-931 -270)"/></symbol>
<symbol id="icon-view-list" viewBox="0 0 15 15"><path d="M0 6V0h15v6zm0 9V9h15v6z"/></symbol>
<symbol id="icon-view-tile" viewBox="0 0 15 15"><path d="M0 6V0h6v6zm9 0V0h6v6zm0 9V9h6v6zm-9 0V9h6v6z"/></symbol>
<symbol id="icon-vk" viewBox="0 0 22 14"><path d="M10.61 13.8h1.3s.39-.04.59-.27c.19-.2.18-.59.18-.59s-.02-1.8.78-2.07c.8-.26 1.82 1.75 2.91 2.52.81.58 1.44.46 1.44.46l2.89-.05s1.52-.09.8-1.33c-.06-.1-.42-.92-2.15-2.59-1.82-1.75-1.58-1.47.61-4.5 1.33-1.84 1.87-2.97 1.7-3.45-.16-.46-1.14-.34-1.14-.34l-3.26.02s-.24-.03-.42.08-.29.36-.29.36-.52 1.43-1.2 2.64c-1.46 2.57-2.04 2.7-2.27 2.54-.56-.37-.42-1.49-.42-2.28 0-2.49.36-3.52-.71-3.79A5.26 5.26 0 0010.43 1c-1.16-.01-2.15.01-2.7.29-.38.19-.66.61-.49.63.22.03.71.14.97.51.33.47.32 1.53.32 1.53s.19 2.92-.45 3.29c-.44.25-1.04-.26-2.34-2.59-.66-1.19-1.16-2.5-1.16-2.5s-.1-.25-.27-.38c-.21-.16-.5-.21-.5-.21l-3.1.02s-.47.01-.64.22c-.15.19-.01.58-.01.58s2.43 5.89 5.17 8.87c2.52 2.72 5.38 2.54 5.38 2.54z"/></symbol>
<symbol id="icon-vk2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.79 21.913h.947a.77.77 0 00.436-.201.795.795 0 00.13-.459s-.016-1.399.573-1.608c.588-.209 1.336 1.351 2.13 1.954.297.259.68.383 1.063.346l2.123-.032s1.116-.073.589-1.03a7.642 7.642 0 00-1.582-2.002c-1.337-1.35-1.153-1.134.451-3.473.978-1.424 1.367-2.3 1.245-2.67a.866.866 0 00-.832-.257l-2.4.016a.463.463 0 00-.305.056.702.702 0 00-.214.282 15.134 15.134 0 01-.886 2.042c-1.062 1.978-1.49 2.082-1.665 1.962-.405-.29-.306-1.15-.306-1.77 0-1.913.268-2.717-.511-2.926a4.053 4.053 0 00-1.123-.12 4.804 4.804 0 00-1.987.225c-.275.144-.48.466-.351.49.273.03.524.167.703.386.165.37.246.774.237 1.182 0 0 .145 2.26-.329 2.54-.32.194-.764-.2-1.719-1.993a17.581 17.581 0 01-.848-1.938.803.803 0 00-.198-.29.84.84 0 00-.367-.16l-2.276.016a.723.723 0 00-.466.169.581.581 0 00-.016.442s1.788 4.559 3.805 6.859c.99 1.217 2.427 1.931 3.95 1.962z"/></symbol>
<symbol id="icon-vk2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M28.274 34.074h1.25c.213-.024.413-.117.574-.265.117-.177.177-.39.172-.605 0 0-.02-1.845.755-2.12.776-.276 1.763 1.78 2.811 2.576.391.342.895.506 1.4.456l2.802-.042s1.47-.096.775-1.358a10.079 10.079 0 00-2.085-2.64c-1.763-1.782-1.522-1.495.594-4.582 1.29-1.877 1.804-3.033 1.642-3.52a1.143 1.143 0 00-1.098-.34l-3.163.021a.61.61 0 00-.403.075.925.925 0 00-.282.37 19.972 19.972 0 01-1.17 2.694c-1.4 2.61-1.964 2.747-2.196 2.588-.534-.382-.403-1.516-.403-2.333 0-2.524.353-3.584-.675-3.86a5.345 5.345 0 00-1.48-.16 6.336 6.336 0 00-2.62.298c-.363.19-.635.615-.464.646.36.039.691.221.927.51.218.487.325 1.02.312 1.558 0 0 .192 2.98-.433 3.352-.423.254-1.007-.265-2.267-2.63a23.184 23.184 0 01-1.118-2.556 1.06 1.06 0 00-.262-.382 1.109 1.109 0 00-.484-.212l-3.002.021a.953.953 0 00-.615.223.767.767 0 00-.02.583s2.358 6.013 5.018 9.046c1.305 1.606 3.2 2.548 5.209 2.588z"/></symbol>
<symbol id="icon-yandex" viewBox="0 0 5 11"><path d="M4.847 0H3.259C1.7 0 .376 1.169.376 3.438c0 1.36.64 2.364 1.783 2.86L.028 10.092c-.07.123 0 .22.111.22h.99c.083 0 .139-.028.166-.097L3.231 6.49h.697v3.726c0 .041.041.097.097.097h.864c.083 0 .111-.042.111-.11V.138C5 .04 4.944 0 4.847 0zm-.92 5.61h-.584c-.92 0-1.81-.66-1.81-2.31 0-1.719.835-2.42 1.684-2.42h.71v4.73z" fill-rule="nonzero"/></symbol>
<symbol id="icon-ynadex" viewBox="0 0 5 10"><use xlink:href="#def-ynadex-a" transform="translate(-468 -10321)"/></symbol>
<symbol id="icon-ytube" viewBox="0 0 27 20"><use xlink:href="#def-ytube-a" transform="translate(-1332 -335)"/></symbol>
</svg>
<div class="header-banner topBanner" data-type="header" style="display: block; position: sticky; top: 0; z-index: 999;">
<a data-source="225763" data-banner="226288" class="universal-notice js-universal-notice-notice universal-notice--webp universal-notice--bitrix universal-notice--active" href="https://skillbox.ru/sale/main/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_header_all_all_skillbox" target="_blank" style="--banner-bg: #5927E9;--banner-color: #fff;--button-font-color: #000000;--button-bg-color: #FFFFFF;--banner-img-left: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.png);--banner-img-left-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.webp);--banner-img-center: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-center-mobile: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-mobile-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-right: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.png);--banner-img-right-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.webp);">
<span class="universal-notice__wrapper">
<b class="universal-notice__title">
Скидка до 55% и 3 курса в подарок
</b>
<span class="universal-timer js-universal-notice-timer js-universal-notice-active">
<span class="universal-timer__days js-universal-notice-days">2 дня</span>
<span class="js-universal-notice-hours">13</span>
:<span class="js-universal-notice-minutes">30</span>
:<span class="js-universal-notice-seconds">09</span>
</span>
<span class="universal-notice__button">Выбрать курс</span>
</span>
</a><script>
document.addEventListener('DOMContentLoaded', () => {
// Установите конечную дату
const deadline = new Date();
deadline.setDate(5);
deadline.setHours(0, 0, 0);
// Найдите элементы DOM
var timer = document.querySelector('.universal-timer');
const elDays = timer.querySelector('.js-universal-notice-days');
const elHours = timer.querySelector('.js-universal-notice-hours');
const elMinutes = timer.querySelector('.js-universal-notice-minutes');
const elSeconds = timer.querySelector('.js-universal-notice-seconds');
// Функция обновления таймера
const updateTimer = () => {
const now = new Date();
let diff = Math.max(0, deadline - now);
if (diff === 0) {
let lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
let lastDay = lastDayOfMonth.getDate();
if (lastDay - now.getDate() < 4) {
deadline.setMonth(deadline.getMonth() + 1, 1);
} else {
deadline.setDate(deadline.getDate() + 4);
}
diff = Math.max(0, deadline - now);
}
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)).toString();
var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)).toString();
var seconds = Math.floor((diff % (1000 * 60)) / 1000).toString();
if (timer) {
let dayTitles = ['день', 'дня', 'дней'];
let daySuffix = dayTitles[(days % 100 > 4 && days % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][days % 10 < 5 ? days % 10 : 5]]
elDays.innerHTML = days + ' ' + daySuffix;
elHours.innerHTML = hours.padStart(2, '0');
elMinutes.innerHTML = minutes.padStart(2, '0');
elSeconds.innerHTML = seconds.padStart(2, '0');
}
};
updateTimer();
const timerId = setInterval(updateTimer, 1000);
});
</script>
<style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{position:sticky;z-index:5;top:0;box-sizing:border-box;text-decoration:none;display:none;justify-content:space-between;overflow:hidden;color:var(--banner-color);background-color:var(--banner-bg);font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:opacity .25s ease-in-out}.universal-notice--active{display:flex}.universal-notice--bitrix{z-index:1000}.universal-notice *,.universal-notice ::after,.universal-notice ::before{box-sizing:inherit}.universal-notice::after,.universal-notice::before{display:none;width:194px;height:56px;content:"";background-size:194px 56px;background-repeat:no-repeat}.universal-notice--no-webp::before{background-image:var(--banner-img-left)}.universal-notice--no-webp::after{background-image:var(--banner-img-right)}.universal-notice--webp::before{background-image:var(--banner-img-left-webp)}.universal-notice--webp::after{background-image:var(--banner-img-right-webp)}.universal-notice--new-design{position:static;margin:4px;border-radius:16px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:166px;height:48px;background-size:166px 48px}.universal-notice__wrapper{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:12px;padding:12px;width:100%}.universal-notice--new-design .universal-notice__wrapper::after{height:48px}.universal-notice__title{font-weight:500;font-size:15px;line-height:16px}.universal-notice--new-design .universal-notice__title{font-size:14px;line-height:15px}.universal-timer{display:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;font-size:24px;line-height:26px}.universal-notice--new-design .universal-timer{font-size:22px;line-height:24px}.universal-timer__days{margin-right:8px}.universal-notice__button{grid-column:2/3;padding:6px 16px;border-radius:6px;color:var(--button-font-color);background-color:var(--button-bg-color);font-weight:500;font-size:14px;line-height:20px}.universal-notice-sticky{position:fixed;z-index:5;top:0;left:0;width:100%;padding:11px 8px;color:var(--banner-color);background-color:var(--banner-bg);text-align:center;transition:transform .3s ease-in-out;will-change:transform;transform:translateY(-200%)}.universal-notice-sticky--show{transform:translateY(0)}@media (min-width:360px) and (max-width:0px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:360px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:768px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:768px) and (max-width:0px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:1024px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1024px) and (max-width:0px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1280px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1280px) and (max-width:0px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1400px) and (max-width:0px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}@media (min-width:1400px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}</style> </div>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
window.TopBanner = true;
});
$(document).ready(function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-show',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
});
$(document).on('click', '.header-banner', function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-click',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
var page = window.location;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 226288,
'page': page,
'pageID': pageId
});
});
</script>
<header class="header">
<div id="menu" class="header__wrapper container">
<div class="header__logo link-active">
<a href="/media/" class="header__media-main-link">
<img src="/local/templates/media/images/logo/skillbox-media.svg" alt="Skillbox"/>
</a>
<a href="/media/code/" class="header__media-category-link">
<span class="header__media-category js-category ">Код</span>
</a>
</div>
<a href="/media/about-media/" v-if="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link--about" target="_blank" style="display: none">
Про медиа
</a>
<button v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="toggle-menu header__toggle toggle-menu--course"
@click="openCourseMenu()"
:class="{ 'toggle-menu--active': isOpenCourseMenu }"
style="display: none">
Онлайн-курсы
<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"
:class="{
'animated-chevron--default': isOpenCourseMenu,
'animated-chevron--active animated-chevron--default': ! isOpenCourseMenu
}"
class="animated-chevron toggle-menu__arrow select-arrow select-arrow--small">
<line x1="6.48415" y1="5.92242" x2="11.4909" y2="10.9291" stroke="currentColor" stroke-width="1.78"
class=" animated-chevron__line animated-chevron__line1 animated-chevron__line1--default"></line>
<line x1="6.3701" y1="5.9224" x2="11.3768" y2="0.915678" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
<line x1="1.36337" y1="10.9291" x2="6.3701" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line animated-chevron__line2 animated-chevron__line2--default"></line>
<line x1="1.47743" y1="0.915681" x2="6.48415" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
</svg>
</button>
<a href="https://skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=button_main_skillbox&utm_term=mainskillbox" v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link-ml0 menu-nav__link--main" target="_blank" style="display: none">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<div v-if="isOpenCourseMenu && !isMobile" class="menu-block menu-block--desktop" @click="closeCourseMenu($event)" style="display: none">
<div class="menu-block__wrapper menu-block__wrapper--desktop">
<div class="menu-block__content vue-container">
<span class="menu-block__title">
Направления обучения
</span>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/?utm_source=media&utm_medium=button&utm_campaign=button_courses_all&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/?utm_source=media&utm_medium=button&utm_campaign=button_courses_code&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/?utm_source=media&utm_medium=button&utm_campaign=button_courses_design&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management?utm_source=media&utm_medium=button&utm_campaign=button_courses_management&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing?utm_source=media&utm_medium=button&utm_campaign=button_courses_marketing&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games?utm_source=media&utm_medium=button&utm_campaign=button_courses_games&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia?utm_source=media&utm_medium=button&utm_campaign=button_courses_multimedia&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Кино и Музыка
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology?utm_source=media&utm_medium=button&utm_campaign=button_courses_psychology&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/health?utm_source=media&utm_medium=button&utm_campaign=button_courses_health&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Здоровье
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/spo/?utm_source=media&utm_medium=button&utm_campaign=button_courses_spo&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Цифровой колледж
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/?utm_source=media&utm_medium=button&utm_campaign=button_courses_general-development&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/?utm_source=media&utm_medium=button&utm_campaign=button_courses_engineering&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/?utm_source=media&utm_medium=button&utm_campaign=button_courses_english&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/?utm_source=media&utm_medium=button&utm_campaign=button_courses_other&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
</div>
</div>
</div>
<div v-show="isOpenMenu" class="menu-block" @click="closeMenu($event)" style="display: none">
<div class="menu-block__wrapper">
<div class="menu-block__content vue-container">
<h2 class="menu-block__header">Редакции</h2>
<div class="tab-nav" data-tab-parent="" data-action="index">
<div class="tab-nav__item">
<a class="" data-tab-name="media_nav" data-section-id="0" data-code="All directions" href="/media/">
<img src="/local/templates/media/images/common/menu-icon-mobile-1.png" alt=""/>
Все
</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/history/">
<img src="/local/templates/media/images/common/menu-icon-mobile-19.png"
alt=""/>
Истории</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="8"
data-code="Design"
href="/media/design/">
<img src="/local/templates/media/images/common/menu-icon-mobile-2.png" alt=""/>
Дизайн</a>
</div>
<div class="tab-nav__item">
<a class="tab-active"
data-tab-name="media_nav"
data-section-id="10"
data-code="Code"
href="/media/code/">
<img src="/local/templates/media/images/common/menu-icon-mobile-3.png" alt=""/>
Код</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="18"
data-code="GameDev"
href="/media/gamedev/">
<img src="/local/templates/media/images/common/menu-icon-mobile-4.png" alt=""/>
Геймдев</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="21"
data-code="Business"
href="/media/business/">
<img src="/local/templates/media/images/common/menu-icon-mobile-9.png" alt=""/>
Бизнес</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="9"
data-code="Marketing"
href="/media/marketing/">
<img src="/local/templates/media/images/common/menu-icon-mobile-5.png" alt=""/>
Маркетинг</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="11"
data-code=""
href="/media/management/">
<img src="/local/templates/media/images/common/menu-icon-mobile-6.png" alt=""/>
Управление</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="29"
data-code=""
href="/media/cinemusic/">
<img src="/local/templates/media/images/common/menu-icon-mobile-22.png" alt=""/>
Кино</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="36"
data-code=""
href="/media/music/">
<img src="/local/templates/media/images/common/menu-icon-mobile-23.png" alt=""/>
Музыка</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="34"
data-code=""
href="/media/photo/">
<img src="/local/templates/media/images/common/menu-icon-mobile-20.png" alt=""/>
Проектная фотография</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="17"
data-code="Development"
href="/media/growth/">
<img src="/local/templates/media/images/common/menu-icon-mobile-7.png" alt=""/>
Развитие</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="33"
data-code=""
href="/media/health/">
<img src="/local/templates/media/images/common/menu-icon-mobile-16.png" alt=""/>
Здоровье</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="32"
data-code=""
href="/media/money/">
<img src="/local/templates/media/images/common/menu-icon-mobile-17.png" alt=""/>
Деньги</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="22"
data-code="Education"
href="/media/education/">
<img src="/local/templates/media/images/common/menu-icon-mobile-8.png" alt=""/>
Образование</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="31"
data-code=""
href="/media/edtech/">
<img src="/local/templates/media/images/common/menu-icon-mobile-11.png" alt=""/>
EdTech</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="30"
data-code=""
href="/media/corptrain/">
<img src="/local/templates/media/images/common/menu-icon-mobile-10.png" alt=""/>
Корп. обучение</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="35"
data-code=""
href="/media/skillbox-blog/">
<img src="/local/templates/media/images/common/menu-icon-mobile-21.png" alt=""/>
Блог Skillbox</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/media/glossary/">
<img src="/local/templates/media/images/common/menu-icon-mobile-18.png"
alt=""/>
Глоссарий</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/specials/">
<img src="/local/templates/media/images/common/menu-icon-mobile-13.png"
alt=""/>
Спецпроекты</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/course/career-guide-free/">
<img src="/local/templates/media/images/common/menu-icon-mobile-15.png"
alt=""/>
Профориентация</a>
</div>
</div>
<h2 class="menu-block__header">Онлайн-курсы</h2>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Мультимедиа
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
<a href="/media/about-media/" rel="nofollow" class="menu-nav__link">
Про медиа
</a>
<a href="https://skillbox.ru/" rel="nofollow" class="menu-nav__link">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
</div>
</div>
<button v-if="isMobile" class="menu-toggle"
@click="openMenu()"
:class="{ 'menu-toggle--opened': isOpenMenu }" style="opacity: 0">
<span v-if="isOpenMenu" class="menu-toggle__line"></span>
<svg v-if="!isOpenMenu" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 5.5H0V4H24V5.5ZM24 11.5H0V13H24V11.5ZM24 19H0V20.5H24V19Z" fill="black"/>
</svg>
</button>
</div>
<script>
BX.Vue.create({
el: '#menu',
data: {
isOpenMenu: false,
isOpenCourseMenu: false,
isMobile: false,
isSubOpen: false,
display: 'none'
},
computed: {
isMobile() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
return w < 1024;
}
},
methods: {
openMenu() {
this.isOpenMenu = !this.isOpenMenu;
document.getElementsByTagName('body')[0].classList.toggle('scroll-locked');
window.addEventListener('keyup', this.closeMenu);
},
closeMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeMenu);
}
},
openCourseMenu() {
this.isOpenCourseMenu = !this.isOpenCourseMenu;
if (this.isOpenCourseMenu) {
document.getElementsByTagName('body')[0].classList.add('scroll-locked');
window.addEventListener('keyup', this.closeCourseMenu);
} else {
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
closeCourseMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenCourseMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
openSub() {
this.isSubOpen = !this.isSubOpen;
},
isMobileFn() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
this.isMobile = (w < 1024);
}
},
created() {
window.addEventListener("resize", this.isMobileFn);
document.querySelector('.menu-block').style.display = '';
document.querySelector('.menu-toggle').style.opacity = '1';
document.querySelector('.menu-nav__link').style.display = '';
this.display = 'block';
this.isMobileFn();
},
destroyed() {
window.removeEventListener("resize", this.isMobileFn);
}
});
</script>
</header>
<main class="content">
<div class="page style-update">
<div class="page-wrap">
<style>
.article-inner .rr-widget__title {
padding-top: 0 !important;
}
.article-inner div[data-retailrocket-markup-block] {
margin-top: -32px;
display: none;
}
.article-inner {
font-family: 'Graphik';
}
</style>
<div class="under_header_banner" data-type="under_header"><!-- Yandex.RTB R-A-13443663-10 -->
<div id="yandex_rtb_R-A-13443663-10"></div>
<script>
window.yaContextCb.push(() => {
Ya.Context.AdvManager.render({
"blockId": "R-A-13443663-10",
"renderTo": "yandex_rtb_R-A-13443663-10"
})
})
</script>
</div> <div data-area="article" data-title="Свойство opacity в CSS: как задать прозрачность элементам на сайте / Skillbox Media" class=" noFullClass">
<div class="article-inner">
<section class="top-section-detail-page ">
<div class="container">
<div class="article-preview-info">
<div class="article-preview-info__tags article-preview-info__tags--complex ">
<div class="tag article-preview-info__tag">
<a href="/media/code/"
class="tag-item programming">
Код </a>
<a href="/media/guide/"
class="tag-item">
Справочник по фронтенду
</a>
</div>
</div>
<a class="info-hashtag article-preview-info__hashtag" href="/media/topic/articles/">
#статьи </a>
<ul class="info article-preview__info-box">
<li class="info-item"> <time class="info-text" datatime="#">11 ноя 2025</time></li>
<li class="info-item hidden">
<span class="info-icon"><img src="/local/templates/media/images/icons/like.svg" alt=""></span>
<span class="info__text js-article-like-value">0</span>
</li>
</ul>
</div>
<div class="row">
<div class="top-section-detail-page__title-block col-xl-9 col-lg-10">
<div class="article-preview">
<h1 class="article-preview__title">Opacity в CSS: как управлять прозрачностью элементов на сайте</h1>
<p class="article-preview__description">Учимся создавать плавные переходы, наложения и мягкие анимации.</p>
</div>
</div>
</div>
</div>
</section>
<section data-article-text
data-articleId="225763"
data-courseId="3357"
>
<div class="container">
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div> <!-- //share -->
</noindex>
<div class="row">
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-poster">
<picture >
<img src="https://248006.selcdn.ru/main/iblock/2df/2dfd8743a6d4ad53ea9e0c4cda55cfb2/e44670e060e2d8a3b2e3e263b4b0177a.jpg" itemprop='image' class='hidden-xs' />
</picture> <picture >
<img src="https://248006.selcdn.ru/main/iblock/2df/2dfd8743a6d4ad53ea9e0c4cda55cfb2/e44670e060e2d8a3b2e3e263b4b0177a.jpg" itemprop='image' class='visible-xs' />
</picture> </div>
<noindex>
<p class="article-poster-text" data-nosnippet>
Иллюстрация: Polina Vari для Skillbox Media </p>
</noindex>
</div>
<div class="col-xl-3 col-lg-4 col-author">
<div class="article-author">
<div class="article-author__image">
<a href="/media/authors/code-skillbox-media/">
<img src="https://248006.selcdn.ru/main/iblock/168/168916384f65586cc4e6b7cfbbb69613/0dd44147b96863097b5219fdd6fd0e08.png" alt="Редакция «Код» Skillbox Media">
</a>
</div>
<div class="article-author__info">
<div class="article-author__name">
Редакция «Код» Skillbox Media </div>
<div class="article-author__description">
Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках. </div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row flex-row-rev">
<div class="col-xl-3 col-lg-4 col-author">
<div class="js-article-banner" data-article-banner-mobile data-type="side_mounted" data-article-banner-sticky-start>
<!--AdFox START-->
<!--yandex_skillbox.media-->
<!--Площадка: Skillbox / Сквозной для застройщика Легенда / Боковой баннер сквозной для застройщика Легенда-->
<!--Категория: <не задана>-->
<!--Тип баннера: Media banner-->
<div id="adfox_176131540100027244"></div>
<script>
window.yaContextCb.push(()=>{
Ya.adfoxCode.create({
ownerId: 11649869,
containerId: 'adfox_176131540100027244',
params: {
p1: 'dkugb',
p2: 'p'
}
})
})
</script> </div>
<div class="js-article-banner" data-article-banner-mobile data-type="vertical" data-article-banner-sticky-end></div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="container container--setka">
<div class="js-article-banner" data-type="top"></div>
<div class="article-detail-text__setka" data-detail-text>
<div class="stk-post stk-layout_12col_18068 stk-theme_26309" data-stk="{"images":[{"id":129973,"alt":"","caption":""},{"id":129981,"alt":"","caption":""},{"id":129972,"alt":"","caption":""},{"id":129977,"alt":"","caption":""},{"id":129969,"alt":"","caption":""},{"id":129971,"alt":"","caption":""},{"id":129979,"alt":"","caption":""},{"id":129968,"alt":"","caption":""},{"id":129980,"alt":"","caption":""},{"id":129974,"alt":"","caption":""},{"id":129970,"alt":"","caption":""},{"id":129978,"alt":"","caption":""},{"id":129975,"alt":"","caption":""},{"id":129976,"alt":"","caption":""},{"id":129982,"alt":"","caption":""}]}" data-ui-id="post" data-ce-tag="post" data-reset-type="class" data-layout-type="auto" data-editor-version="3.2.8-rc1"><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset" data-ce-tag="paragraph">Свойство CSS <u class="stk-reset">opacity</u> управляет прозрачностью элементов на веб-странице: оно позволяет сделать элемент невидимым или частично прозрачным, чтобы сквозь него просвечивал фон. С его помощью вы можете создавать наложения, анимации появления и исчезновения, а также различные визуальные акценты в интерфейсе.</p><p class="stk-reset" data-ce-tag="paragraph">Давайте разберёмся, как работает свойство <u class="stk-reset">opacity</u>, какие значения оно принимает и в каких случаях его лучше всего применять на практике.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Содержание</strong></p><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-1">Что такое opacity и зачем оно нужно</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-2">Как пишется свойство</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-3">Как работает прозрачность элементов</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-4">Особенности поведения opacity</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-5">Влияние на дочерние элементы</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-6" data-gtm-vis-has-fired10171822_255="1">Альтернативы opacity: rgba() и hsla()</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-7">Opacity в анимациях и переходах</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-8">Сравнение с visibility и display</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-9">Доступность и взаимодействие с элементами</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-10">Типичные ошибки при работе с прозрачностью</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-11">Лайфхак: визуализация прозрачных элементов в процессе разработки</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-12">Практика: создаём навигационное меню с плавным появлением элементов</a></li></ul><hr class="stk-theme_26309__separator_divider-1498128612642 stk-reset"/></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-1"><strong class="stk-reset">Что такое opacity и зачем оно нужно</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Свойство CSS <u class="stk-reset">opacity</u> (от англ. opacity — «непрозрачность») управляет степенью прозрачности элемента и всего его содержимого. Когда элемент становится полупрозрачным, сквозь него просвечивает фон страницы или другие элементы, которые находятся позади него.</p><p class="stk-reset" data-ce-tag="paragraph">Этот эффект широко применяется в современных интерфейсах. Он помогает создавать реакции на наведение курсора — например, затемнение или подсветку элементов. Также он позволяет реализовать плавные появления и исчезновения через переходы и анимации, добавлять полупрозрачные оверлеи и модальные окна. Кроме того, <u class="stk-reset">opacity</u> позволяет временно скрыть элемент, не ломая всю вёрстку.</p><p class="stk-reset" data-ce-tag="paragraph">В отличие от <u class="stk-reset">display: none</u>, свойство <u class="stk-reset">opacity</u> не убирает элемент из потока и никак не влияет на расположение соседних блоков. Это делает его идеальным для интерфейсов, где нужны плавные изменения состояния без перестройки макета. Например, при наведении на карточку товара она плавно становится полупрозрачной, а остальные элементы страницы остаются на месте — никаких «прыжков».</p><div class="stk-grid__layout_reverse stk-grid valign-middle" data-stk-css="stkBf30n" data-ce-tag="grid"><div data-col-width="4" class="stk-grid-col stk-grid-col_last valign-middle" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="372" src="/upload/setka_images/15321310112025_116fabfed9db662d1ca4922820b351a40369b79d.png" height="200" data-image-id="129972" data-image-name="rm1.png" class="stk-image stk-reset" loading="lazy"/></div></figure></div><div data-col-width="8" class="stk-grid-col valign-middle" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__style_font_style-1629726727970" data-ce-tag="paragraph">Читайте также:</p><p class="stk-theme_26309__mb_15 stk-reset stk-theme_26309__style_font_style-1629786048064 stk-theme_26309__style_font_style-1629290372003 stk-theme_26309__color_26309_custom_color_1 article_incut" data-ce-tag="paragraph"><a href="https://skillbox.ru/media/code/chto_takoe_css/" target="_blank" class="stk-reset">Учимся верстать: что такое CSS</a></p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-2"><strong class="stk-reset">Как пишется свойство</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Свойство <u class="stk-reset">opacity</u> принимает значения от 0 до 1. Это коэффициент непрозрачности элемента: 0 — полная прозрачность (элемент невидим), 1 — полная непрозрачность (элемент полностью видим). Промежуточные значения создают разные степени полупрозрачности. Значение по умолчанию равно 1 — элемент полностью непрозрачен.</p><p class="stk-reset" data-ce-tag="paragraph">Дробные значения можно записывать с нулём впереди или без него. Например, <u class="stk-reset">opacity: 0.5</u> и <u class="stk-reset">opacity: .5</u> работают одинаково. Помимо числовых значений, <u class="stk-reset">opacity</u> поддерживает процентную запись: 0% равно 0, а 100% соответствует 1. Однако, чтобы не путаться, советуем выбирать один вариант записи и использовать его во всём проекте.</p><p class="stk-reset" data-ce-tag="paragraph">Кроме того, свойство <u class="stk-reset">opacity</u> поддерживает глобальные CSS-значения: <u class="stk-reset">inherit</u> — наследует значение прозрачности от родительского элемента; <u class="stk-reset">initial</u> — возвращает значение по умолчанию, то есть 1 (полная непрозрачность, как если бы свойство не было задано); <u class="stk-reset">unset</u> — сбрасывает свойство к наследуемому значению от родителя, если оно установлено, или к начальному значению 1, если наследования нет.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Полностью прозрачный */</span>
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.3</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* 30% видимости */</span>
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: .<span class="hljs-number" style="color: #ff73fd;">5</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* 50% видимости */</span>
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Непрозрачный */</span>
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">50%</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* То же, что opacity: 0.5 */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-3"><strong class="stk-reset">Как работает прозрачность элементов</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Браузер рисует веб-страницу не целиком, а по частям. Каждая такая часть называется композитным слоем — это отдельная область памяти, где браузер хранит готовое изображение одного или нескольких элементов. Слои нужны, чтобы при прокрутке, анимации или перемещении элемента не перерисовывать всю страницу — достаточно обновить только нужный слой. Так всё работает быстрее и плавнее.</p><p class="stk-reset" data-ce-tag="paragraph">Когда вы задаёте элементу свойство <u class="stk-reset">opacity</u> со значением меньше 1, браузер переносит его на отдельный композитный слой. Сначала браузер полностью отрисовывает элемент, затем применяет к нему прозрачность и после этого накладывает готовый слой на то, что находится ниже на странице.</p><p class="stk-reset" data-ce-tag="paragraph">Создадим синий блок с текстом «Фоновый элемент» и поверх него разместим красный блок с <u class="stk-reset">opacity: 0.7</u>, слегка сдвинутый в сторону. Красный блок полупрозрачен — сквозь него виден синий фон и текст. В зоне перекрытия цвета смешиваются, образуя промежуточный оттенок.</p><p class="stk-reset" data-ce-tag="paragraph">Вот как это выглядит в браузере.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="1540" src="/upload/setka_images/15321610112025_accf102caaa970ce65d217b9ae9a8e9a57caa67c.jpg" height="1155" data-image-id="129982" data-image-name="1.jpg" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media<br></em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы попробовать, вставьте этот фрагмент в HTML-разметку:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"container"</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"background"</span>>Фоновый элемент</<span class="hljs-keyword" style="color: #96cbfe;">div</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"overlay"</span>>Полупрозрачное наложение</<span class="hljs-keyword" style="color: #96cbfe;">div</span>>
</<span class="hljs-keyword" style="color: #96cbfe;">div</span>></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Затем добавьте стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.container</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: relative;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f0f0f0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">width</span>: <span class="hljs-number" style="color: #ff73fd;">300px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">height</span>: <span class="hljs-number" style="color: #ff73fd;">300px</span>;
}
<span class="hljs-selector-class">.background</span> {
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#ffffff</span>;
<span class="hljs-attribute" style="color: #ffffb6;">height</span>: <span class="hljs-number" style="color: #ff73fd;">100%</span>;
<span class="hljs-attribute" style="color: #ffffb6;">width</span>: <span class="hljs-number" style="color: #ff73fd;">100%</span>;
}
<span class="hljs-selector-class">.overlay</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">top</span>: <span class="hljs-number" style="color: #ff73fd;">30px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">left</span>: <span class="hljs-number" style="color: #ff73fd;">30px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">right</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">bottom</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">rgba</span>(231, 76, 60, 0.7);
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: flex;
<span class="hljs-attribute" style="color: #ffffb6;">align-items</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">justify-content</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#ffffff</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Когда у элемента значение <u class="stk-reset">opacity</u> становится меньше 1, браузер переносит его на отдельный композитный слой, и содержимое элемента не может выйти за границы слоя по оси Z. Даже если дочерний элемент имеет <u class="stk-reset"><span class="stk-reset" data-stk-footnote-link="fn8ydvh">position: absolute</span></u> и большой <u class="stk-reset">z-index</u>, он останется внутри полупрозрачного родителя и не сможет перекрыть другие элементы.</p><p class="stk-reset" data-ce-tag="paragraph">Например, если внутри полупрозрачного красного блока сделать всплывающее меню, оно не сможет перекрыть элементы, которые находятся вне красного блока: оно будет видно только внутри него.</p><p class="stk-reset" data-ce-tag="paragraph">Браузер создаёт композитные слои не только для прозрачности. Он использует их также для элементов с <u class="stk-reset">position: fixed</u>, трансформациями (<u class="stk-reset">transform</u>), анимациями и многими другими свойствами. Это позволяет браузеру обновлять только изменённые части страницы, экономить ресурсы и обеспечивать плавность анимаций и переходов.</p><div class="stk-grid__layout_reverse stk-grid valign-middle" data-stk-css="stkx8RSw" data-ce-tag="grid"><div data-col-width="4" class="stk-grid-col stk-grid-col_last valign-middle" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="372" src="/upload/setka_images/15321510112025_46dcb59ca8a4e3d30a63e20d6c27651d3a86b8cd.png" height="200" data-image-id="129981" data-image-name="rm2.png" class="stk-image stk-reset" loading="lazy"/></div></figure></div><div data-col-width="8" class="stk-grid-col valign-middle" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__style_font_style-1629726727970" data-ce-tag="paragraph">Читайте также:</p><p class="stk-theme_26309__mb_15 stk-reset stk-theme_26309__style_font_style-1629786048064 stk-theme_26309__style_font_style-1629290372003 stk-theme_26309__color_26309_custom_color_1 article_incut" data-ce-tag="paragraph"><a href="https://skillbox.ru/media/code/transformacii-v-css-kak-rabotaet-svoystvo-transform" target="_blank" class="stk-reset">Трансформации в CSS: как работает свойство transform</a></p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-4"><strong class="stk-reset">Особенности поведения opacity</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Браузер обрабатывает <u class="stk-reset">opacity</u> особым образом: даже если элемент полностью прозрачен (<u class="stk-reset">opacity: 0</u>), он остаётся частью страницы и продолжает реагировать на действия пользователя. По невидимой кнопке можно кликнуть, перевести на неё фокус или прокрутить её содержимое. Это отличает <u class="stk-reset">opacity</u> от <u class="stk-reset">display: none</u> — последнее свойство удаляет элемент из потока, и он перестаёт принимать события.</p><p class="stk-reset" data-ce-tag="paragraph">Возьмём кнопку с <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">opacity: 0</u>, но с отступами и курсором <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">pointer</u>. Она не видна, но занимает место. При наведении курсора срабатывает <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">:hover</u>, и прозрачность меняется на <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">0.5</u> — кнопка проявляется. Это доказывает, что браузер продолжает отслеживать положение курсора и обрабатывать события, даже если элемент визуально отсутствует.</p><p class="stk-reset" data-ce-tag="paragraph">Посмотрите, как это работает.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321410112025_7e362904b7d857173ea1dbafb405ab1977cbbb2a.gif" height="433" data-image-id="129976" data-image-name="2.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Фрагмент HTML-разметки:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"invisible-button"</span>></span>Невидимая кнопка<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span> <span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Попробуйте кликнуть в области выше<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">CSS-стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.invisible-button</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
}
<span class="hljs-selector-class">.invisible-button</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.5</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Добавьте кнопке дополнительный класс:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"invisible-button non-interactive"</span>></span>Невидимая кнопка<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Попробуйте кликнуть в области выше<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Теперь в стилях добавим дополнительное свойство и отключим любое взаимодействие с прозрачным элементом — чтобы при наведении курсора невидимая кнопка никак не отреагировала на ваши действия.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.invisible-button</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
}
<span class="hljs-selector-class">.invisible-button</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.5</span>;
}
<span class="hljs-selector-class">.non-interactive</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">pointer-events</span>: none;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Ещё одна особенность <u class="stk-reset">opacity</u> — возможность плавной анимации через <u class="stk-reset">transition</u>. Это удобно для эффектов появления и исчезновения элементов. Достаточно задать начальное значение <u class="stk-reset">opacity: 0</u>, а при наведении или другом событии изменить его на <u class="stk-reset">opacity: 1</u>. Браузер рассчитает промежуточные значения и создаст плавный переход.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321410112025_b1f5fb33da8f50f319a53de56ac6374150b960ea.gif" height="433" data-image-id="129975" data-image-name="3.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы попробовать, вставьте этот фрагмент HTML-разметки.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"fade-element"</span>></span>Невидимая кнопка<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Попробуйте кликнуть в области выше<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Затем добавьте CSS-стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.fade-element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease-in-out;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
}
<span class="hljs-selector-class">.fade-element</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Элементы с <u class="stk-reset">opacity</u> остаются доступными для программ экранного доступа (скринридеров), голосового управления и навигации с клавиатуры. Пользователи с нарушениями зрения смогут обнаружить элемент и взаимодействовать с ним, даже если он визуально невидим. То есть скринридер прочитает текст кнопки, даже если она прозрачна.</p><p class="stk-reset" data-ce-tag="paragraph">Чтобы полностью скрыть элемент от программ экранного доступа, используйте атрибут <u class="stk-reset">aria-hidden="true»</u>. Скринридер проигнорирует такой элемент, и пользователь не узнает о его существовании.</p><div class="stk-grid__layout_reverse stk-grid valign-middle" data-stk-css="stkw_HMI" data-ce-tag="grid"><div data-col-width="4" class="stk-grid-col stk-grid-col_last valign-middle" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="372" src="/upload/setka_images/15321410112025_5fbb87e295c9b9f9aabf8f06ece94f32fd15c2bd.png" height="200" data-image-id="129973" data-image-name="rm3.png" class="stk-image stk-reset" loading="lazy"/></div></figure></div><div data-col-width="8" class="stk-grid-col valign-middle" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__style_font_style-1629726727970" data-ce-tag="paragraph">Читайте также:</p><p class="stk-theme_26309__mb_15 stk-reset stk-theme_26309__style_font_style-1629786048064 stk-theme_26309__style_font_style-1629290372003 stk-theme_26309__color_26309_custom_color_1 article_incut" data-ce-tag="paragraph"><a href="https://skillbox.ru/media/code/obektnaya-model-dokumenta-dom-chto-eto-i-kak-ustroena/" target="_blank" class="stk-reset">Объектная модель документа (DOM): что это и как она устроена</a></p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-5"><strong class="stk-reset">Влияние на дочерние элементы</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Когда вы задаёте <u class="stk-reset">opacity</u> родительскому элементу, прозрачность применяется ко всем его потомкам. Браузер отрисовывает контейнер со всем содержимым — заголовками, текстом, кнопками и другими вложенными элементами, а затем применяет эффект прозрачности к получившейся картинке целиком. Поэтому увеличить непрозрачность отдельного дочернего элемента невозможно — даже если задать ему <u class="stk-reset">opacity: 1</u>, его видимость останется такой же, как у родителя.</p><p class="stk-reset" data-ce-tag="paragraph">Например, если контейнеру задать <u class="stk-reset">opacity: 0.3</u>, то весь его контент станет прозрачным на 70%. В этом <u class="stk-reset">opacity</u> отличается от большинства CSS-свойств: оно не переопределяется на уровне дочерних элементов.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="1540" src="/upload/setka_images/15321410112025_c7c2d6650fe8dd3125b1541cb39af56649bd56fa.jpg" height="866" data-image-id="129978" data-image-name="4.jpg" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Фрагмент HTML-разметки:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"parent"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">h2</span>></span>Заголовок<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">h2</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Абзац текста<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span>></span>Кнопка<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">CSS-стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.parent</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.3</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы сохранить полную непрозрачность содержимого при полупрозрачном фоне, можно вынести содержимое за пределы прозрачного контейнера или использовать псевдоэлемент <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">:before</u>.</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Попробуем первый способ.</strong> Для этого создадим общего родителя, внутри которого разместим два элемента: один — абсолютно позиционированный блок для полупрозрачного фона, второй — блок с <u class="stk-reset">position: relative</u> и более высоким <u class="stk-reset">z-index</u> для контента. Фон станет полупрозрачным, а текст и элементы останутся полностью видимыми.</p><p class="stk-reset" data-ce-tag="paragraph">Обновите HTML-разметку:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"container"</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"background"</span>></<span class="hljs-keyword" style="color: #96cbfe;">div</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"content"</span>>
<h2>Этот заголовок останется непрозрачным</h2>
</<span class="hljs-keyword" style="color: #96cbfe;">div</span>>
</<span class="hljs-keyword" style="color: #96cbfe;">div</span>></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Затем пропишите следующие стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.container</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: relative;
}
<span class="hljs-selector-class">.background</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">top</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">left</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">right</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">bottom</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.2</span>;
}
<span class="hljs-selector-class">.content</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: relative;
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Вы увидите непрозрачный заголовок на почти прозрачном фоне.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="1540" src="/upload/setka_images/15321310112025_0ed1686442ac630326a48ddcef43684fa02b904b.jpg" height="866" data-image-id="129970" data-image-name="5.jpg" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">В CSS-стилях вы можете попробовать разные значения <u class="stk-reset">opacity</u>, чтобы посмотреть, как меняется прозрачность фона<br><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Теперь попробуем второй способ</strong> — с псевдоэлементом <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">:before</u>. Псевдоэлемент позиционируется абсолютно и растягивается на всю площадь родителя. Ему задаются нужный цвет и <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">opacity</u>, после чего он отправляется назад с помощью <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">z-index: -1</u>. Содержимое элемента остаётся на переднем плане и сохраняет полную непрозрачность.</p><p class="stk-reset" data-ce-tag="paragraph">Замените предыдущий HTML-фрагмент этим кодом:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><div <span class="hljs-class"><span class="hljs-keyword" style="color: #96cbfe;">class</span></span>=<span class="hljs-string" style="color: #a8ff60;">"element"</span>>
<span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">h2</span>></span>Этот заголовок останется непрозрачным<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">h2</span>></span></span>
<<span class="hljs-regexp" style="color: #e9c062;">/div></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">После этого обновите стили и посмотрите на результат в браузере:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: relative;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
}
<span class="hljs-selector-class">.element</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">::before</span> {
<span class="hljs-attribute" style="color: #ffffb6;">content</span>: <span class="hljs-string" style="color: #a8ff60;">''</span>;
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">top</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">left</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">right</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">bottom</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.2</span>;
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: -<span class="hljs-number" style="color: #ff73fd;">1</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-6"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Альтернативы opacity: rgba() и hsla()</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Если нужно сделать прозрачным только фон, текст или границу — но не весь элемент целиком, — используйте цветовые функции <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">rgba()</u> и <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">hsla()</u>. В отличие от opacity, они применяют прозрачность к конкретному свойству (например, <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">background</u> или <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">color</u>), не влияя на дочерние элементы и не создавая отдельный композитный слой.</p><p class="stk-reset" data-ce-tag="paragraph">Функция <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">rgba()</u> задаёт цвет через красный (red), зелёный (green) и синий (blue) каналы — каждый принимает значения от 0 до 255. Четвёртый параметр (альфа-канал) управляет прозрачностью и принимает значения от 0 (прозрачный) до 1 (непрозрачный).</p><p class="stk-reset" data-ce-tag="paragraph">Например, <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">rgba(52, 152, 219, 0.5)</u> создаст синий цвет с прозрачностью 50%. С <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">rgba()</u> можно делать полупрозрачными фон, текст или границу независимо друг от друга, не трогая остальные свойства элемента.</p><p class="stk-reset" data-ce-tag="paragraph">Вставьте в редактор следующий HTML-фрагмент:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><<span class="hljs-keyword" style="color: #96cbfe;">div</span> <span class="hljs-built_in">class</span>=<span class="hljs-string" style="color: #a8ff60;">"element"</span>>Пример текста</<span class="hljs-keyword" style="color: #96cbfe;">div</span>></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">После этого пропишите стили и откройте страницу в браузере:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-tag" style="color: #96cbfe;">body</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#333</span>;
<span class="hljs-comment" style="color: #7c7c7c;">/* Тёмный фон страницы */</span>
}
<span class="hljs-selector-class">.element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">rgba</span>(52, 152, 219, 0.7);
<span class="hljs-comment" style="color: #7c7c7c;">/* Полупрозрачный синий фон */</span>
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-built_in">rgba</span>(0, 0, 0, 0.8);
<span class="hljs-comment" style="color: #7c7c7c;">/* Полупрозрачный чёрный текст */</span>
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: <span class="hljs-number" style="color: #ff73fd;">2px</span> solid <span class="hljs-built_in">rgba</span>(255, 255, 255, 0.5);
<span class="hljs-comment" style="color: #7c7c7c;">/* Полупрозрачная белая рамка */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Функция <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">hsla()</u> работает аналогично, но использует модель HSL: оттенок задаётся в градусах (0–360), насыщенность и яркость — в процентах (0–100%), а альфа-канал отвечает за прозрачность.</p><p class="stk-reset" data-ce-tag="paragraph">Чтобы убедиться, замените в стилях значение для класса <u class="stk-reset">.element</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">hsla</span>(210, 70%, 53%, 0.7);
<span class="hljs-comment" style="color: #7c7c7c;">/* Полупрозрачный синий фон */</span>
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-built_in">hsla</span>(0, 0%, 0%, 0.8);
<span class="hljs-comment" style="color: #7c7c7c;">/* Полупрозрачный чёрный текст */</span>
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: <span class="hljs-number" style="color: #ff73fd;">2px</span> solid <span class="hljs-built_in">hsla</span>(0, 0%, 100%, 0.5);
<span class="hljs-comment" style="color: #7c7c7c;">/* Полупрозрачная белая рамка */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Главное отличие от <u class="stk-reset">opacity</u> — точечный контроль прозрачности. С <u class="stk-reset">rgba()</u> и <u class="stk-reset">hsla()</u> вы можете сделать фон полупрозрачным, а текст, кнопки и другие элементы оставить видимыми: они не наследуют прозрачность родителя. Если задать карточке полупрозрачный белый фон (<u class="stk-reset">rgba(255, 255, 255, 0.3)</u>), добавить размытие через <u class="stk-reset">backdrop-filter: blur (10px)</u> и лёгкую тень, получится эффект матового стекла. При этом весь внутренний контент останется чётким и читаемым.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="1540" src="/upload/setka_images/15321410112025_b30ff17d14b759c017197570526ff51b33cc83c5.jpg" height="866" data-image-id="129974" data-image-name="6.jpg" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы создать такую карточку, добавьте разметку:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"card"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">h3</span>></span>Заголовок карточки<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">h3</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Текст остаётся читаемым<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string" style="color: #a8ff60;">"button"</span>></span>Кнопка действия<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Затем добавьте стили и откройте страницу в браузере:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-tag" style="color: #96cbfe;">body</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#008001</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">40px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-family</span>: Arial, sans-serif;
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: flex;
<span class="hljs-attribute" style="color: #ffffb6;">justify-content</span>: center;
}
<span class="hljs-selector-class">.card</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#c0dabc</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">30px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">15px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">box-shadow</span>: <span class="hljs-number" style="color: #ff73fd;">0</span> <span class="hljs-number" style="color: #ff73fd;">4px</span> <span class="hljs-number" style="color: #ff73fd;">8px</span> <span class="hljs-built_in">rgba</span>(0, 0, 0, 0.1);
<span class="hljs-attribute" style="color: #ffffb6;">width</span>: <span class="hljs-number" style="color: #ff73fd;">100%</span>;
<span class="hljs-attribute" style="color: #ffffb6;">max-width</span>: <span class="hljs-number" style="color: #ff73fd;">600px</span>;
}
<span class="hljs-selector-tag" style="color: #96cbfe;">h3</span> {
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#333</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin-top</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin-bottom</span>: <span class="hljs-number" style="color: #ff73fd;">15px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">18px</span>;
}
<span class="hljs-selector-tag" style="color: #96cbfe;">p</span> {
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#333</span>;
<span class="hljs-attribute" style="color: #ffffb6;">line-height</span>: <span class="hljs-number" style="color: #ff73fd;">1.6</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin-bottom</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">14px</span>;
}
<span class="hljs-selector-tag" style="color: #96cbfe;">button</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#5a8c5a</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">10px</span> <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">8px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">14px</span>;
}
<span class="hljs-selector-tag" style="color: #96cbfe;">button</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#4a7a4a</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-7"><strong class="stk-reset">Opacity в анимациях и переходах</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Браузер обрабатывает свойство <u class="stk-reset">opacity</u> на уровне графического процессора, что экономит ресурсы системы. Благодаря этому оно отлично подходит для анимаций: переходы получаются плавными даже на слабых устройствах. Именно поэтому эффекты появления и исчезновения на основе прозрачности так популярны в интерфейсах.</p><p class="stk-reset" data-ce-tag="paragraph">Самый простой эффект плавного появления создаётся через <u class="stk-reset">transition</u>. Элемент изначально имеет <u class="stk-reset">opacity: 0.3</u>, а при наведении курсора или добавлении класса значение меняется на <u class="stk-reset">opacity: 1</u>. Браузер автоматически рассчитывает промежуточные значения и создаёт плавный переход.</p><p class="stk-reset" data-ce-tag="paragraph">HTML-разметка:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><div <span class="hljs-class"><span class="hljs-keyword" style="color: #96cbfe;">class</span></span>=<span class="hljs-string" style="color: #a8ff60;">"pulsing-element fade-element"</span>>
?
<span class="xml"><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">CSS-стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-tag" style="color: #96cbfe;">body</span> {
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: flex;
<span class="hljs-attribute" style="color: #ffffb6;">justify-content</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">align-items</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">min-height</span>: <span class="hljs-number" style="color: #ff73fd;">100vh</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f5f5f5</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-family</span>: Arial, sans-serif;
}
<span class="hljs-selector-class">.fade-element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.3</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease-in;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">30px</span> <span class="hljs-number" style="color: #ff73fd;">50px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">18px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">8px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
}
<span class="hljs-selector-class">.fade-element</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Для более сложных анимаций используют CSS-правило <u class="stk-reset">@keyframes</u>. Например, эффект пульсации циклически меняет прозрачность от <u class="stk-reset">1</u> до <u class="stk-reset">0.5</u> и обратно. Чтобы применить анимацию к элементу, используйте свойство <u class="stk-reset">animation</u> с указанием длительности и числа повторений.</p><p class="stk-reset" data-ce-tag="paragraph">Попробуйте заменить все предыдущие стили на следующий код:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-tag" style="color: #96cbfe;">body</span> {
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: flex;
<span class="hljs-attribute" style="color: #ffffb6;">justify-content</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">align-items</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">min-height</span>: <span class="hljs-number" style="color: #ff73fd;">100vh</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f0f0f0</span>;
}
<span class="hljs-selector-class">.pulsing-element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: flex;
<span class="hljs-attribute" style="color: #ffffb6;">align-items</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">justify-content</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">width</span>: <span class="hljs-number" style="color: #ff73fd;">80px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">height</span>: <span class="hljs-number" style="color: #ff73fd;">80px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">50%</span>;
<span class="hljs-attribute" style="color: #ffffb6;">animation</span>: pulse <span class="hljs-number" style="color: #ff73fd;">2s</span> infinite;
}
@<span class="hljs-keyword" style="color: #96cbfe;">keyframes</span> pulse {
0% {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
}
50% {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.5</span>;
}
100% {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
}
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Когда вы запустите код в браузере, то увидите такую анимацию.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321510112025_3cd9ef3440d95f4bb61a3e415a1c8e825d3ce05e.gif" height="577" data-image-id="129980" data-image-name="7.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Свойство <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">opacity</u> часто комбинируют с другими свойствами. Например, если одновременно изменить прозрачность и масштаб через <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">transform: scale()</u>, то у вас получится эффект открытия модального окна — элемент плавно появится из центра и станет полностью видимым.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321310112025_67577da4d8977ebae7bbc26fe09eaca85147b425.gif" height="433" data-image-id="129968" data-image-name="8.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Из-за технических ограничений GIF-формата модальное окно в анимации отображается не совсем плавно — с задержками и рывками. Если вы запустите этот же код в браузере, анимация будет выглядеть значительно лучше и плавнее<br><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы повторить, вставьте этот код в пустой HTML-файл:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-meta" style="color: #7c7c7c;"><!DOCTYPE html></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string" style="color: #a8ff60;">"ru"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">head</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string" style="color: #a8ff60;">"UTF-8"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string" style="color: #a8ff60;">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string" style="color: #a8ff60;">"width=device-width, initial-scale=1.0"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">title</span>></span>Модальное окно с анимацией<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">title</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">style</span>></span><span class="css">
<span class="hljs-selector-tag" style="color: #96cbfe;">body</span> {
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: flex;
<span class="hljs-attribute" style="color: #ffffb6;">justify-content</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">align-items</span>: center;
<span class="hljs-attribute" style="color: #ffffb6;">min-height</span>: <span class="hljs-number" style="color: #ff73fd;">100vh</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f0f0f0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-family</span>: Arial, sans-serif;
}
<span class="hljs-selector-class">.modal</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">scale</span>(0.8);
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease-out, transform <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease-out;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">40px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">12px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">box-shadow</span>: <span class="hljs-number" style="color: #ff73fd;">0</span> <span class="hljs-number" style="color: #ff73fd;">10px</span> <span class="hljs-number" style="color: #ff73fd;">40px</span> <span class="hljs-built_in">rgba</span>(0, 0, 0, 0.2);
<span class="hljs-attribute" style="color: #ffffb6;">max-width</span>: <span class="hljs-number" style="color: #ff73fd;">400px</span>;
}
<span class="hljs-selector-class">.modal</span><span class="hljs-selector-class">.show</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">scale</span>(1);
}
<span class="hljs-selector-class">.modal</span> <span class="hljs-selector-tag" style="color: #96cbfe;">h2</span> {
<span class="hljs-attribute" style="color: #ffffb6;">margin-top</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#333</span>;
}
<span class="hljs-selector-class">.modal</span> <span class="hljs-selector-tag" style="color: #96cbfe;">p</span> {
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#666</span>;
<span class="hljs-attribute" style="color: #ffffb6;">line-height</span>: <span class="hljs-number" style="color: #ff73fd;">1.6</span>;
}
<span class="hljs-selector-class">.modal</span> <span class="hljs-selector-tag" style="color: #96cbfe;">button</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">10px</span> <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">6px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">14px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin-top</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
}
<span class="hljs-selector-class">.modal</span> <span class="hljs-selector-tag" style="color: #96cbfe;">button</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#2980b9</span>;
}
<span class="hljs-selector-class">.trigger-btn</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: fixed;
<span class="hljs-attribute" style="color: #ffffb6;">top</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">left</span>: <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3498db</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">12px</span> <span class="hljs-number" style="color: #ff73fd;">24px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">6px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">16px</span>;
}
<span class="hljs-selector-class">.trigger-btn</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#2980b9</span>;
}
</span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">style</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">head</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">body</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"trigger-btn"</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string" style="color: #a8ff60;">"toggleModal()"</span>></span>Показать модальное окно<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"modal"</span> <span class="hljs-attr">id</span>=<span class="hljs-string" style="color: #a8ff60;">"modal"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">h2</span>></span>Модальное окно<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">h2</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Это модальное окно появляется с эффектом плавного увеличения и изменения прозрачности.<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string" style="color: #a8ff60;">"toggleModal()"</span>></span>Закрыть<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">script</span>></span><span class="javascript">
<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> <span class="hljs-title" style="color: #ffffb6;">toggleModal</span>(<span class="hljs-params"></span>) </span>{
<span class="hljs-keyword" style="color: #96cbfe;">const</span> modal = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string" style="color: #a8ff60;">'modal'</span>);
modal.classList.toggle(<span class="hljs-string" style="color: #a8ff60;">'show'</span>);
}
</span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">script</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">body</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">html</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Функция времени — <u class="stk-reset">ease-in</u>, <u class="stk-reset">ease-out</u> или <u class="stk-reset">linear</u> — определяет, как именно изменяется скорость анимации на протяжении её выполнения. Плавное ускорение в начале (<u class="stk-reset">ease-in</u>) или замедление в конце (<u class="stk-reset">ease-out</u>) делает анимацию более естественной и приятной для восприятия. Браузеры особенно эффективно оптимизируют свойства <u class="stk-reset">opacity</u> и <u class="stk-reset">transform</u>, обрабатывая их на уровне графического процессора (GPU).</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321410112025_11a1d33ad10be24be98dc84cf3f4c2293103c450.gif" height="433" data-image-id="129979" data-image-name="9.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Визуализация работы функций времени<br><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">При работе с несколькими элементами можно добавить задержку через <u class="stk-reset">transition-delay</u>. Например, в списке каждый пункт получает свою индивидуальную задержку: первый элемент — 0,1 секунды, второй — 0,2 секунды, третий — 0,3 секунды и так далее. Когда вы добавляете класс <u class="stk-reset">.show</u> к родительскому контейнеру, элементы начинают появляться последовательно один за другим — создаётся эффект каскадного появления или волны. Посмотрите, как это выглядит в браузере.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321310112025_d5f448b1d45447906b1518b24eb2cf2b32fb1aed.gif" height="433" data-image-id="129971" data-image-name="10.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Вот HTML-разметка, которая поможет вам создать такой же список:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><button onclick=<span class="hljs-string" style="color: #a8ff60;">"showList()"</span>>Показать список</button>
<ul <span class="hljs-keyword" style="color: #96cbfe;">class</span>=<span class="hljs-string" style="color: #a8ff60;">"list-container"</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">li</span> <span class="hljs-keyword" style="color: #96cbfe;">class</span>=<span class="hljs-string" style="color: #a8ff60;">"list-item"</span>>Первый элемент</<span class="hljs-keyword" style="color: #96cbfe;">li</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">li</span> <span class="hljs-keyword" style="color: #96cbfe;">class</span>=<span class="hljs-string" style="color: #a8ff60;">"list-item"</span>>Второй элемент</<span class="hljs-keyword" style="color: #96cbfe;">li</span>>
<<span class="hljs-keyword" style="color: #96cbfe;">li</span> <span class="hljs-keyword" style="color: #96cbfe;">class</span>=<span class="hljs-string" style="color: #a8ff60;">"list-item"</span>>Третий элемент</<span class="hljs-keyword" style="color: #96cbfe;">li</span>>
</ul></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">CSS-стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.list-item</span> {
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">10px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f0f0f0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">5px</span> <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">4px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease-out;
}
<span class="hljs-selector-class">.list-item</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(1)</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.1s</span>;
}
<span class="hljs-selector-class">.list-item</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(2)</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.2s</span>;
}
<span class="hljs-selector-class">.list-item</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(3)</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.3s</span>;
}
<span class="hljs-selector-class">.list-container</span><span class="hljs-selector-class">.show</span> <span class="hljs-selector-class">.list-item</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Также вам понадобится немного JavaScript:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-tag" style="color: #96cbfe;">function</span> <span class="hljs-selector-tag" style="color: #96cbfe;">showList</span>() {
document<span class="hljs-selector-class">.querySelector</span>(<span class="hljs-string" style="color: #a8ff60;">".list-container"</span>)<span class="hljs-selector-class">.classList</span><span class="hljs-selector-class">.add</span>(<span class="hljs-string" style="color: #a8ff60;">"show"</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-8"><strong class="stk-reset">Сравнение с visibility и display</strong></h2><p class="stk-reset" data-ce-tag="paragraph">В CSS есть три основных способа скрыть элемент на странице: <u class="stk-reset">opacity</u>, <u class="stk-reset">visibility</u> и <u class="stk-reset">display</u>. Каждый из них подходит для разных задач.</p><p class="stk-reset" data-ce-tag="paragraph">Свойство <u class="stk-reset">opacity: 0</u> делает элемент невидимым, но при этом он продолжает занимать место в макете и остаётся интерактивным. То есть элемент всё ещё реагирует на события мыши, может получать фокус при навигации с клавиатуры и доступен для скринридеров.</p><p class="stk-reset" data-ce-tag="paragraph">Свойство <u class="stk-reset">visibility: hidden</u> также сохраняет место элемента в потоке, но отключает его интерактивность. Элемент не реагирует на события мыши, не получает фокус и становится невидимым для скринридеров.</p><p class="stk-reset" data-ce-tag="paragraph">Свойство <u class="stk-reset">display: none</u> полностью удаляет элемент из потока документа — браузер не резервирует для него место в макете и не учитывает его при расчёте положения других элементов. Такой элемент не реагирует на действия пользователя и невидим для скринридеров.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-9"><strong class="stk-reset">Доступность и взаимодействие с элементами</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Элементы с <u class="stk-reset">opacity: 0</u> остаются доступными для скринридеров и клавиатурной навигации, даже когда они визуально невидимы. Это полезно, если нужно скрыть информацию от зрячих пользователей.</p><p class="stk-reset" data-ce-tag="paragraph">Например, это полезно для уведомлений об ошибках валидации форм: они озвучиваются скринридером сразу после отправки формы, но визуально скрыты до момента появления ошибки. Также это подходит для динамически обновляемого контента — например, счётчиков непрочитанных сообщений или уведомлений о новых данных.</p><p class="stk-reset" data-ce-tag="paragraph">Однако в других случаях это может создать проблемы с доступностью. Например, пользователь, перемещающийся по странице с помощью клавиатуры, может случайно установить фокус на невидимую кнопку и не понять, где он находится. Кроме того, скринридер может озвучить содержимое фонового изображения или другого декоративного элемента, который должен быть скрыт для ассистивных технологий.</p><p class="stk-reset" data-ce-tag="paragraph">Для управления доступностью прозрачных элементов для ассистивных технологий используются ARIA-атрибуты. Чтобы увидеть их в действии, вставьте в разметку код из следующего примера. Если вы откроете страницу в браузере, то ничего не увидите. Однако код там есть — чтобы в этом убедиться, <a class="stk-reset" href="https://skillbox.ru/media/code/chto-mozhno-delat-v-chrome-devtools-5-poleznykh-funktsiy-dlya-nachinayushchikh" target="_blank">воспользуйтесь инспектором элементов</a>.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-comment" style="color: #7c7c7c;"><!-- Элемент невидим визуально, но доступен для скринридеров --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"status-message"</span> <span class="hljs-attr">style</span>=<span class="hljs-string" style="color: #a8ff60;">"opacity: 0;"</span>></span>
Сообщение о статусе операции
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-comment" style="color: #7c7c7c;"><!-- Элемент невидим и для скринридеров тоже --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"decorative-overlay"</span> <span class="hljs-attr">style</span>=<span class="hljs-string" style="color: #a8ff60;">"opacity: 0;"</span> <span class="hljs-attr">aria-hidden</span>=<span class="hljs-string" style="color: #a8ff60;">"true"</span>></span>
Декоративный элемент
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">При работе с интерактивными элементами важно следить за контрастом в видимом состоянии. Кнопки или поля ввода с высокой прозрачностью плохо различимы — особенно на сложных фонах или при наложении на изображения. Чем прозрачнее элемент, тем сложнее его воспринимать. Это касается в первую очередь пользователей с нарушениями зрения, а также тех, кто работает в условиях яркого освещения или на экранах с низким качеством цветопередачи.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="1540" src="/upload/setka_images/15321310112025_2229e417950c39bd1ac90259b6c781a232a40430.jpg" height="866" data-image-id="129969" data-image-name="11.jpg" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Сравнение двух кнопок с разной степенью прозрачности<br><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Это особенно заметно в формах: полупрозрачные поля ввода затрудняют чтение введённого текста, усложняют проверку данных перед отправкой и замедляют процесс заполнения. Например, поле ввода с <u class="stk-reset">opacity: 0.5</u> на светлом фоне может выглядеть стильно, но текст в нём станет трудночитаемым. В результате пользователю придётся прищуриваться, чтобы убедиться, что он правильно ввёл email.</p><p class="stk-reset" data-ce-tag="paragraph">Для модальных окон, всплывающих подсказок и других подобных элементов советуем сочетать <u class="stk-reset">opacity</u> с <u class="stk-reset">pointer-events</u>. В неактивном состоянии элемент получает <u class="stk-reset">opacity: 0</u> и <u class="stk-reset">pointer-events: none</u> — он становится невидимым и некликабельным, что предотвращает случайные клики. При активации возвращаются <u class="stk-reset">opacity: 1</u> и <u class="stk-reset">pointer-events: auto</u> — элемент становится видимым и интерактивным.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" id="stk-10" data-ce-tag="paragraph"><strong class="stk-reset">Типичные ошибки при работе с прозрачностью</strong></h2><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Непонимание наследования прозрачности.</strong> Разработчики часто пытаются сделать дочерний элемент менее прозрачным, чем родительский. Но это не работает: дочерний элемент наследует прозрачность родителя и поэтому не может быть менее прозрачным.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">/* Неправильно — так не сработает */</span>
<span class="hljs-selector-class">.parent</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.3</span>;
}
<span class="hljs-selector-class">.child</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Дочерний элемент останется полупрозрачным */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Правильное решение — использовать <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">rgba()</u> для фона родительского элемента вместо <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">opacity</u> или изменить структуру HTML так, чтобы дочерний элемент находился за пределами прозрачного родителя.</p><p class="stk-reset" data-ce-tag="paragraph">Вот пример реализации с помощью <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">rgba()</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.parent</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">rgba</span>(52, 152, 219, 0.3);
}
<span class="hljs-selector-class">.child</span> {
<span class="hljs-comment" style="color: #7c7c7c;">/* Дочерний элемент останется непрозрачным */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Другой вариант — изменить структуру разметки за счёт вынесения прозрачного фона в отдельный элемент. Тогда прозрачность будет применяться только к фону, а содержимое останется видимым.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><div <span class="hljs-class"><span class="hljs-keyword" style="color: #96cbfe;">class</span></span>=<span class="hljs-string" style="color: #a8ff60;">"wrapper"</span>>
<span class="xml"><span class="hljs-comment" style="color: #7c7c7c;"><!-- Этот элемент отвечает только за фон и может быть полупрозрачным --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"background"</span>></span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-comment" style="color: #7c7c7c;"><!-- А здесь находится контент, который должен оставаться полностью непрозрачным --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"content"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">p</span>></span>Этот текст остаётся полностью непрозрачным<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">p</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Ошибки с контекстом наложения.</strong> Элемент с <u class="stk-reset">opacity</u>, отличной от 1, автоматически создаёт новый контекст наложения. Из-за этого дочерние элементы с высоким <u class="stk-reset">z-index</u> не смогут выйти за пределы родительского контейнера и наложиться поверх элементов, находящихся снаружи, — даже если <u class="stk-reset">z-index</u> дочерних элементов имеет большее значение.</p><p class="stk-reset" data-ce-tag="paragraph">В результате это часто приводит к тому, что всплывающие блоки, выпадающие меню, подсказки или модальные окна оказываются под другими элементами страницы, которые должны были быть ниже.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">/* Неправильно — popup не сможет перекрыть overlay */</span>
<span class="hljs-selector-class">.overlay</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.9</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Создаёт новый контекст наложения */</span>
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">10</span>;
}
<span class="hljs-selector-class">.popup</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">20</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Не перекроет overlay, если вложен внутрь него */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Правильное решение зависит от ситуации и может быть реализовано несколькими способами. Самый простой вариант — вынести проблемный элемент за пределы прозрачного контейнера.</p><p class="stk-reset" data-ce-tag="paragraph">Так это может выглядеть в HTML-разметке:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-comment" style="color: #7c7c7c;"><!-- Правильно — popup и overlay на одном уровне --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"page"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"content-with-overlay"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"overlay"</span>></span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"content"</span>></span>Основной контент<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"popup"</span>></span>Всплывающее окно<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Такой может быть стилизация:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.overlay</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.9</span>;
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">10</span>;
}
<span class="hljs-selector-class">.popup</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: fixed; <span class="hljs-comment" style="color: #7c7c7c;">/* Или absolute относительно .page */</span>
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">20</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Теперь корректно работает */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Следующий способ — создать прозрачный псевдоэлемент вместо применения <u class="stk-reset">opacity</u> к самому контейнеру:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-class">.overlay</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: relative;
<span class="hljs-comment" style="color: #7c7c7c;">/* Свойство opacity здесь не используется */</span>
}
<span class="hljs-selector-class">.overlay</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">::before</span> {
<span class="hljs-attribute" style="color: #ffffb6;">content</span>: <span class="hljs-string" style="color: #a8ff60;">''</span>;
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">inset</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: black;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.9</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Прозрачность только у фона */</span>
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: -<span class="hljs-number" style="color: #ff73fd;">1</span>;
}
<span class="hljs-selector-class">.popup</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">20</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Перекрывает внешние элементы */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если прозрачность необходима только для фона, можно использовать цвет с альфа-каналом (<u class="stk-reset">rgba</u> или <u class="stk-reset">hsla</u>) вместо свойства <u class="stk-reset">opacity</u>. Так вы сможете сделать прозрачным только фон, не затрагивая содержимое.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">/* Правильно — контекст наложения не создаётся */</span>
<span class="hljs-selector-class">.overlay</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">rgba</span>(0, 0, 0, 0.9); <span class="hljs-comment" style="color: #7c7c7c;">/* Вместо opacity */</span>
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">10</span>;
}
<span class="hljs-selector-class">.popup</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">z-index</span>: <span class="hljs-number" style="color: #ff73fd;">20</span>; <span class="hljs-comment" style="color: #7c7c7c;">/* Теперь работает как ожидается */</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Непродуманная анимация множества элементов.</strong> Если вы одновременно анимируете десятки или сотни элементов по <u class="stk-reset">opacity</u> без подготовки, браузер может дёргаться. Это происходит из-за большого объёма вычислений по смешиванию цветов (альфа-блендинга) или постоянного перемещения элементов в композитные слои и обратно.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">/* Неправильно — без подготовки может лагать */</span>
<span class="hljs-selector-class">.many-items</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Правильное решение будет заключаться в том, чтобы явным образом подготовить элементы к анимации с помощью свойства <u class="stk-reset">will-change</u> или <u class="stk-reset">transform: translateZ (0)</u>. Браузер заранее создаст композитный слой для каждого элемента, и анимация будет проходить без лагов и перерисовок.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">/* Правильно — подсказываем браузеру заранее */</span>
<span class="hljs-selector-class">.many-items</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span>;
<span class="hljs-attribute" style="color: #ffffb6;">will-change</span>: opacity; <span class="hljs-comment" style="color: #7c7c7c;">/* Cовременный способ */</span>
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Альтернатива для старых браузеров */</span>
<span class="hljs-selector-class">.many-items-legacy</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">translateZ</span>(0); <span class="hljs-comment" style="color: #7c7c7c;">/* Принудительно создаём композитный слой */</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Также важно динамически включать <u class="stk-reset">will-change</u> перед анимацией и выключать после её завершения: так вы избежите удержания лишних композитных слоёв в памяти, которое может снизить производительность.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">// Перед анимацией включаем will-change</span>
<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> <span class="hljs-title" style="color: #ffffb6;">fadeIn</span><span class="hljs-params">(el)</span> </span>{
el.style.willChange = <span class="hljs-string" style="color: #a8ff60;">'opacity'</span>;
<span class="hljs-comment" style="color: #7c7c7c;">// Запускаем анимацию появления</span>
requestAnimationFrame(() => {
el.classList.add(<span class="hljs-string" style="color: #a8ff60;">'show'</span>); <span class="hljs-comment" style="color: #7c7c7c;">// В CSS: .show { opacity: 1; }</span>
});
<span class="hljs-comment" style="color: #7c7c7c;">// После завершения перехода снимаем will-change</span>
el.addEventListener(<span class="hljs-string" style="color: #a8ff60;">'transitionend'</span>, <span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> <span class="hljs-title" style="color: #ffffb6;">onEnd</span><span class="hljs-params">()</span> </span>{
el.style.willChange = <span class="hljs-string" style="color: #a8ff60;">'auto'</span>;
el.removeEventListener(<span class="hljs-string" style="color: #a8ff60;">'transitionend'</span>, onEnd);
});
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" id="stk-11" data-ce-tag="paragraph"><strong class="stk-reset">Лайфхак: визуализация прозрачных элементов в процессе разработки</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Основная проблема при работе с <u class="stk-reset">opacity</u> — элементы с низкой прозрачностью часто теряются в процессе разработки. Становится сложно найти их в макете страницы и позиционировать относительно других элементов или заметить случайно оставленные невидимыми блоки, которые могут мешать взаимодействию с интерфейсом.</p><p class="stk-reset" data-ce-tag="paragraph">Чтобы избежать этих проблем, добавьте в HTML-разметку временный класс <u class="stk-reset">.debug</u>, который будет подсвечивать прозрачные элементы:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-comment" style="color: #7c7c7c;"><!-- Во время разработки добавьте класс debug --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"container debug"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"opacity-element"</span>></span>
Этот элемент теперь подсвечен красной обводкой.
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">CSS-стили:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-comment" style="color: #7c7c7c;">/* Обычные стили */</span>
<span class="hljs-selector-class">.opacity-element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0.2</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">rgba</span>(255, 0, 0, 0.1);
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Временный debug-класс — только для разработки */</span>
<span class="hljs-comment" style="color: #7c7c7c;">/* !important нужен, чтобы перебить inline-стили и высокую специфичность */</span>
<span class="hljs-selector-class">.debug</span> <span class="hljs-selector-class">.opacity-element</span> {
<span class="hljs-attribute" style="color: #ffffb6;">outline</span>: <span class="hljs-number" style="color: #ff73fd;">2px</span> dashed red <span class="hljs-meta" style="color: #7c7c7c;">!important</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-built_in">rgba</span>(255, 0, 0, 0.1) <span class="hljs-meta" style="color: #7c7c7c;">!important</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">После настройки элемента просто удалите класс <u class="stk-reset">.debug</u> из разметки:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-comment" style="color: #7c7c7c;"><!-- Перед коммитом удалите класс debug --></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"container"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"opacity-element"</span>></span>
Этот элемент теперь не подсвечен красной обводкой.
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">div</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">А вот CSS-правило <u class="stk-reset">.debug .opacity-element</u> можно оставить в файле. Если в HTML нет класса <u class="stk-reset">.debug</u>, правило не применится и никак не повлияет на страницу. Зато при следующей отладке оно уже будет готово к использованию. Только желательно добавить комментарий, чтобы другие разработчики понимали назначение этого куска кода.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" id="stk-12" data-ce-tag="paragraph"><strong class="stk-reset">Практика: создаём навигационное меню с плавным появлением элементов</strong></h2><p class="stk-reset" data-ce-tag="paragraph">В этом разделе мы создадим адаптивное меню, которое скрывается под кнопкой и раскрывается при нажатии. Такой подход используется в мобильных версиях сайтов, где важно экономить место на экране.</p><p class="stk-reset" data-ce-tag="paragraph">Ключевая особенность реализации — комбинация трёх CSS-свойств для плавной анимации: <u class="stk-reset">opacity</u> управляет прозрачностью меню, <u class="stk-reset">pointer-events</u> блокирует клики по скрытым элементам, а <u class="stk-reset">transform</u> добавляет движение при раскрытии. Пункты появляются поочерёдно — каждый следующий с большей задержкой, создавая эффект каскада.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="770" src="/upload/setka_images/15321410112025_ef20dc169f47ed88607e79936fa7ef349bc53487.gif" height="577" data-image-id="129977" data-image-name="12.gif" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: Google Chrome / Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы реализовать такое меню, вставьте следующий код в пустой HTML-файл и запустите его в браузере:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="xml"><span class="hljs-meta" style="color: #7c7c7c;"><!DOCTYPE html></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string" style="color: #a8ff60;">"ru"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">head</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string" style="color: #a8ff60;">"UTF-8"</span> /></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string" style="color: #a8ff60;">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string" style="color: #a8ff60;">"width=device-width, initial-scale=1"</span> /></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">title</span>></span>Навигационное меню<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">title</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">style</span>></span><span class="css">
<span class="hljs-selector-tag" style="color: #96cbfe;">body</span> {
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-family</span>: Arial, sans-serif;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f6f8fb</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">50px</span> <span class="hljs-number" style="color: #ff73fd;">20px</span>;
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Контейнер для кнопки и меню */</span>
<span class="hljs-selector-class">.main-navigation</span> {
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: relative;
<span class="hljs-attribute" style="color: #ffffb6;">max-width</span>: <span class="hljs-number" style="color: #ff73fd;">560px</span>;
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Кнопка с иконкой ☰ */</span>
<span class="hljs-selector-class">.menu-toggle</span> {
<span class="hljs-attribute" style="color: #ffffb6;">width</span>: <span class="hljs-number" style="color: #ff73fd;">44px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">height</span>: <span class="hljs-number" style="color: #ff73fd;">44px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#4c9aff</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">10px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">font-size</span>: <span class="hljs-number" style="color: #ff73fd;">22px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">cursor</span>: pointer;
}
<span class="hljs-selector-class">.menu-toggle</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#3a89f0</span>;
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Само меню (изначально спрятано) */</span>
<span class="hljs-selector-class">.menu-items</span> {
<span class="hljs-attribute" style="color: #ffffb6;">list-style</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">margin</span>: <span class="hljs-number" style="color: #ff73fd;">12px</span> <span class="hljs-number" style="color: #ff73fd;">0</span> <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">position</span>: absolute;
<span class="hljs-attribute" style="color: #ffffb6;">top</span>: <span class="hljs-number" style="color: #ff73fd;">100%</span>;
<span class="hljs-attribute" style="color: #ffffb6;">left</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">right</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: white;
<span class="hljs-attribute" style="color: #ffffb6;">border-radius</span>: <span class="hljs-number" style="color: #ff73fd;">12px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">box-shadow</span>: <span class="hljs-number" style="color: #ff73fd;">0</span> <span class="hljs-number" style="color: #ff73fd;">6px</span> <span class="hljs-number" style="color: #ff73fd;">20px</span> <span class="hljs-built_in">rgba</span>(0, 0, 0, 0.1);
<span class="hljs-comment" style="color: #7c7c7c;">/* Делаем меню невидимым и некликабельным */</span>
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">pointer-events</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">translateY</span>(-10px);
<span class="hljs-comment" style="color: #7c7c7c;">/* Поднимаем вверх */</span>
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease, transform <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease;
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Стили для открытого меню (есть класс open) */</span>
<span class="hljs-selector-class">.main-navigation</span><span class="hljs-selector-class">.open</span> <span class="hljs-selector-class">.menu-items</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
<span class="hljs-attribute" style="color: #ffffb6;">pointer-events</span>: auto;
<span class="hljs-comment" style="color: #7c7c7c;">/* Теперь можно кликать */</span>
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">translateY</span>(0);
<span class="hljs-comment" style="color: #7c7c7c;">/* Опускаем на место */</span>
}
<span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">li</span> {
<span class="hljs-attribute" style="color: #ffffb6;">border-bottom</span>: <span class="hljs-number" style="color: #ff73fd;">1px</span> solid <span class="hljs-number" style="color: #ff73fd;">#f0f0f0</span>;
}
<span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">li</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:last-child</span> {
<span class="hljs-attribute" style="color: #ffffb6;">border-bottom</span>: none;
}
<span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span> {
<span class="hljs-attribute" style="color: #ffffb6;">display</span>: block;
<span class="hljs-attribute" style="color: #ffffb6;">padding</span>: <span class="hljs-number" style="color: #ff73fd;">14px</span> <span class="hljs-number" style="color: #ff73fd;">20px</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#333</span>;
<span class="hljs-attribute" style="color: #ffffb6;">text-decoration</span>: none;
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">translateX</span>(-20px);
<span class="hljs-attribute" style="color: #ffffb6;">transition</span>: opacity <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease, transform <span class="hljs-number" style="color: #ff73fd;">0.3s</span> ease, background <span class="hljs-number" style="color: #ff73fd;">0.2s</span> ease;
}
<span class="hljs-selector-class">.main-navigation</span><span class="hljs-selector-class">.open</span> <span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span> {
<span class="hljs-attribute" style="color: #ffffb6;">opacity</span>: <span class="hljs-number" style="color: #ff73fd;">1</span>;
<span class="hljs-attribute" style="color: #ffffb6;">transform</span>: <span class="hljs-built_in">translateX</span>(0);
}
<span class="hljs-comment" style="color: #7c7c7c;">/* Каждая ссылка появляется с задержкой */</span>
<span class="hljs-selector-class">.main-navigation</span><span class="hljs-selector-class">.open</span> <span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">li</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(1)</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.06s</span>;
}
<span class="hljs-selector-class">.main-navigation</span><span class="hljs-selector-class">.open</span> <span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">li</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(2)</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.12s</span>;
}
<span class="hljs-selector-class">.main-navigation</span><span class="hljs-selector-class">.open</span> <span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">li</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(3)</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.18s</span>;
}
<span class="hljs-selector-class">.main-navigation</span><span class="hljs-selector-class">.open</span> <span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">li</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:nth-child(4)</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span> {
<span class="hljs-attribute" style="color: #ffffb6;">transition-delay</span>: <span class="hljs-number" style="color: #ff73fd;">0.24s</span>;
}
<span class="hljs-selector-class">.menu-items</span> <span class="hljs-selector-tag" style="color: #96cbfe;">a</span><span class="hljs-selector-pseudo" style="color: #a8ff60;">:hover</span> {
<span class="hljs-attribute" style="color: #ffffb6;">background</span>: <span class="hljs-number" style="color: #ff73fd;">#f5f9ff</span>;
<span class="hljs-attribute" style="color: #ffffb6;">color</span>: <span class="hljs-number" style="color: #ff73fd;">#4c9aff</span>;
}
</span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">style</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">head</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">body</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"main-navigation"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"menu-toggle"</span>></span>☰<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">button</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string" style="color: #a8ff60;">"menu-items"</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">li</span>></span><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string" style="color: #a8ff60;">"#home"</span>></span>Главная<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">a</span>></span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">li</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">li</span>></span><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string" style="color: #a8ff60;">"#about"</span>></span>О нас<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">a</span>></span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">li</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">li</span>></span><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string" style="color: #a8ff60;">"#services"</span>></span>Услуги<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">a</span>></span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">li</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">li</span>></span><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string" style="color: #a8ff60;">"#contact"</span>></span>Контакты<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">a</span>></span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">li</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">ul</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">nav</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">script</span>></span><span class="javascript">
<span class="hljs-comment" style="color: #7c7c7c;">// Находим элементы на странице</span>
<span class="hljs-keyword" style="color: #96cbfe;">const</span> nav = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string" style="color: #a8ff60;">'.main-navigation'</span>);
<span class="hljs-keyword" style="color: #96cbfe;">const</span> toggleButton = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string" style="color: #a8ff60;">'.menu-toggle'</span>);
<span class="hljs-keyword" style="color: #96cbfe;">const</span> menuLinks = <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string" style="color: #a8ff60;">'.menu-items a'</span>);
<span class="hljs-comment" style="color: #7c7c7c;">// Клик по кнопке — открываем или закрываем меню</span>
toggleButton.addEventListener(<span class="hljs-string" style="color: #a8ff60;">'click'</span>, <span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> (<span class="hljs-params"></span>) </span>{
nav.classList.toggle(<span class="hljs-string" style="color: #a8ff60;">'open'</span>);
});
<span class="hljs-comment" style="color: #7c7c7c;">// Клик по любой ссылке — закрываем меню</span>
menuLinks.forEach(<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> (<span class="hljs-params">link</span>) </span>{
link.addEventListener(<span class="hljs-string" style="color: #a8ff60;">'click'</span>, <span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> (<span class="hljs-params"></span>) </span>{
nav.classList.remove(<span class="hljs-string" style="color: #a8ff60;">'open'</span>);
});
});
<span class="hljs-comment" style="color: #7c7c7c;">// Клик мимо меню — тоже закрываем</span>
<span class="hljs-built_in">document</span>.addEventListener(<span class="hljs-string" style="color: #a8ff60;">'click'</span>, <span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> (<span class="hljs-params">event</span>) </span>{
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (!nav.contains(event.target)) {
nav.classList.remove(<span class="hljs-string" style="color: #a8ff60;">'open'</span>);
}
});
<span class="hljs-comment" style="color: #7c7c7c;">// Кнопка Escape — закрываем меню</span>
<span class="hljs-built_in">document</span>.addEventListener(<span class="hljs-string" style="color: #a8ff60;">'keydown'</span>, <span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">function</span> (<span class="hljs-params">event</span>) </span>{
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (event.key === <span class="hljs-string" style="color: #a8ff60;">'Escape'</span>) {
nav.classList.remove(<span class="hljs-string" style="color: #a8ff60;">'open'</span>);
}
});
</span><span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">script</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">body</span>></span>
<span class="hljs-tag" style="color: #96cbfe;"></<span class="hljs-name" style="color: #96cbfe;">html</span>></span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом коде меню изначально скрыто с помощью <u class="stk-reset">opacity: 0</u> и <u class="stk-reset">pointer-events: none</u>, а также смещено вверх на 10 пикселей. Когда пользователь нажимает на кнопку с иконкой «☰», JavaScript добавляет класс <u class="stk-reset">open</u> к элементу навигации. Это запускает CSS-анимацию: меню плавно опускается на своё место (<u class="stk-reset">translateY (0)</u>) и становится видимым (<u class="stk-reset">opacity: 1</u>). Свойство <u class="stk-reset">pointer-events</u> меняется на <u class="stk-reset">auto</u> — элемент снова становится интерактивным и доступным для кликов мышью.</p><p class="stk-reset" data-ce-tag="paragraph">Каждая ссылка внутри меню также сначала прозрачна (<u class="stk-reset">opacity: 0</u>) и смещена влево (<u class="stk-reset">translateX (-20px)</u>). При открытии меню пункты поочерёдно проявляются и выезжают на место: каждый следующий — с небольшой задержкой благодаря разным значениям <u class="stk-reset">transition-delay</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Меню закрывается в четырёх случаях: при клике на один из пунктов, при клике в любом месте за пределами меню, при нажатии клавиши <strong class="stk-reset">Escape</strong> или при повторном нажатии на кнопку с иконкой «☰».</p><p class="stk-reset" data-ce-tag="paragraph">Закрытие происходит с той же плавной анимацией, только в обратном порядке: пункты поочерёдно уезжают влево и исчезают, а само меню поднимается на 10 пикселей и становится полностью прозрачным.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Полезные ссылки</strong></h2><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="https://developer.mozilla.org/ru/docs/Web/CSS/opacity" target="_blank">MDN: CSS opacity</a> — официальная документация по свойству <u class="stk-reset">opacity</u>.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="https://developer.mozilla.org/ru/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions" target="_blank">MDN: Использование CSS-переходов</a> — руководство по созданию плавных анимаций с помощью <u class="stk-reset">transition</u>.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://developer.mozilla.org/ru/docs/Web/CSS/pointer-events" target="_blank" class="stk-reset">MDN: CSS pointer-events</a> — документация по управлению интерактивностью элементов.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://web.dev/animations-guide/" target="_blank" class="stk-reset">web.dev: Animations Guide</a> — инструкция по созданию высокопроизводительных CSS-анимаций.</li></ul></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-grid stk-grid__layout_columns" data-stk-css="stkRa2-N" data-ce-tag="grid"><div data-col-width="1" class="stk-grid-col align-left valign-top stk-mobile-hidden" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><a class="sklbx-link sklbx-link--fb stk-container stk-container-link stk-reset" data-ce-tag="container" data-container-name="Telegram" href="https://t.me/skillbox_media_code" target="_blank"></a></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__style_font_style-1629786048064" data-ce-tag="paragraph" data-stk-css="stkt5vJA">Больше интересного про код — в нашем <a class="stk-reset" href="https://t.me/skillbox_media_code" target="_blank">телеграм-канале</a>. Подписывайтесь!</p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkoMJ7S"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Читайте также:</strong></p><ul class="stk-theme_26309__style_small_text stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/code/selektory-v-css-chto-eto-takoe-kak-oni-rabotayut-i-kakie-byvayut/" target="_blank" class="stk-reset">Селекторы в CSS: что это такое, как они работают и какие бывают</a></li><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/code/uchimsya-verstat-v-setke-bolshoy-gayd-po-css-grid/" target="_blank" class="stk-reset">Учимся верстать в сетке: большой гайд по CSS Grid</a></li><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/base/kak-zapustit-javascript-kod-v-brauzere-konsoli-i-redaktore-koda/" target="_blank" class="stk-reset">Как запустить JavaScript-код: в браузере, консоли и редакторе кода</a></li></ul></div></div></div></div><br class=""/><br class=""/><style data-stk-css="stkRa2-N" class="" media="all">
[data-stk-css="stkRa2-N"]:not(#stk):not(#stk):not(style) {
border-radius: 16px;
padding: 20px;
border: 1px solid;
border-color: #E4E4E4;
background-color: rgba(241, 242, 246, 1)
}
</style><style data-stk-css="stkt5vJA" class="" media="all">
[data-stk-css="stkt5vJA"]:not(#stk):not(#stk):not(style) {
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
-o-hyphens: none;
hyphens: none
}
</style><style data-stk-css="stkw_HMI" class="" media="all">
[data-stk-css="stkw_HMI"]:not(#stk):not(#stk):not(style) {
border-radius: 16px;
padding: 40px;
border: 1px solid;
background-color: rgba(255, 255, 255, 1);
border-color: #E4E4E4;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
</style><style data-stk-css="stkx8RSw" class="" media="all">
[data-stk-css="stkx8RSw"]:not(#stk):not(#stk):not(style) {
border-radius: 16px;
padding: 40px;
border: 1px solid;
background-color: rgba(255, 255, 255, 1);
border-color: #E4E4E4;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
</style><style data-stk-css="stkBf30n" class="" media="all">
[data-stk-css="stkBf30n"]:not(#stk):not(#stk):not(style) {
border-radius: 16px;
padding: 40px;
border: 1px solid;
background-color: rgba(255, 255, 255, 1);
border-color: #E4E4E4;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
</style><style data-stk-css="stkoMJ7S" media="all" class="">
[data-stk-css="stkoMJ7S"]:not(#stk):not(#stk):not(style) {
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><div class="stk-footnote stk-footnote--hide" data-stk-show="mouseover" data-stk-footnote-body="fn8ydvh" data-ce-tag="footnote" style="display:none"><div class="stk-footnote__close"></div><div class="stk-footnote__body"><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph">Браузер размещает элементы на странице по трём осям: ширине (X), высоте (Y) и глубине (Z). Ось Z определяет, какой элемент окажется поверх других при перекрытии.<br><br>Свойство `position: absolute` убирает элемент из обычного потока документа. Он перестаёт занимать место среди соседних элементов и позиционируется относительно ближайшего родителя с `position: relative` — или относительно окна браузера, если такого родителя нет. Положение задаётся через `top`, `left`, `right` и `bottom`.<br><br>Свойство `z-index` управляет порядком наложения элементов с `position: absolute`, `fixed`, `relative` или `sticky`. По умолчанию его значение — `auto` (равно 0). Чем больше число, тем выше элемент располагается в стопке слоёв. Например, элемент с `z-index: 10` окажется поверх элемента с `z-index: 5`.</p></div></div></div> </div>
</div>
</div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-preview-info">
</div>
</div>
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div>
</noindex>
</div>
<section class="container inset" data-banner="223479" data-source="225763" data-format="horizontal">
<section class="container inset" data-format="horizontal">
<div class="row">
<div class="col-lg-8 col-sm-12">
<a data-source="225763" data-banner="223479" target="_blank" href="https://skillbox.ru/course/frontend-developer/" class="article-advert-banner__link courseLink" data-format="horizontal" data-type="horizontal" data-courseid="3254">
<div class="inset__wrapper" style="background-color: #EDEBF0;">
<div class="inset__content">
<h2 class="inset__header">Курс с помощью в трудоустройстве</h2>
<p class="inset__description">
Профессия Фронтенд-разработчик + ИИ
</p>
<ul class="inset__text" style="color:#000!important; list-style:'\2022 ' outside; margin-left:20px;">
<li style="list-style:'\2022 '; padding-left:10px; margin-bottom:6px">
Трудоустройство с помощью Центра карьеры Skillbox — можно работать уже через 8 месяцев</li>
<li style="list-style:'\2022 '; padding-left:10px; margin-bottom:6px">
3 проекта в портфолио и 50 практических задач</li>
<li style="list-style:'\2022 '; padding-left:10px; margin-bottom:6px">
Нейросети в программе, чтобы быстрее писать и проверять код</li>
</ul>
<p class="inset__button article-advert-banner__link">
Подробнее
</p>
</div>
<div class="inset__image">
<img width="250" src="https://cdn.skillbox.pro/landgen/blocks/start-screen/225567/lg/1b07db09-8fc4-4dc8-b907-dd2b001ce656.webp" height="250" alt="">
</div>
</div>
</a>
</div>
</div>
</section> </section>
<div style="align-content: center; background-color: black; overflow: hidden;">
<noindex>
<div style="display: flex; align-items: center; justify-content: center; background-color: black; height: 60px; color: white; text-align: center">
Листая дальше, вы перейдете на страницу <a style="text-decoration: underline;" data-type="scroll" href="https://bootcamp.skillbox.ru/it-jobs/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-759_all_code_skillbox">Как зарабатывать деньги на IT в 2026 - бесплатный курс «Старт с нуля»</a>
</div>
<div class="iframe-wrapper" style="height: 100vh; transform: scale(0.5);">
<iframe id="test_iframe" scrolling="no" style="overflow: hidden;margin: 0 auto;display: block; width: 100%; height: 100%" src="https://bootcamp.skillbox.ru/it-jobs/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-759_all_code_skillbox">
</iframe>
</div>
</noindex>
</div>
<script>
jQuery(document).ready(function($) {
$('footer.without-buttons').remove();
let iframeWrapper = $('.iframe-wrapper');
var check = false;
$(window).on('scroll', function() {
let iframeWrapperHeight = iframeWrapper.height();
let iframeWrapperOffset = iframeWrapper.offset().top - iframeWrapperHeight;
let scrollTop = $(window).scrollTop();
const {scrollHeight, clientHeight } = document.documentElement;
const maxScroll = scrollHeight - clientHeight;
const power = 1
const scale = (scrollTop / maxScroll) * power;
iframeWrapper.css('height', `${clientHeight}`)
if (scrollTop > iframeWrapperOffset) {
if(!check) {
document.dispatchEvent(new CustomEvent('articleAdvertBanner', {
detail: {
event: 'show',
id: 226244,
sourceId: 225763,
format: "new_banner"
}
}));
}
check = true;
iframeWrapper.css({'transform': `scale(${scale})`})
if (maxScroll === scrollTop || maxScroll === iframeWrapper.offset().top) {
redirect();
} else if (maxScroll <= scrollTop + 1 ) {
redirect();
}
}
function isNeedAddUtm(url)
{
if (typeof url !== 'string') {
return false;
}
var externalLinks = [
'freelancer.skillbox.ru',
'sale.skillbox.ru',
'course.skillbox.ru',
'interiordesign.skillbox.ru',
'iamwebdev.skillbox.ru',
'iammarketer.skillbox.ru',
'iamdesigner.skillbox.ru',
'live.skillbox.ru',
'b2b.skillbox.ru',
'highereducation.skillbox.ru',
'skillbox.ru/courses',
'skillbox.ru/sale',
'skillbox.ru/media'
];
for (var i = 0; i < externalLinks.length; i++) {
externalLinks[i] = escapeRegExp(externalLinks[i]);
}
var regexp = new RegExp('^http[s]?:\/\/(skillbox\.ru|' + escapeRegExp(window.location.host) + '|' + externalLinks.join('|') + ')\/(?!media/)[a-zA-Z0-9-_/]*');
return !!url.match(regexp);
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function redirect() {
document.dispatchEvent(new CustomEvent('articleAdvertBanner', {
detail: {
event: 'click',
id: 226244,
sourceId: 225763,
format: "new_banner"
}
}));
var page = window.location.href;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 226244,
'page': page,
'pageID': pageId
});
var link = "https://bootcamp.skillbox.ru/it-jobs/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-759_all_code_skillbox";
if(isNeedAddUtm(link)) {
var urlSplit = link.split('?');
var urlBase = urlSplit[0] ? urlSplit[0] : '';
link = urlBase + '?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_scroll_all_all_skillbox';
}
window.location.assign(link);
// var iframe = document.getElementById("test_iframe");
// var src = iframe.src;
// var document_frame = iframe.contentWindow.document.documentElement;
// var body = window.document.body.innerHTML;
// var title = iframe.contentWindow.document.head.title;
//
// window.history.pushState({
// "html": body,
// "pageTitle": title,
// "src": document.location.href
// }, '', src);
// window.addEventListener("popstate", function(e) {
// window.location.href = document.location;
// });
//
// document.documentElement.replaceWith(document_frame);
}
});
});
</script> </section>
<div class="article-banner" data-banner="223362" data-source="225763" data-format="vertical" data-type="vertical">
<div class="row">
<div class="col-sm-4 col-sm-12">
<a data-source="225763" data-banner="223362" href="https://skillbox.ru/course/frontend-developer/" class="inset__wrapper" style="background-color: #f2eeff; display: block; text-decoration: none; color: inherit;" target="_blank">
<div class="inset__content">
<h2 class="inset__header">Курс с помощью в трудоустройстве</h2>
<div class="inset__image" style="text-align: center; margin-bottom:3px">
<img src="https://cdn.skillbox.pro/landgen/blocks/universal-extra-info/298612/lg/da61adec-efa6-4d14-81a2-3244a1c904a7.webp" width="350" height="350" alt="">
</div>
<p class="inset__description" style="color:#000!important; padding-bottom:1px;">
Профессия Фронтенд-разработчик + ИИ
</p>
<p class="inset__text" style="color:#000!important">
Освойте фронтенд без опыта в IT. Практикуйтесь на реальных задачах и находите первых заказчиков в комьюнити Skillbox.
</p>
<div class="inset__button article-advert-banner__link" style="color:#000; background-color:#ffafff; display: inline-block;">Узнать о курсе →</div>
</div>
</a>
</div>
</div>
<br> </div>
<a data-source="225763" data-banner="223363" target="_blank" href="https://skillbox.ru/course/frontend-developer/" class="article-banner article-advert-banner__link courseLink" style="background-color: #E9E9F5;" data-format="top" data-type="top" data-courseid="3522">
<div class="article-banner__img">
<img src="https://cdn.skillbox.pro/landgen/blocks/universal-extra-info/298612/lg/da61adec-efa6-4d14-81a2-3244a1c904a7.webp" alt="">
</div>
<span class="article-banner__title">Курс с трудоустройством: «<u>Профессия Фронтенд-разработчик + ИИ</u>»</span>
<span class="article-banner__link">Узнать о курсе</span>
</a>
<div class="question">
<div class="container">
<div class="question__inner">
<div class="question__title">Понравилась статья?</div>
<a href="#" data-cur-url="/media/code/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte/"
class="question__btn js-modalLink" data-mfp-src="#modalAuth">Да</a>
</div>
</div>
</div>
</div>
<span
data-area="article-bottom"
data-current-url="/media/code/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte/"
data-id="225763">
</span>
</div>
<script type="application/ld+json">
{"@context":"http:\/\/schema.org","@type":"Article","url":"https:\/\/skillbox.ru\/media\/code\/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte\/","headline":"Opacity \u0432\u00a0CSS: \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435","articleSection":"\u041a\u043e\u0434","articleBody":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e CSS opacity \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435: \u043e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0432\u043e\u0437\u044c \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043b \u0444\u043e\u043d. \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u043a\u0446\u0435\u043d\u0442\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435.\r\n\r\n\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \r\nopacity, \u043a\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0432 \u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.\r\n\r\n\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\r\n\r\n- \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 opacity \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u043d\u0443\u0436\u043d\u043e [ #stk-1 ]\r\n \r\n- \u041a\u0430\u043a \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e [ #stk-2 ] \r\n- \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 [ #stk-3 ]\r\n \r\n- \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f opacity [ #stk-4 ] \r\n- \u0412\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b [ #stk-5 ]\r\n \r\n- \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b opacity: rgba() \u0438 hsla() [ #stk-6 ] \r\n- Opacity \u0432 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u0445 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0445 [ #stk-7 ]\r\n \r\n- \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 visibility \u0438 display [ #stk-8 ] \r\n- \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \r\n[ #stk-9 ] \r\n- \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \r\n[ #stk-10 ] \r\n- \u041b\u0430\u0439\u0444\u0445\u0430\u043a: \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \r\n\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 [ #stk-11 ] \r\n- \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430: \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \r\n\u0441 \u043f\u043b\u0430\u0432\u043d\u044b\u043c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 [ #stk-12 ] \r\n----------------------\r\n\r\n\r\n\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 opacity \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u043d\u0443\u0436\u043d\u043e\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e CSS opacity (\u043e\u0442 \u0430\u043d\u0433\u043b. opacity \u2014 \u00ab\u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u00bb) \r\n\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438 \u0432\u0441\u0435\u0433\u043e \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u041a\u043e\u0433\u0434\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c, \u0441\u043a\u0432\u043e\u0437\u044c \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0444\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0437\u0430\u0434\u0438 \u043d\u0435\u0433\u043e.\r\n\r\n\u042d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \r\n\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445. \u041e\u043d \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0442\u0435\u043c\u043d\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 \u043e\u0432\u0435\u0440\u043b\u0435\u0438 \u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, opacity \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u043a\u0440\u044b\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043d\u0435 \u043b\u043e\u043c\u0430\u044f \u0432\u0441\u044e \u0432\u0451\u0440\u0441\u0442\u043a\u0443.\r\n\r\n\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 display: none, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \r\n\u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u044b \u043f\u043b\u0430\u0432\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0430\u043a\u0435\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443 \u0442\u043e\u0432\u0430\u0440\u0430 \u043e\u043d\u0430 \u043f\u043b\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0439, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u00ab\u043f\u0440\u044b\u0436\u043a\u043e\u0432\u00bb.\r\n\r\n\r\n\r\n \r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:\r\n\r\n\u0423\u0447\u0438\u043c\u0441\u044f \u0432\u0435\u0440\u0441\u0442\u0430\u0442\u044c: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 CSS \r\n \r\n\r\n\u041a\u0430\u043a \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 1. \r\n\u042d\u0442\u043e \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: 0 \u2014 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c (\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c), 1 \u2014 \u043f\u043e\u043b\u043d\u0430\u044f \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c (\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0438\u043c). \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e 1 \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u0435\u043d.\r\n\r\n\u0414\u0440\u043e\u0431\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u0451\u043c \r\n\u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, opacity: 0.5 \u0438 opacity: .5 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e. \u041f\u043e\u043c\u0438\u043c\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, opacity \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c: 0% \u0440\u0430\u0432\u043d\u043e 0, \u0430 100% \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 1. \u041e\u0434\u043d\u0430\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f, \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043e \u0432\u0441\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.\r\n\r\n\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \r\n\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 CSS-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: inherit \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430; initial \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0442\u043e \u0435\u0441\u0442\u044c 1 (\u043f\u043e\u043b\u043d\u0430\u044f \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0430\u043d\u043e); unset \u2014 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043a \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u0438\u043b\u0438 \u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e 1, \u0435\u0441\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u0442.\r\n\r\n.element { opacity: 0; \/* \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 *\/ opacity: \r\n0.3; \/* 30% \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 *\/ opacity: .5; \/* 50% \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 *\/ opacity: 1; \/* \u041d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 *\/ opacity: 50%; \/* \u0422\u043e \u0436\u0435, \u0447\u0442\u043e opacity: 0.5 *\/ }\r\n\r\n\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\r\n\r\n\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0440\u0438\u0441\u0443\u0435\u0442 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0435 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \r\n\u0430 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c. \u041a\u0430\u0436\u0434\u0430\u044f \u0442\u0430\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u043c \u0441\u043b\u043e\u0435\u043c \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u0433\u0434\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u043b\u043e\u0438 \u043d\u0443\u0436\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043b\u043e\u0439. \u0422\u0430\u043a \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u043b\u0430\u0432\u043d\u0435\u0435.\r\n\r\n\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u0434\u0430\u0451\u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \r\n\u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 1, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0435\u0433\u043e \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0438\u0436\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.\r\n\r\n\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0438\u043d\u0438\u0439 \u0431\u043b\u043e\u043a \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u00ab\u0424\u043e\u043d\u043e\u0432\u044b\u0439 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u00bb \u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0441 opacity: 0.7, \u0441\u043b\u0435\u0433\u043a\u0430 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u041a\u0440\u0430\u0441\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u0435\u043d \u2014 \u0441\u043a\u0432\u043e\u0437\u044c \u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0435\u043d \u0441\u0438\u043d\u0438\u0439 \u0444\u043e\u043d \u0438 \u0442\u0435\u043a\u0441\u0442. \u0412 \u0437\u043e\u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043e\u0442\u0442\u0435\u043d\u043e\u043a.\r\n\r\n\u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c, \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \r\n\u0432 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443:\r\n\r\n<div class=\"container\"> <div class=\"background\">\u0424\u043e\u043d\u043e\u0432\u044b\u0439 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/div> <div class=\"overlay\">\u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0435 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/div> <\/div>\r\n\r\n\u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0438\u043b\u0438:\r\n\r\n.container { position: relative; background: #f0f0f0; width: 300px; height: \r\n300px; } .background { padding: 20px; background: #3498db; color: #ffffff; height: 100%; width: 100%; } .overlay { position: absolute; top: 30px; left: 30px; right: 0; bottom: 0; background: rgba(231, 76, 60, 0.7); display: flex; align-items: center; justify-content: center; color: #ffffff; }\r\n\r\n\u041a\u043e\u0433\u0434\u0430 \u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 opacity \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \r\n\u043c\u0435\u043d\u044c\u0448\u0435 1, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0435\u0433\u043e \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439, \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043b\u043e\u044f \u043f\u043e \u043e\u0441\u0438 Z. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 position: absolute \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 z-index, \u043e\u043d \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.\r\n\r\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \r\n\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043c\u0435\u043d\u044e, \u043e\u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0435 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430: \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e.\r\n\r\n\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \r\n\u0434\u043b\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0445 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 position: fixed, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043c\u0438 (transform), \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432.\r\n\r\n\r\n\r\n \r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:\r\n\r\n\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 CSS: \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \r\ntransform \r\n\r\n\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f opacity\r\n\r\n\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 opacity \u043e\u0441\u043e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \r\n\u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u0435\u043d (opacity: 0), \u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u043e \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c, \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u043d\u0435\u0451 \u0444\u043e\u043a\u0443\u0441 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 opacity \u043e\u0442 display: none \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430, \u0438 \u043e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f.\r\n\r\n\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0441 opacity: 0, \u043d\u043e \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \r\n\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c pointer. \u041e\u043d\u0430 \u043d\u0435 \u0432\u0438\u0434\u043d\u0430, \u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u043e. \u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 :hover, \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 0.5 \u2014 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.\r\n\r\n\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438:\r\n\r\n<button class=\"invisible-button\">\u041d\u0435\u0432\u0438\u0434\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430<\/button> \r\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u044b\u0448\u0435<\/p>\r\n\r\nCSS-\u0441\u0442\u0438\u043b\u0438:\r\n\r\n.invisible-button { opacity: 0; padding: 20px; background: #3498db; color: \r\nwhite; border: none; cursor: pointer; } .invisible-button:hover { opacity: 0.5; }\r\n\r\n\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441:\r\n\r\n<button class=\"invisible-button non-interactive\">\u041d\u0435\u0432\u0438\u0434\u0438\u043c\u0430\u044f \r\n\u043a\u043d\u043e\u043f\u043a\u0430<\/button> <p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u044b\u0448\u0435<\/p>\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0441\u0442\u0438\u043b\u044f\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \r\n\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u043b\u044e\u0431\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u2014 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043e\u0442\u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u0430 \u0432\u0430\u0448\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.\r\n\r\n.invisible-button { opacity: 0; padding: 20px; background: #3498db; color: \r\nwhite; border: none; cursor: pointer; } .invisible-button:hover { opacity: 0.5; } .non-interactive { opacity: 0; pointer-events: none; }\r\n\r\n\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c opacity \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \r\n\u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 transition. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 opacity: 0, \u0430 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 opacity: 1. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c, \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \r\nHTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438.\r\n\r\n<button class=\"fade-element\">\u041d\u0435\u0432\u0438\u0434\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430<\/button> \r\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u044b\u0448\u0435<\/p>\r\n\r\n\u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 CSS-\u0441\u0442\u0438\u043b\u0438:\r\n\r\n.fade-element { opacity: 0; transition: opacity 0.3s ease-in-out; padding: \r\n20px; background: #3498db; color: white; border: none; cursor: pointer; } .fade-element:hover { opacity: 1; }\r\n\r\n\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 opacity \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \r\n\u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (\u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432), \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u0438\u0434\u0438\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043a\u043d\u043e\u043f\u043a\u0438, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430.\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u0440\u044b\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \r\n\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 aria-hidden=\"true\u00bb. \u0421\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442 \u043e \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438.\r\n\r\n\r\n\r\n \r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:\r\n\r\n\u041e\u0431\u044a\u0435\u043a\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (DOM): \u0447\u0442\u043e \u044d\u0442\u043e \r\n\u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \r\n\r\n\u0412\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b\r\n\r\n\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u0434\u0430\u0451\u0442\u0435 opacity \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443, \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c\u043a\u0430\u043c. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u043e \u0432\u0441\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u2014 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438, \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u2014 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u043c\u0443 opacity: 1, \u0435\u0433\u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f.\r\n\r\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0437\u0430\u0434\u0430\u0442\u044c opacity: 0.3, \r\n\u0442\u043e \u0432\u0435\u0441\u044c \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u043d\u0430 70%. \u0412 \u044d\u0442\u043e\u043c opacity \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 CSS-\u0441\u0432\u043e\u0439\u0441\u0442\u0432: \u043e\u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438:\r\n\r\n<div class=\"parent\"> <h2>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a<\/h2> <p>\u0410\u0431\u0437\u0430\u0446 \r\n\u0442\u0435\u043a\u0441\u0442\u0430<\/p> <button>\u041a\u043d\u043e\u043f\u043a\u0430<\/button> <\/div>\r\n\r\nCSS-\u0441\u0442\u0438\u043b\u0438:\r\n\r\n.parent { opacity: 0.3; background: #3498db; padding: 20px; color: white; \r\n}\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \r\n\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u043c \u0444\u043e\u043d\u0435, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442 :before.\r\n\r\n\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \r\n\u043e\u0431\u0449\u0435\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: \u043e\u0434\u0438\u043d \u2014 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u043d\u0430, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0431\u043b\u043e\u043a \u0441 position: relative \u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u043c z-index \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0424\u043e\u043d \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c, \u0430 \u0442\u0435\u043a\u0441\u0442 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438.\r\n\r\n\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443:\r\n\r\n<div class=\"container\"> <div class=\"background\"><\/div> \r\n<div class=\"content\"> <h2>\u042d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c<\/h2> <\/div> <\/div>\r\n\r\n\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0438\u043b\u0438:\r\n\r\n.container { position: relative; } .background { position: absolute; top: \r\n0; left: 0; right: 0; bottom: 0; background: #3498db; opacity: 0.2; } .content { position: relative; z-index: 1; padding: 20px; }\r\n\r\n\u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430 \u043f\u043e\u0447\u0442\u0438 \r\n\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u043c \u0444\u043e\u043d\u0435.\r\n \r\n\u0412 CSS-\u0441\u0442\u0438\u043b\u044f\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f opacity, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u043d\u0430\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \r\n:before. \u041f\u0441\u0435\u0432\u0434\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0438 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0415\u043c\u0443 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438 opacity, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u043d \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0430\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e z-index: -1. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c \u043f\u043b\u0430\u043d\u0435 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c.\r\n\r\n\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 HTML-\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c:\r\n\r\n<div class=\"element\"> <h2>\u042d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \r\n\u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c<\/h2> <\/div>\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0442\u0438\u043b\u0438 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \r\n\u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:\r\n\r\n.element { position: relative; padding: 20px; } .element::before { content: \r\n''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #3498db; opacity: 0.2; z-index: -1; }\r\n\r\n\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b opacity: rgba() \u0438 hsla()\r\n\r\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u043d, \r\n\u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u2014 \u043d\u043e \u043d\u0435 \u0432\u0435\u0441\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 rgba() \u0438 hsla(). \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 opacity, \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, background \u0438\u043b\u0438 color), \u043d\u0435 \u0432\u043b\u0438\u044f\u044f \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439.\r\n\r\n\u0424\u0443\u043d\u043a\u0446\u0438\u044f rgba() \u0437\u0430\u0434\u0430\u0451\u0442 \u0446\u0432\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043a\u0440\u0430\u0441\u043d\u044b\u0439 (red), \r\n\u0437\u0435\u043b\u0451\u043d\u044b\u0439 (green) \u0438 \u0441\u0438\u043d\u0438\u0439 (blue) \u043a\u0430\u043d\u0430\u043b\u044b \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 255. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 (\u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b) \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 (\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439) \u0434\u043e 1 (\u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439).\r\n\r\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, rgba(52, 152, 219, 0.5) \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0438\u043d\u0438\u0439 \u0446\u0432\u0435\u0442 \r\n\u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e 50%. \u0421 rgba() \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c\u0438 \u0444\u043e\u043d, \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.\r\n\r\n\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 HTML-\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442:\r\n\r\n<div class=\"element\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0435\u043a\u0441\u0442\u0430<\/div>\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u0442\u0438\u043b\u0438 \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \r\n\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:\r\n\r\nbody { background: #333; \/* \u0422\u0451\u043c\u043d\u044b\u0439 \u0444\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b *\/ } .element \r\n{ background: rgba(52, 152, 219, 0.7); \/* \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0441\u0438\u043d\u0438\u0439 \u0444\u043e\u043d *\/ color: rgba(0, 0, 0, 0.8); \/* \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0447\u0451\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 *\/ border: 2px solid rgba(255, 255, 255, 0.5); \/* \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f \u0431\u0435\u043b\u0430\u044f \u0440\u0430\u043c\u043a\u0430 *\/ }\r\n\r\n\u0424\u0443\u043d\u043a\u0446\u0438\u044f hsla() \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \r\n\u043c\u043e\u0434\u0435\u043b\u044c HSL: \u043e\u0442\u0442\u0435\u043d\u043e\u043a \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 (0\u2013360), \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u2014 \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 (0\u2013100%), \u0430 \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c.\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0432 \u0441\u0442\u0438\u043b\u044f\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \r\n\u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 .element:\r\n\r\n.element { background: hsla(210, 70%, 53%, 0.7); \/* \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \r\n\u0441\u0438\u043d\u0438\u0439 \u0444\u043e\u043d *\/ color: hsla(0, 0%, 0%, 0.8); \/* \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0447\u0451\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 *\/ border: 2px solid hsla(0, 0%, 100%, 0.5); \/* \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f \u0431\u0435\u043b\u0430\u044f \u0440\u0430\u043c\u043a\u0430 *\/ }\r\n\r\n\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 opacity \u2014 \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0439 \r\n\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u0421 rgba() \u0438 hsla() \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u043d \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c, \u0430 \u0442\u0435\u043a\u0441\u0442, \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438: \u043e\u043d\u0438 \u043d\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0435 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0431\u0435\u043b\u044b\u0439 \u0444\u043e\u043d (rgba(255, 255, 255, 0.3)), \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 backdrop-filter: blur (10px) \u0438 \u043b\u0451\u0433\u043a\u0443\u044e \u0442\u0435\u043d\u044c, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u043c\u0430\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u043b\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0435\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0447\u0451\u0442\u043a\u0438\u043c \u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \r\n\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443:\r\n\r\n<div class=\"card\"> <h3>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438<\/h3> \r\n<p>\u0422\u0435\u043a\u0441\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c<\/p> <button type=\"button\">\u041a\u043d\u043e\u043f\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/button> <\/div>\r\n\r\n\u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0438\u043b\u0438 \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \r\n\u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:\r\n\r\nbody { background: #008001; margin: 0; padding: 40px; font-family: Arial, \r\nsans-serif; display: flex; justify-content: center; } .card { background: #c0dabc; padding: 30px; border-radius: 15px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); width: 100%; max-width: 600px; } h3 { color: #333; margin-top: 0; margin-bottom: 15px; font-size: 18px; } p { color: #333; line-height: 1.6; margin-bottom: 20px; font-size: 14px; } button { background: #5a8c5a; color: white; border: none; padding: 10px 20px; border-radius: 8px; cursor: pointer; font-size: 14px; } button:hover { background: #4a7a4a; }\r\n\r\nOpacity \u0432 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u0445 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0445\r\n\r\n\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \r\n\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0447\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439: \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043b\u0430\u0432\u043d\u044b\u043c\u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u0441\u043b\u0430\u0431\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445.\r\n\r\n\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \r\n\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 transition. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0435\u0442 opacity: 0.3, \u0430 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 opacity: 1. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434.\r\n\r\nHTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430:\r\n\r\n<div class=\"pulsing-element fade-element\"> ? <\/div>\r\n\r\nCSS-\u0441\u0442\u0438\u043b\u0438:\r\n\r\nbody { display: flex; justify-content: center; align-items: center; min-height: \r\n100vh; margin: 0; background: #f5f5f5; font-family: Arial, sans-serif; } .fade-element { opacity: 0.3; transition: opacity 0.3s ease-in; padding: 30px 50px; background: #3498db; color: white; font-size: 18px; border-radius: 8px; cursor: pointer; } .fade-element:hover { opacity: 1; }\r\n\r\n\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \r\nCSS-\u043f\u0440\u0430\u0432\u0438\u043b\u043e @keyframes. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0443\u043b\u044c\u0441\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u0442 1 \u0434\u043e 0.5 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e animation \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439.\r\n\r\n\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0438\u043b\u0438 \r\n\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:\r\n\r\nbody { display: flex; justify-content: center; align-items: center; min-height: \r\n100vh; margin: 0; background: #f0f0f0; } .pulsing-element { display: flex; align-items: center; justify-content: center; width: 80px; height: 80px; color: white; cursor: pointer; background: #3498db; border: none; border-radius: 50%; animation: pulse 2s infinite; } @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } }\r\n\r\n\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \r\n\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u0430\u043a\u0443\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u0447\u0430\u0441\u0442\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044e\u0442 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \r\n\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0447\u0435\u0440\u0435\u0437 transform: scale(), \u0442\u043e \u0443 \u0432\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430 \u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0438\u043c\u044b\u043c.\r\n \r\n\u0418\u0437-\u0437\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 GIF-\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0432 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043b\u0430\u0432\u043d\u043e \u2014 \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0438 \u0440\u044b\u0432\u043a\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0438 \u043f\u043b\u0430\u0432\u043d\u0435\u0435\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c, \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u043f\u0443\u0441\u0442\u043e\u0439 \r\nHTML-\u0444\u0430\u0439\u043b:\r\n\r\n<!DOCTYPE html> <html lang=\"ru\"> <head> <meta charset=\"UTF-8\"> \r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> <title>\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439<\/title> <style> body { display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background: #f0f0f0; font-family: Arial, sans-serif; } .modal { opacity: 0; transform: scale(0.8); transition: opacity 0.3s ease-out, transform 0.3s ease-out; background: white; padding: 40px; border-radius: 12px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); max-width: 400px; } .modal.show { opacity: 1; transform: scale(1); } .modal h2 { margin-top: 0; color: #333; } .modal p { color: #666; line-height: 1.6; } .modal button { background: #3498db; color: white; border: none; padding: 10px 20px; border-radius: 6px; cursor: pointer; font-size: 14px; margin-top: 20px; } .modal button:hover { background: #2980b9; } .trigger-btn { position: fixed; top: 20px; left: 20px; background: #3498db; color: white; border: none; padding: 12px 24px; border-radius: 6px; cursor: pointer; font-size: 16px; } .trigger-btn:hover { background: #2980b9; } <\/style> <\/head> <body> <button class=\"trigger-btn\" onclick=\"toggleModal()\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e<\/button> <div class=\"modal\" id=\"modal\"> <h2>\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e<\/h2> <p>\u042d\u0442\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c \u043f\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438.<\/p> <button onclick=\"toggleModal()\">\u0417\u0430\u043a\u0440\u044b\u0442\u044c<\/button> <\/div> <script> function toggleModal() { const modal = document.getElementById('modal'); modal.classList.toggle('show'); } <\/script> <\/body> <\/html>\r\n\r\n\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 ease-in, ease-out \u0438\u043b\u0438 linear \u2014 \r\n\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041f\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 (ease-in) \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435 (ease-out) \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f. \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 opacity \u0438 transform, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u0438\u0445 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (GPU).\r\n \r\n\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \r\n\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 transition-delay. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443: \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 0,1 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 0,2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0442\u0440\u0435\u0442\u0438\u0439 \u2014 0,3 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043a\u043b\u0430\u0441\u0441 .show \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443, \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u2014 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u043e\u043b\u043d\u044b. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0412\u043e\u0442 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \r\n\u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0441\u043f\u0438\u0441\u043e\u043a:\r\n\r\n<button onclick=\"showList()\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a<\/button> \r\n<ul class=\"list-container\"> <li class=\"list-item\">\u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/li> <li class=\"list-item\">\u0412\u0442\u043e\u0440\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/li> <li class=\"list-item\">\u0422\u0440\u0435\u0442\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/li> <\/ul>\r\n\r\nCSS-\u0441\u0442\u0438\u043b\u0438:\r\n\r\n.list-item { padding: 10px; background: #f0f0f0; margin: 5px 0; border-radius: \r\n4px; opacity: 0; transition: opacity 0.3s ease-out; } .list-item:nth-child(1) { transition-delay: 0.1s; } .list-item:nth-child(2) { transition-delay: 0.2s; } .list-item:nth-child(3) { transition-delay: 0.3s; } .list-container.show .list-item { opacity: 1; }\r\n\r\n\u0422\u0430\u043a\u0436\u0435 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e JavaScript:\r\n\r\nfunction showList() { document.querySelector(\".list-container\").classList.add(\"show\"); \r\n}\r\n\r\n\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 visibility \u0438 display\r\n\r\n\u0412 CSS \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043a\u0440\u044b\u0442\u044c \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435: opacity, visibility \u0438 display. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447.\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity: 0 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c, \r\n\u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u044b\u0448\u0438, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0444\u043e\u043a\u0443\u0441 \u043f\u0440\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432.\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e visibility: hidden \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043f\u043e\u0442\u043e\u043a\u0435, \u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u044b\u0448\u0438, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0444\u043e\u043a\u0443\u0441 \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432.\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e display: none \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \r\n\u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u2014 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u043e \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0438 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432.\r\n\r\n\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438\r\n\r\n\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 opacity: 0 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \r\n\u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432 \u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0440\u044b\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442 \u0437\u0440\u044f\u0447\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\r\n\r\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \r\n\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c: \u043e\u043d\u0438 \u043e\u0437\u0432\u0443\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b, \u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u0440\u044b\u0442\u044b \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0435\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043e \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \r\n\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u043e\u043a\u0443\u0441 \u043d\u0430 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u0430\u0441\u0441\u0438\u0441\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439.\r\n\r\n\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0430\u0441\u0441\u0438\u0441\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f ARIA-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0445 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u043a\u043e\u0434 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0434 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u2014 \u0447\u0442\u043e\u0431\u044b \u0432 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 .\r\n\r\n<!-- \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \r\n\u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432 --> <div class=\"status-message\" style=\"opacity: 0;\"> \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <\/div> <!-- \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c \u0438 \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043d\u0440\u0438\u0434\u0435\u0440\u043e\u0432 \u0442\u043e\u0436\u0435 --> <div class=\"decorative-overlay\" style=\"opacity: 0;\" aria-hidden=\"true\"> \u0414\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <\/div>\r\n\r\n\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \r\n\u0432\u0430\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043e\u043c \u0432 \u0432\u0438\u0434\u0438\u043c\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041a\u043d\u043e\u043f\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b \u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0444\u043e\u043d\u0430\u0445 \u0438\u043b\u0438 \u043f\u0440\u0438 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0427\u0435\u043c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0435\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0442\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0435\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c. \u042d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u0445, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u044f\u0440\u043a\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430\u0445 \u0441 \u043d\u0438\u0437\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0446\u0432\u0435\u0442\u043e\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438.\r\n \r\n\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0445: \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 \r\n\u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u044e\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u044e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u0441 opacity: 0.5 \u043d\u0430 \u0441\u0432\u0435\u0442\u043b\u043e\u043c \u0444\u043e\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u0442\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u0442\u0435\u043a\u0441\u0442 \u0432 \u043d\u0451\u043c \u0441\u0442\u0430\u043d\u0435\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u0449\u0443\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u0432\u0451\u043b email.\r\n\r\n\u0414\u043b\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u043e\u043d, \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \r\n\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u0441\u043e\u0447\u0435\u0442\u0430\u0442\u044c opacity \u0441 pointer-events. \u0412 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 opacity: 0 \u0438 pointer-events: none \u2014 \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0438 \u043d\u0435\u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043a\u043b\u0438\u043a\u0438. \u041f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f opacity: 1 \u0438 pointer-events: auto \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c.\r\n\r\n\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e\r\n\r\n\u041d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \r\n\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c, \u0447\u0435\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442: \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c.\r\n\r\n\/* \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 \u0442\u0430\u043a \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 *\/ .parent \r\n{ opacity: 0.3; } .child { opacity: 1; \/* \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c *\/ }\r\n\r\n\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c rgba() \r\n\u0434\u043b\u044f \u0444\u043e\u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e opacity \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 HTML \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f.\r\n\r\n\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e rgba():\r\n\r\n.parent { background: rgba(52, 152, 219, 0.3); } .child { \/* \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c *\/ }\r\n\r\n\u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \r\n\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0444\u043e\u043d\u0443, \u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c.\r\n\r\n<div class=\"wrapper\"> <!-- \u042d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \r\n\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u0444\u043e\u043d \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c --> <div class=\"background\"><\/div> <!-- \u0410 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c --> <div class=\"content\"> <p>\u042d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c<\/p> <\/div> <\/div>\r\n\r\n\u041e\u0448\u0438\u0431\u043a\u0438 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \r\n\u0441 opacity, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043e\u0442 1, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c z-index \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0439\u0442\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u2014 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 z-index \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.\r\n\r\n\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \r\n\u0447\u0442\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438, \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043c\u0435\u043d\u044e, \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0438\u043b\u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0431\u044b\u0442\u044c \u043d\u0438\u0436\u0435.\r\n\r\n\/* \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 popup \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044c \r\noverlay *\/ .overlay { position: absolute; opacity: 0.9; \/* \u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f *\/ z-index: 10; } .popup { position: absolute; z-index: 20; \/* \u041d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0435\u0442 overlay, \u0435\u0441\u043b\u0438 \u0432\u043b\u043e\u0436\u0435\u043d \u0432\u043d\u0443\u0442\u0440\u044c \u043d\u0435\u0433\u043e *\/ }\r\n\r\n\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \r\n\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.\r\n\r\n\u0422\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435:\r\n\r\n<!-- \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 popup \u0438 overlay \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \r\n--> <div class=\"page\"> <div class=\"content-with-overlay\"> <div class=\"overlay\"><\/div> <div class=\"content\">\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442<\/div> <\/div> <div class=\"popup\">\u0412\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e<\/div> <\/div>\r\n\r\n\u0422\u0430\u043a\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f:\r\n\r\n.overlay { position: absolute; opacity: 0.9; z-index: 10; } .popup { position: \r\nfixed; \/* \u0418\u043b\u0438 absolute \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e .page *\/ z-index: 20; \/* \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 *\/ }\r\n\r\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \r\n\u043f\u0441\u0435\u0432\u0434\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f opacity \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443:\r\n\r\n.overlay { position: relative; \/* \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \r\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f *\/ } .overlay::before { content: ''; position: absolute; inset: 0; background: black; opacity: 0.9; \/* \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0444\u043e\u043d\u0430 *\/ z-index: -1; } .popup { position: absolute; z-index: 20; \/* \u041f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b *\/ }\r\n\r\n\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \r\n\u0444\u043e\u043d\u0430, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442 \u0441 \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b\u043e\u043c (rgba \u0438\u043b\u0438 hsla) \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 opacity. \u0422\u0430\u043a \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u043d, \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.\r\n\r\n\/* \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \r\n*\/ .overlay { position: absolute; background: rgba(0, 0, 0, 0.9); \/* \u0412\u043c\u0435\u0441\u0442\u043e opacity *\/ z-index: 10; } .popup { position: absolute; z-index: 20; \/* \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f *\/ }\r\n\r\n\u041d\u0435\u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u0442\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u043b\u0438 \u0441\u043e\u0442\u043d\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e opacity \u0431\u0435\u0437 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0434\u0451\u0440\u0433\u0430\u0442\u044c\u0441\u044f. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044e \u0446\u0432\u0435\u0442\u043e\u0432 (\u0430\u043b\u044c\u0444\u0430-\u0431\u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430) \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.\r\n\r\n\/* \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 \u0431\u0435\u0437 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u043b\u0430\u0433\u0430\u0442\u044c \r\n*\/ .many-items { opacity: 0; transition: opacity 0.3s; }\r\n\r\n\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \r\n\u0447\u0442\u043e\u0431\u044b \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 will-change \u0438\u043b\u0438 transform: translateZ (0). \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u0435\u0437 \u043b\u0430\u0433\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u043e\u043a.\r\n\r\n\/* \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \r\n*\/ .many-items { opacity: 0; transition: opacity 0.3s; will-change: opacity; \/* C\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 *\/ } \/* \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 *\/ .many-items-legacy { opacity: 0; transition: opacity 0.3s; transform: translateZ(0); \/* \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 *\/\r\n\r\n\u0422\u0430\u043a\u0436\u0435 \u0432\u0430\u0436\u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c will-change \r\n\u043f\u0435\u0440\u0435\u0434 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0435\u0451 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f: \u0442\u0430\u043a \u0432\u044b \u0438\u0437\u0431\u0435\u0436\u0438\u0442\u0435 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043b\u0438\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.\r\n\r\n\/\/ \u041f\u0435\u0440\u0435\u0434 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c will-change function \r\nfadeIn(el) { el.style.willChange = 'opacity'; \/\/ \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f requestAnimationFrame(() => { el.classList.add('show'); \/\/ \u0412 CSS: .show { opacity: 1; } }); \/\/ \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u043c will-change el.addEventListener('transitionend', function onEnd() { el.style.willChange = 'auto'; el.removeEventListener('transitionend', onEnd); }); }\r\n\r\n\u041b\u0430\u0439\u0444\u0445\u0430\u043a: \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \r\n\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\n\r\n\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 opacity \u2014 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 \u043d\u0438\u0437\u043a\u043e\u0439 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0430\u0441\u0442\u043e \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0438\u0445 \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u0448\u0430\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c.\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \r\n\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 .debug, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b:\r\n\r\n<!-- \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043b\u0430\u0441\u0441 \r\ndebug --> <div class=\"container debug\"> <div class=\"opacity-element\"> \u042d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043e\u0431\u0432\u043e\u0434\u043a\u043e\u0439. <\/div> <\/div>\r\n\r\nCSS-\u0441\u0442\u0438\u043b\u0438:\r\n\r\n\/* \u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 *\/ .opacity-element { opacity: 0.2; background: \r\nrgba(255, 0, 0, 0.1); } \/* \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 debug-\u043a\u043b\u0430\u0441\u0441 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 *\/ \/* !important \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0431\u0438\u0442\u044c inline-\u0441\u0442\u0438\u043b\u0438 \u0438 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0441\u0442\u044c *\/ .debug .opacity-element { outline: 2px dashed red !important; background: rgba(255, 0, 0, 0.1) !important; }\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \r\n\u043a\u043b\u0430\u0441\u0441 .debug \u0438\u0437 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438:\r\n\r\n<!-- \u041f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441 debug --> \r\n<div class=\"container\"> <div class=\"opacity-element\"> \u042d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043e\u0431\u0432\u043e\u0434\u043a\u043e\u0439. <\/div> <\/div>\r\n\r\n\u0410 \u0432\u043e\u0442 CSS-\u043f\u0440\u0430\u0432\u0438\u043b\u043e .debug .opacity-element \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \r\n\u0432 \u0444\u0430\u0439\u043b\u0435. \u0415\u0441\u043b\u0438 \u0432 HTML \u043d\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 .debug, \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0417\u0430\u0442\u043e \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043e\u043d\u043e \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u0422\u043e\u043b\u044c\u043a\u043e \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u0443\u0441\u043a\u0430 \u043a\u043e\u0434\u0430.\r\n\r\n\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430: \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0441 \u043f\u043b\u0430\u0432\u043d\u044b\u043c \r\n\u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0435 \r\n\u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u0433\u0434\u0435 \u0432\u0430\u0436\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.\r\n\r\n\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \r\n\u0442\u0440\u0451\u0445 CSS-\u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438: opacity \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u043d\u044e, pointer-events \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043a\u043b\u0438\u043a\u0438 \u043f\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c, \u0430 transform \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0438. \u041f\u0443\u043d\u043a\u0442\u044b \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u043a\u0430\u0441\u043a\u0430\u0434\u0430.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Google Chrome \/ Skillbox Media\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u043d\u044e, \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \r\n\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0432 \u043f\u0443\u0441\u0442\u043e\u0439 HTML-\u0444\u0430\u0439\u043b \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:\r\n\r\n<!DOCTYPE html> <html lang=\"ru\"> <head> <meta charset=\"UTF-8\" \r\n\/> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/> <title>\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e<\/title> <style> body { margin: 0; font-family: Arial, sans-serif; background: #f6f8fb; padding: 50px 20px; } \/* \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043c\u0435\u043d\u044e *\/ .main-navigation { position: relative; max-width: 560px; } \/* \u041a\u043d\u043e\u043f\u043a\u0430 \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439 \u2630 *\/ .menu-toggle { width: 44px; height: 44px; background: #4c9aff; color: white; border: none; border-radius: 10px; font-size: 22px; cursor: pointer; } .menu-toggle:hover { background: #3a89f0; } \/* \u0421\u0430\u043c\u043e \u043c\u0435\u043d\u044e (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u043e) *\/ .menu-items { list-style: none; margin: 12px 0 0; padding: 0; position: absolute; top: 100%; left: 0; right: 0; background: white; border-radius: 12px; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1); \/* \u0414\u0435\u043b\u0430\u0435\u043c \u043c\u0435\u043d\u044e \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0438 \u043d\u0435\u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c *\/ opacity: 0; pointer-events: none; transform: translateY(-10px); \/* \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0432\u0432\u0435\u0440\u0445 *\/ transition: opacity 0.3s ease, transform 0.3s ease; } \/* \u0421\u0442\u0438\u043b\u0438 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044e (\u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 open) *\/ .main-navigation.open .menu-items { opacity: 1; pointer-events: auto; \/* \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u0430\u0442\u044c *\/ transform: translateY(0); \/* \u041e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430 \u043c\u0435\u0441\u0442\u043e *\/ } .menu-items li { border-bottom: 1px solid #f0f0f0; } .menu-items li:last-child { border-bottom: none; } .menu-items a { display: block; padding: 14px 20px; color: #333; text-decoration: none; opacity: 0; transform: translateX(-20px); transition: opacity 0.3s ease, transform 0.3s ease, background 0.2s ease; } .main-navigation.open .menu-items a { opacity: 1; transform: translateX(0); } \/* \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 *\/ .main-navigation.open .menu-items li:nth-child(1) a { transition-delay: 0.06s; } .main-navigation.open .menu-items li:nth-child(2) a { transition-delay: 0.12s; } .main-navigation.open .menu-items li:nth-child(3) a { transition-delay: 0.18s; } .main-navigation.open .menu-items li:nth-child(4) a { transition-delay: 0.24s; } .menu-items a:hover { background: #f5f9ff; color: #4c9aff; } <\/style> <\/head> <body> <nav class=\"main-navigation\"> <button class=\"menu-toggle\">\u2630<\/button> <ul class=\"menu-items\"> <li><a href=\"#home\">\u0413\u043b\u0430\u0432\u043d\u0430\u044f<\/a><\/li> <li><a href=\"#about\">\u041e \u043d\u0430\u0441<\/a><\/li> <li><a href=\"#services\">\u0423\u0441\u043b\u0443\u0433\u0438<\/a><\/li> <li><a href=\"#contact\">\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b<\/a><\/li> <\/ul> <\/nav> <script> \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 const nav = document.querySelector('.main-navigation'); const toggleButton = document.querySelector('.menu-toggle'); const menuLinks = document.querySelectorAll('.menu-items a'); \/\/ \u041a\u043b\u0438\u043a \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435 \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438\u043b\u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u043d\u044e toggleButton.addEventListener('click', function () { nav.classList.toggle('open'); }); \/\/ \u041a\u043b\u0438\u043a \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u2014 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u043d\u044e menuLinks.forEach(function (link) { link.addEventListener('click', function () { nav.classList.remove('open'); }); }); \/\/ \u041a\u043b\u0438\u043a \u043c\u0438\u043c\u043e \u043c\u0435\u043d\u044e \u2014 \u0442\u043e\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c document.addEventListener('click', function (event) { if (!nav.contains(event.target)) { nav.classList.remove('open'); } }); \/\/ \u041a\u043d\u043e\u043f\u043a\u0430 Escape \u2014 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u043d\u044e document.addEventListener('keydown', function (event) { if (event.key === 'Escape') { nav.classList.remove('open'); } }); <\/script> <\/body> <\/html>\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u0435\u043d\u044e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u0440\u044b\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\nopacity: 0 \u0438 pointer-events: none, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u043e \u0432\u0432\u0435\u0440\u0445 \u043d\u0430 10 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439 \u00ab\u2630\u00bb, JavaScript \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 open \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 CSS-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e: \u043c\u0435\u043d\u044e \u043f\u043b\u0430\u0432\u043d\u043e \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0432\u043e\u0451 \u043c\u0435\u0441\u0442\u043e (translateY (0)) \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c (opacity: 1). \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e pointer-events \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 auto \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043d\u043e\u0432\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u043a\u043b\u0438\u043a\u043e\u0432 \u043c\u044b\u0448\u044c\u044e.\r\n\r\n\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u043d\u044e \u0442\u0430\u043a\u0436\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \r\n\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430 (opacity: 0) \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0430 \u0432\u043b\u0435\u0432\u043e (translateX (-20px)). \u041f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043c\u0435\u043d\u044e \u043f\u0443\u043d\u043a\u0442\u044b \u043f\u043e\u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u0432\u044b\u0435\u0437\u0436\u0430\u044e\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u2014 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0440\u0430\u0437\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c transition-delay.\r\n\r\n\u041c\u0435\u043d\u044e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \r\n\u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u043e\u0432, \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043c\u0435\u043d\u044e, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 Escape \u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439 \u00ab\u2630\u00bb.\r\n\r\n\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \r\n\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435: \u043f\u0443\u043d\u043a\u0442\u044b \u043f\u043e\u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e \u0443\u0435\u0437\u0436\u0430\u044e\u0442 \u0432\u043b\u0435\u0432\u043e \u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442, \u0430 \u0441\u0430\u043c\u043e \u043c\u0435\u043d\u044e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 10 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c.\r\n\r\n\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438\r\n\r\n- MDN: CSS opacity \r\n \u2014 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 opacity.\r\n- MDN: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 CSS-\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \r\n \u2014 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u043b\u0430\u0432\u043d\u044b\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e transition.\r\n- MDN: CSS pointer-events \r\n \u2014 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.\r\n- web.dev: Animations Guide \u2014 \r\n\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 CSS-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439.\r\n\r\n\r\n\r\n \r\n\r\n\r\n\u0411\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e \u043a\u043e\u0434 \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u0430\u043d\u0430\u043b\u0435 \r\n . \u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c!\r\n\r\n\r\n\r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:\r\n\r\n- \u0421\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u044b \u0432 CSS: \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u043a\u0430\u043a \u043e\u043d\u0438 \r\n\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \r\n- \u0423\u0447\u0438\u043c\u0441\u044f \u0432\u0435\u0440\u0441\u0442\u0430\u0442\u044c \u0432 \u0441\u0435\u0442\u043a\u0435: \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0433\u0430\u0439\u0434 \r\n\u043f\u043e CSS Grid \r\n- \u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c JavaScript-\u043a\u043e\u0434: \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \r\n\u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043a\u043e\u0434\u0430 \r\n\r\n\r\n\r\n\r\n\r\n\r\n\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \r\n\u043f\u043e \u0442\u0440\u0451\u043c \u043e\u0441\u044f\u043c: \u0448\u0438\u0440\u0438\u043d\u0435 (X), \u0432\u044b\u0441\u043e\u0442\u0435 (Y) \u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 (Z). \u041e\u0441\u044c Z \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u0438.\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e `position: absolute` \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \r\n\u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0441 `position: relative` \u2014 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043a\u043d\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043d\u0435\u0442. \u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 `top`, `left`, `right` \u0438 `bottom`.\r\n\r\n\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e `z-index` \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 `position: absolute`, `fixed`, `relative` \u0438\u043b\u0438 `sticky`. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 `auto` (\u0440\u0430\u0432\u043d\u043e 0). \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0438\u0441\u043b\u043e, \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u043e\u043f\u043a\u0435 \u0441\u043b\u043e\u0451\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 `z-index: 10` \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 `z-index: 5`.","author":{"@type":"Person","name":"\u0420\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u00ab\u041a\u043e\u0434\u00bb Skillbox\u00a0Media","url":"https:\/\/skillbox.ru\/media\/authors\/code-skillbox-media\/"},"publisher":{"@type":"Organization","name":"Skillbox","logo":{"@type":"ImageObject","url":"https:\/\/skillbox.ru\/static\/images\/skillbox.png"}},"mainEntityOfPage":{"@type":"WebPage","url":"https:\/\/skillbox.ru\/media\/code\/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte\/"},"datePublished":"2025-11-11T07:17:00Z","dateModified":"2026-01-27T23:41:50Z","image":{"@type":"ImageObject","url":["https:\/\/248006.selcdn.ru\/main\/iblock\/1ee\/1ee6c1e96ab97936db19f1e28c0ebac1\/701b3ade88c213306a6831af66aaf5a4.jpg"]},"description":"\u0423\u0447\u0438\u043c\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b, \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043c\u044f\u0433\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438."}
</script><script data-skip-moving="true" id="FiMjZmipVK5U4ODg">if (window.relap) window.relap.ar('FiMjZmipVK5U4ODg');</script> </div>
<script>
window.Section_id = 10;
</script>
</div>
</main>
<footer class="without-buttons">
<div class="footer__wrapper container">
<div class="footer__firstgroup">
<section class="footer__contactbox">
<address class="footer__contacts">
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74951540915">8 (800) 500-05-22</a>
<span class="footer__phone-caption">Контактный центр</span>
</p>
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74952915987">+7(495) 291-59-87</a>
<span class="footer__phone-caption">Отдел заботы о пользователях</span>
</p>
<p class="footer__address"> Москва, Ленинский проспект, дом 6, строение 20</p>
</address>
<ul class="social-contacts footer__social">
<li>
<a class="social-contacts__item" href="https://vk.com/skillbox_education"
aria-label="Вконтакте">
<img src="/static/images/footer/soc_vk.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item"
href="https://www.youtube.com/channel/UC2FJq-Rr7v4SlKAoM7x0ZhA" aria-label="YouTube">
<img src="/static/images/footer/soc_tube.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item" href="tg://resolve?domain=skillboxru"
aria-label="Telegram">
<img src="/static/images/footer/soc_tg.svg"/>
</a>
</li>
</ul>
<div class="footer__age-limit">
16+
</div>
</section>
<section class="footer__rewardbox">
<ul class="rewards footer__rewards">
<li>
<span class="rewards__item">
<img src="/static/images/footer/footer_runet.svg" alt=""/>
<span>Премии Рунета</span>
<span>2018, 2019, 2020</span>
</span>
</li>
</ul>
</section>
</div>
<section class="footer__linksbox">
<ul class="links__list links__list--courses">
<li class="links__item links__item--header">Все направления</li>
<li class="links__item"><a href="/code/?utm_source=media&utm_medium=button&utm_campaign=footerlink_code&utm_term=footer">Программирование</a></li>
<li class="links__item"><a href="/design/?utm_source=media&utm_medium=button&utm_campaign=footerlink_design&utm_term=footer">Дизайн</a></li>
<li class="links__item"><a href="/marketing/?utm_source=media&utm_medium=button&utm_campaign=footerlink_marketing&utm_term=footer">Маркетинг</a></li>
<li class="links__item"><a href="/management/?utm_source=media&utm_medium=button&utm_campaign=footerlink_management&utm_term=footer">Управление</a></li>
<li class="links__item"><a href="/games/?utm_source=media&utm_medium=button&utm_campaign=footerlink_gamedev&utm_term=footer">Игры</a></li>
<li class="links__item"><a href="/multimedia/?utm_source=media&utm_medium=button&utm_campaign=footerlink_multimedia&utm_term=footer">Мультимедиа</a></li>
<li class="links__item"><a href="/psychology/?utm_source=media&utm_medium=button&utm_campaign=footerlink_psychology&utm_term=footer">Психология</a></li>
<li class="links__item"><a href="/general-development/?utm_source=media&utm_medium=button&utm_campaign=footerlink_general-development&utm_term=footer">Общее развитие</a></li>
<li class="links__item"><a href="/engineering/?utm_source=media&utm_medium=button&utm_campaign=footerlink_engineering&utm_term=footer">Инженерия</a></li>
<li class="links__item"><a href="/english/?utm_source=media&utm_medium=button&utm_campaign=footerlink_english&utm_term=footer">Английский язык</a></li>
<li class="links__item"><a href="/other/?utm_source=media&utm_medium=button&utm_campaign=footerlink_other&utm_term=footer">Другое</a></li>
</ul>
<ul class="links__list links__list--about">
<li class="links__item links__item--header">О Skillbox</li>
<li class="links__item"><a href="/company/?utm_source=media&utm_medium=button&utm_campaign=footerlink_aboutskillbox&utm_term=footer">О Платформе</a></li>
<li class="links__item"><a href="/career/?utm_source=media&utm_medium=button&utm_campaign=footerlink_careercentr&utm_term=footer"> Центр карьеры</a></li>
<li class="links__item"><a href="/otzyvy/?utm_source=media&utm_medium=button&utm_campaign=footerlink_testimonials&utm_term=footer">Отзывы</a></li>
<li class="links__item"><a href="/contacts/?utm_source=media&utm_medium=button&utm_campaign=footerlink_skillboxcontacts&utm_term=footer">Контакты</a></li>
<li class="links__item"><a href="/jobs/?utm_source=media&utm_medium=button&utm_campaign=footerlink_jobs&utm_term=footer">Вакансии</a></li>
<li class="links__item"><a href="/teachers/?utm_source=media&utm_medium=button&utm_campaign=footerlink_school&utm_term=footer">Школа кураторов</a></li>
<li class="links__item"><a href="/sale/free/?utm_source=media&utm_medium=button&utm_campaign=footerlink_free&utm_term=footer">Бесплатно</a></li>
<li class="links__item"><a href="/media/topic/tests/?utm_source=media&utm_medium=button&utm_campaign=footerlink_tests&utm_term=footer">Онлайн-тесты</a></li>
</ul>
<ul class="links__list links__list--webinar">
<li class="links__item links__item--header">Вебинары</li>
<li class="links__item"><a href="https://live.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_webinars&utm_term=footer" target="_blank" rel="noopener">Все вебинары</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/playlists/?utm_source=media&utm_medium=button&utm_campaign=footerlink_playlists&utm_term=footer" target="_blank" rel="noopener">Плейлисты</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/calendar/?utm_source=media&utm_medium=button&utm_campaign=footerlink_schedule&utm_term=footer" target="_blank" rel="noopener">Расписание</a></li>
</ul>
<ul class="links__list links__list--last">
<li class="links__item links__journal"><a href="/media/" target="_blank" rel="noopener">Медиа</a></li>
<li class="links__item"><a href="https://partners.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_partners&utm_term=footer" target="_blank" rel="noopener">Партнерская программа</a></li>
<li class="links__item"><a href="https://b2b.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_b2b&utm_term=footer" target="_blank" rel="noopener">Корпоративным клиентам</a></li>
<li class="links__item"><a href="https://career.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_employees&utm_term=footer" target="_blank" rel="noopener">Для работодателей</a></li>
</ul>
</section>
</div>
<div class="footer__underline container">
<span class="footer__copy">
© Skillbox, 2026 </span>
<div>
<span class="footer__oferta">
<a href="/oferta.pdf" target="_blank">Договор оферты</a>
</span>
<span class="footer__payment">
<a href="/payments/" target="_blank">Оплата</a>
</span>
<span class="footer__use-policy">
<a href="/terms_of_use.pdf" target="_blank">Правила пользования Платформой</a>
<a href="/privacy_policy.pdf" target="_blank">Политика конфиденциальности</a>
</span>
</div>
</div>
</footer>
<div class="cookies">
<p class="cookies__desc">
Пользуясь нашим сайтом, вы соглашаетесь с тем, что
<a href="https://skillbox.ru/privacy_policy.pdf" target="_blank" rel="noopener"
type="application/pdf">мы используем cookies</a> 🍪
</p>
<button type="button" class="cookies__button">
Окей
</button>
</div>
<div class="subscribe-popup subscribe">
<div class="subscribe-popup__spacer-mobile"></div>
<div class="subscribe-popup__row-content ">
<button class="subscribe__close"></button>
<div class="subscribe__content">
<div data-subscribe-popup-success class="hidden">
<h2 class="subscribe__header-success">Спасибо за подписку! Забирайте 5 бесплатных курсов:</h2>
<ul class="subscribe__list-block">
<li>Найти себя в IT за 5 дней</li>
<li>Как найти себя в дизайне в 2025 году</li>
<li>Интерьеры, мебель, ландшафт и декорирование</li>
<li>Интернет-маркетинг на практике</li>
<li>Бизнес-аналитик, продакт- и проджект-менеджер</li>
</ul>
<div class="subscribe__btns-el">
<a
target="_blank"
href="https://refer.id/?bot=skillbox_main_bot&platform=telegram&verbose_name=Skillbox&bot_avatar=https://designer.ftrcdn.com/uploads/bot_avatars/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png&n=137050&c=9209&bc_number=890&?utm_source=media&utm_medium=&utm_campaign=all_all_media_banners_invite_sbornik-890_all_bot_skillbox"
class="subscribe__el-btn">Получить доступ</a>
</div>
</div>
<div data-subscribe-popup-content>
<h2 class="subscribe__header">У нас есть классные рассылки!</h2>
<form action="/media/code/opacity-v-css-kak-upravlyat-prozrachnostyu-elementov-na-sayte/" class="newsletter-form page-subscription__form3" data-type="popup">
<input type="hidden" name="action" value="subscribe">
<div class="subscribe__checkboxes"></div>
<div class="subscribe__email email_popup">
<input class="subscribe-form__input" type="text" name="email" placeholder="Email" >
<span class="subscribe-form__label-name">Электронная почта</span>
<button type="submit" class="popup-btn-click">Подписаться</button>
<span class="email__error">Поле необходимо заполнить</span>
</div>
<div class="subscribe-popup__checkbox-end">
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data>
<div class="subscribe__checkbox">
<input type="checkbox" name="agreements[PERS]" id="isCheckTrue" value="1" data-checkbox-personal-data-input>
<label for="isCheckTrue"><span>Я согласен на <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/privacy_policy/version-290425.pdf">обработку персональных данных</a></span></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
<div class="subscribe__bottom">
<span>Нажимая на кнопку, я соглашаюсь с <a target="_blank" href="https://skillbox.ru/legal-docs/skillbox/file/terms_of_use/version-300824.pdf">правилами пользования Платформой</a></span>
</div>
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data-two>
<div class="subscribe__checkbox subscribe__checkbox--end" >
<input type="checkbox" name="agreements[ADS]" id="isAdsCalls" value="1" checked="" data-checkbox-personal-data-input-two>
<label for="isAdsCalls">Я согласен <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/soglasie-na-poluchenie-reklamy.pdf">получать рекламу и звонки</a></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- src="/static/images/articles/subscribe-popup-img.png" -->
</div>
<div class="bg-modal-overlay bg-modal-overlay--transparent"></div>
<script data-skip-moving="true" id="popup__data--formatted">
$(".popup-btn-click").on("click" , function (){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
let input = $(this).closest(".subscribe__email").find(".subscribe-form__input");
let inputValue = input.val();
if(emailPattern.test(inputValue)) {
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { rrApi.setEmail(inputValue);});
}
});
/*
window.popupData = {
"8": {
header: 'У нас есть классные рассылки про дизайн!!!',
category: 'Дизайн',
checkboxes: [
'Лучшие статьи про Дизайн',
'«Типографика без боли»'
]
},
"10": {
header: 'У нас есть классные рассылки про код',
category: 'Код',
checkboxes: [
'Лучшие статьи про Код и Людей кода',
'«Жизнь без багов»'
]
},
"18": {
category: 'Геймдев',
checkboxes: []
},
"21": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Бизнес',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"9": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Маркетинг',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"11": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Управление',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"17": {
category: 'Развитие',
checkboxes: []
},
"22": {
header: 'У нас есть классные рассылки про образование',
category: 'Образование',
checkboxes: [
'Лучшие статьи про Образование',
'«EdTech по полочкам»',
'«Мой успешный онлайн-курс»'
]
},
}
*/
window.popupData = {"header":"\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 - \u043d\u0430 \u043f\u043e\u0447\u0442\u0443!\u003Cbr\/\u003E\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438\u003Cbr\/\u003E\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 5 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432:","category":"\u041a\u043e\u0434","checkboxes":{"23":"\u041c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442","24":"\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433","26":"\u041a\u043e\u0440\u043f. \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","13":"\u0414\u0438\u0437\u0430\u0439\u043d","16":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","15":"\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","17":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0433\u0440","18":"\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e"},"code":"code","scroll":true};
window.subscribePopupShow = 1;
</script>
<div class="copied">
<img src="/static/images/articles/done-circle.svg" alt="" class="copied__icon">
<p class="copied__text">
Ссылка скопирована
</p>
</div>
<!-- <style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{box-sizing:border-box;text-decoration:none;display:none;min-height:48px;color:var(--banner-color);background-color:var(--banner-bg);overflow:hidden;font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.universal-notice *{box-sizing:inherit}.universal-notice.universal-notice--active{display:block}.universal-notice--bitrix{z-index:1000}.universal-notice__wrapper{position:relative;-webkit-box-pack:start;justify-content:flex-start;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;margin-left:12px;padding:4px 0}.universal-notice__title{position:relative;flex-shrink:0;width:132px;margin-right:27px;font-size:14px;line-height:20px;text-transform:uppercase}.universal-notice__timer{display:none;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.universal-notice__button{flex-shrink:0;min-width:120px;padding:8px 12px;border-radius:25px;font-weight:500;font-size:12px;line-height:16px;color:#3925b7;text-align:center;text-transform:uppercase;background-color:#ffa6a6}@media (min-width:768px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:768px) and (max-width:0px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:1280px) and (max-width:0px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}@media (min-width:1280px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}</style>-->
</body>
</html>