Создание анимированных баннеров и многоязычность на сайте
· 10 мин. чтения
11 февраля 2026
Оглавление
- Введение
- Типы баннеров для сайта
- GSAP анимации
- Горизонтальные баннеры
- Вертикальные баннеры
- Баннеры с изображениями
- Профессиональные баннеры
- Многоязычность и автоматический перевод
- Практические примеры
- Заключение
1. Введение
Привлекательные баннеры с анимациями и многоязычностью повышают конверсию и улучшают пользовательский опыт. В этой статье мы рассмотрим:
- Создание различных типов баннеров
- GSAP анимации для профессионального вида
- Реализацию многоязычности с автоматическим переводом
- Практические примеры кода
2. Типы баннеров для сайта
2.1 По размеру
Горизонтальные:
- Стандартные (728x90)
- Широкие (970x250)
- Компактные (400x200)
Вертикальные:
- Боковые (160x600)
- Квадратные (250x250)
- Мини (200x200)
2.2 По назначению
| Тип | Цель | Пример |
|---|---|---|
| Hero banner | Главный призыв | "Начать проект" |
| CTA banner | Призыв к действию | "Скачать" |
| Info banner | Информация | "Новая функция" |
| Promo banner | Акция | "Скидка 50%" |
| Social proof | Отзывы | "Рейтинг 4.9" |
3. GSAP анимации
3.1 Почему GSAP?
Преимущества:
- Плавные анимации (hardware acceleration)
- Timeline-контроль
- Много готовых эффектов
- Production-ready
Установка:
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
3.2 Базовые анимации
Появление:
gsap.from('.banner', {
y: 30,
opacity: 0,
duration: 0.6,
delay: 0.2,
ease: 'power2.out'
});
Hover эффект:
banner.addEventListener('mouseenter', () => {
gsap.to(banner, { scale: 1.05, duration: 0.3 });
});
banner.addEventListener('mouseleave', () => {
gsap.to(banner, { scale: 1, duration: 0.3 });
});
Ротация текста:
const phrases = ['текст 1', 'текст 2', 'текст 3'];
let index = 0;
function changeText() {
gsap.to(element, {
opacity: 0, y: -20, duration: 0.3,
onComplete: () => {
index = (index + 1) % phrases.length;
element.textContent = phrases[index];
gsap.fromTo(element, { opacity: 0, y: 20 }, { opacity: 1, y: 0, duration: 0.3 });
}
});
}
setInterval(changeText, 3000);