Создание бесконечной бегущей строки с анимацией элементов внутри может быть реализовано с использованием CSS и JavaScript. Вот вдохновение для решения вашего вопроса:
### 1. Бесконечная бегущая строка
Чтобы добиться эффекта бесконечной бегущей строки, можно дублировать содержимое строки. Это позволит избежать "пробелов" в конце анимации. Разделим строку на два контейнера, которые будут двигаться параллельно.
### 2. Увеличение первого элемента
Для анимации изменения размера элемента при его уходе из видимости можно использовать CSS с помощью keyframes и соответствующих классов JavaScript, чтобы управлять состояниями элементов.
Вот пример:
```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 {
font-family: Arial, sans-serif;
overflow: hidden;
background-color: #f0f0f0;
}
.marquee {
display: flex;
white-space: nowrap;
animation: scroll 10s linear infinite;
}
.marquee-container {
display: flex;
animation: scroll 10s linear infinite;
}
.marquee-item {
padding: 10px;
transition: transform 0.5s;
}
.large {
transform: scale(1.5);
color: red;
}
@keyframes scroll {
from {
transform: translateX(100%);
}
to {
transform: translateX(-100%);
}
}
.marquee-wrapper {
overflow: hidden;
height: 50px;
position: relative;
}
</style>
</head>
<body>
<div class="marquee-wrapper">
<div class="marquee-container">
<div class="marquee" id="marquee">
<div class="marquee-item large" id="first-item">Первый элемент</div>
<div class="marquee-item">Второй элемент</div>
<div class="marquee-item">Третий элемент</div>
<div class="marquee-item">Четвертый элемент</div>
<div class="marquee-item">Пятый элемент</div>
</div>
<div class="marquee">
<div class="marquee-item large" id="first-item-copy">Первый элемент</div>
<div class="marquee-item">Второй элемент</div>
<div class="marquee-item">Третий элемент</div>
<div class="marquee-item">Четвертый элемент</div>
<div class="marquee-item">Пятый элемент</div>
</div>
</div>
</div>
<script>
const firstItem = document.getElementById('first-item');
const firstItemCopy = document.getElementById('first-item-copy');
const animationDuration = 10000; // Длительность анимации в миллисекундах
setInterval(() => {
firstItem.classList.remove('large');
firstItemCopy.classList.add('large');
setTimeout(() => {
firstItem.classList.add('large');
firstItemCopy.classList.remove('large');
}, animationDuration - 500); // Увеличение происходит за 9.5 секунды
}, animationDuration);
</script>
</body>
</html>
```
### Пояснения:
1. **Структура**:
- Используем `flexbox` для расположения элементов внутри `.marquee` и `.marquee-container`.
- Каждый элемент имеет класс `marquee-item`. Первый элемент имеет дополнительно класс `large` для увеличения при нахождении в видимой области.
2. **Анимация**:
- Используется CSS-анимация с `keyframes` для плавного перемещения строки.
- Дублируем `.marquee`, чтобы добиться эффекта бесконечности.
3. **JavaScript**:
- С помощью `setInterval` мы переключаем классы между элементами для работы с анимацией изменения размера.
Таким образом, вы получите бесконечную бегущую строку, которая плавно анимирует элементы. Вы можете дополнительно настроить скорости, размеры и стили по вашему желанию.