CSS и вёрстка

Как сделать красивый слайдер с анимацией css

Как сделать красивый слайдер с анимацией css 📅 ⏱ 21:10 ⏳ 1 мин 💬 0

Как сделать красивый слайдер с анимацией css: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решени

Как сделать красивый слайдер с анимацией css

Коротко: красивый слайдер на CSS собирают тремя способами: на scroll-snap с горизонтальной прокруткой, на @keyframes с автопрокруткой и на переключателях :checked с радио-кнопками. Плавность дают transition и transform.

Кому и зачемСлайдер — привычный элемент: баннеры на первом экране, галерея товаров, отзывы. Простой CSS-слайдер не требует библиотек, быстро грузится и легко настраивается под дизайн.

Три подхода

Способ Особенность
scroll-snap свайп и прокрутка, как в приложениях
@keyframes автоматическая смена кадров
:checked ручное переключение кнопками

Слайдер на scroll-snap

Самый удобный вариант для галерей: контейнер прокручивается по горизонтали, а снимок «прилипает» к кадру.

CSS
.slider {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
}
.slide {
  flex: 0 0 100%;
  scroll-snap-align: center;
}

Анимация автопрокрутки

CSS
.track {
  display: flex;
  animation: slide 12s infinite;
}
@keyframes slide {
  0%, 30%   { transform: translateX(0); }
  33%, 63%  { transform: translateX(-100%); }
  66%, 96%  { transform: translateX(-200%); }
  100%      { transform: translateX(0); }
}

Ключевые кадры задают паузы: кадр показывается несколько секунд, затем лента сдвигается на ширину слайда. Двигают именно transform — это быстрее и плавнее, чем left.

Вкладки: примеры настройки



CSS
.slide { opacity: 0; transition: opacity .6s; }
.slide.active { opacity: 1; }

Эффект затухания вместо сдвига. Кадры накладываются друг на друга через position: absolute, плавно меняется прозрачность.

CSS
.dot:checked + span {
  background: #003F8F;
  transform: scale(1.2);
}

Точки навигации на радио-кнопках: активная подсвечивается. Клик по точке переключает кадр без скриптов.

CSS
@media (max-width: 768px) {
  .slide { flex: 0 0 100%; }
}
@media (min-width: 769px) {
  .slide { flex: 0 0 33.33%; }
}

На мобильном — один кадр во всю ширину, на десктопе — три. Так галерея выглядит уместно на любом экране.

ВниманиеАвтопрокрутка раздражает, если её нельзя остановить. Добавьте паузу по наведению: .track:hover { animation-play-state: paused; }. И не запускайте тяжёлую анимацию сразу для больших фото — это бьёт по мобильным.

Практика: собрать слайдер

  1. Решите, нужен свайп, автопрокрутка или кнопки.
  2. Разметьте контейнер и кадры.
  3. Задайте гибкую ленту через display: flex.
  4. Настройте прокрутку или анимацию.
  5. Добавьте индикаторы-точки.
  6. Проверьте на мобильном и включите паузу при наведении.

Частые ошибки: причина → решение

Симптом Причина Решение
Кадры сжимаются нет flex-shrink flex: 0 0 100%
Прокрутка без «прилипания» нет scroll-snap задать тип и выравнивание
Анимация дёргается анимируется left анимировать transform
Точки не переключают label не связан проверить for и id
Слайдер выходит за экран фиксированная ширина использовать проценты

Проверьте себя

Чек-лист




Какое свойство даёт «прилипание» кадров?




Что лучше анимировать для плавности?




Вопросы и ответы

Да. Свайп-галерея работает на scroll-snap, автопрокрутка — на @keyframes, переключение стрелками — на радио и :checked. Скрипт нужен только для сложной логики.

У изображений не задан размер, поэтому страница перестраивается после их загрузки. Задайте высоту контейнеру и соотношение сторон картинкам.

Свойством animation-play-state: paused на :hover у ленты. Пользователь сможет спокойно рассмотреть кадр.

3–5. Больше не удерживает внимание, а автопрокрутка становится долгой. Важные кадры лучше вынести на статичные блоки, а не прятать в ленту.

Итоги

  • Слайдер собирают на scroll-snap, @keyframes или :checked.
  • Двигать нужно transform — это плавнее.
  • Кадрам задают flex: 0 0 100%, чтобы не сжимались.
  • Автопрокрутку ставят на паузу при наведении.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

Пока комментариев нет — будьте первым, кто поделится мнением.

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

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

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

Наш специалист сделает базовый аудит вашего проекта и предложит персональные предложения.

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт лендинг

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт каталог

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите интернет-магазин

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите веб-приложение

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость