Parallax scrolling: реализация простых эффектов с фиксированными фонами

Эффект параллакса: магия глубины на сайте 🌌

Parallax scrolling — это техника, которая создаёт иллюзию глубины, перемещая элементы страницы с разной скоростью. Сегодня разберём самый простой способ её реализации — с фиксированными фонами. Это лёгкий старт в мир динамичных интерфейсов!


Как работает параллакс с фиксированным фоном?

Суть эффекта:

  • Фоновое изображение остаётся на месте (background-attachment: fixed).
  • Контент страницы прокручивается поверх него.
  • Мозг воспринимает это как слои, движущиеся с разной скоростью.
.parallax-section {
  background-image: url("путь/к/изображению.jpg");
  background-attachment: fixed;
  background-position: center;
  background-size: cover;
  height: 100vh; /* Важно! */
}

💡 Совет: Используйте высококачественные изображения с чётким фокусом. Размытые или пёстрые картинки могут испортить эффект.


Практический пример: горный пейзаж 🏔️

Создадим раздел с параллакс-эффектом горного пейзажа:

<section class="mountain-parallax">
  <div class="content">
    <h2>Покоряйте вершины</h2>
    <p>Путешествуйте с нами по самым красивым местам планеты</p>
  </div>
</section>
.mountain-parallax {
  background-image: url("mountains.jpg");
  background-attachment: fixed;
  background-position: center;
  background-size: cover;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  text-align: center;
}

.content {
  background-color: rgba(0, 0, 0, 0.5);
  padding: 2rem;
  border-radius: 10px;
}

Многослойный параллакс 🌈

Усилим эффект, добавив несколько слоёв с разной скоростью прокрутки:

<div class="parallax-container">
  <div class="layer layer-1"></div>
  <div class="layer layer-2"></div>
  <div class="layer layer-3"></div>
  <div class="content">Приветствуем в нашем мире!</div>
</div>
.parallax-container {
  position: relative;
  height: 100vh;
  overflow: hidden;
}

.layer {
  position: absolute;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
}

.layer-1 {
  background-image: url("layer1.png");
  transform: translateZ(0);
}

.layer-2 {
  background-image: url("layer2.png");
  transform: translateZ(-2px);
}

.layer-3 {
  background-image: url("layer3.png");
  transform: translateZ(-5px);
}

.content {
  position: relative;
  z-index: 10;
}

Оптимизация производительности ⚡

Parallax эффекты могут снижать производительность. Вот как это исправить:

1. Всегда указывайте will-change: transform для анимируемых элементов:

.layer {
  will-change: transform;
}

2. Используйте аппаратное ускорение:

.parallax-section {
  transform: translate3d(0,0,0);
}

3. Оптимизируйте изображения:

  • Сжимайте без потери качества (используйте WebP)
  • Подбирайте оптимальные размеры

Альтернативы для мобильных устройств 📱

На мобильных устройствах background-attachment: fixed часто не работает правильно. Добавьте медиа-запрос:

@media (max-width: 768px) {
  .parallax-section {
    background-attachment: scroll;
    background-position: top center;
  }
}
Скрыть рекламу навсегда

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube