Параллакс эффект на чистом CSS
Для создания простенького параллакс эффекта вполне можно обойтись и без использования сторонних плагинов и библиотек. Более того, для реализации несложного параллакс эффекта достаточно только CSS кода, используя 3d перспективу и псевдоэлемент.
HTML разметка
Вам потребуется тег шапки header, заголовок h1 и некий текст.
<header>
<h1>Параллакс эффект</h1>
<small>Только CSS, никакого JavaScript</small>
</header>
CSS стили
Свойство perspective задает элементу перспективу, а transform-style задает стиль трансформации. Эффект параллакс достигается за счет трансформации блоков с разной скоростью, что создает ощущение глубины. Эффекта глубины мы будем достигать с помощью 3d.
body {
margin: 0; /* обнуление полей */
padding: 0; /* обнуление отступов */
perspective: 1px;/* задание перспективы трансформации */
transform-style: preserve-3d; /* задание стиля трансформации */
overflow-y: scroll; /* разрешить скролл по вертикали */
overflow-x: hidden; /* спрятать все лишнее по горизонтали */
font-family: 'Pacifico', cursive; /* семейство шрифтов */
color: #fff; /* цвет текста */
}
header {
box-sizing: border-box; /* ширина рамок и отступов не влияют на ширину элемента */
min-height: 100vh; /* шапка занимает 100% первого экрана по высоте */
text-align: center;/* выравнивание по центру */
padding-top: 20%; /* поля со всех сторон */
transform-style: inherit; /* значение наследуется от родителя body */
width: 100vw; /* шапка занимает 100% ширины экрана */
font-size: 34px; /* размер шрифта */
}
Стили псевдоэлемента before являются ключевыми для достижения эффекта параллакс, который заключается в значениях свойства transform. Трансформация будет происходить по оси Z: фоновое изображение сдвинется на глубину в 1 пиксель. Фоновая картинка движется медленнее, чем заголовок.
header::before {
content: ''; /* условие отображения псевдоэлемента */
display: block; /* позиционирование псевдоэлемента */
position: absolute; /* позиционирование псевдоэлемента */
left: 0; /* левая координата */
right: 0; /* правая координата */
bottom: 0; /* нижняя координата */
top: 0;/* верхняя координата */
z-index: -1; /* расположение на нижнем слое */
transform-origin: center; /* направление трансформации из центра */
min-height: 100vh;/* 100% по высоте */
background-image: url('https://cdn.pixabay.com/photo/2020/12/22/12/38/cat-5852139_1280.jpg');
background-repeat: no-repeat; /* запрет на размножение фона */
background-size: cover; /* растянуть фон, сохраняя пропорции */
transition: 1s; /* плавный переход */
/* Параллакс */
transform: translateZ(-1px) scale(2);
}
header h1 {
margin-top: -100px;
font-size: 40px;
}
Посмотрите пример на CodePen
Если Вам не хватает знаний для лучшего восприятия этого урока, то посмотрите мой видеокурс "Верстка сайта с нуля 2.0".
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.