Я работаю с HTML и CSS. Помоги сделать анимацию в CSS. Даны шесть блоков, расположенные в один ряд на всю ширину страницы. Нужно сделать так, чтобы при нажатии на кнопку эти блоки бесконечно прокручивались друг за другом с одной стороны в другую. Пропадали в одной стороне и появлялись с другой стороны
html
<div class="container">
<div class="block">Блок 1</div>
<div class="block">Блок 2</div>
<div class="block">Блок 3</div>
<div class="block">Блок 4</div>
<div class="block">Блок 5</div>
<div class="block">Блок 6</div>
</div>
<button class="scroll-button">Прокрутить</button>
Затем добавим стили для контейнера и блоков.
css
.container {
display: flex;
overflow: hidden;
width: 100%;
}
.block {
width: 100px;
height: 100px;
margin: 10px;
background-color: #ccc;
}
В данном примере контейнер имеет фиксированную ширину, и блоки имеют фиксированный размер и отступы между ними.
Теперь добавим анимацию прокрутки блоков при нажатии на кнопку с помощью CSS и JavaScript.
css
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
В данном примере мы создали анимацию `scroll`, которая перемещает блоки влево на `100%` их ширины. Это позволит блокам пропадать слева и появляться справа.
css
.container {
...
animation-name: scroll;
animation-duration: 5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
.container:hover {
animation-play-state: paused;
}
Добавили свойство `animation-name` со значением `scroll`, чтобы применить ранее созданную анимацию. Свойство `animation-duration` задает продолжительность анимации в `5` секунд, `animation-iteration-count` устанавливает количество повторений анимации на `infinite` (бесконечность), а `animation-timing-function` устанавливает линейную функцию смены времени, чтобы анимация двигалась с постоянной скоростью.
Также добавили стили для наведения на контейнер — остановить анимацию при наведении курсора.
Заключительным шагом является добавление обработчика событий для кнопки, чтобы запустить или остановить анимацию.
js
const button = document.querySelector('.scroll-button');
const container = document.querySelector('.container');
button.addEventListener('click', () => {
if (container.style.animationPlayState === 'paused') {
container.style.animationPlayState = 'running';
} else {
container.style.animationPlayState = 'paused';
}
});
В этом примере мы используем метод `addEventListener` для прослушивания события `click` на кнопке. В обработчике события мы проверяем текущее состояние анимации и изменяем свойство `animationPlayState` у контейнера, чтобы запустить или остановить анимацию в зависимости от текущего состояния.
Теперь при нажатии на кнопку блоки начнут бесконечно прокручиваться друг за другом с одной стороны в другую.
Полный код HTML, CSS и JavaScript можно представить в виде одного файла:
html
<!DOCTYPE html>
<html>
<head>
<title>Анимация прокрутки блоков</title>
<style>
.container {
display: flex;
overflow: hidden;
width: 100%;
animation-name: scroll;
animation-duration: 5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
.container:hover {
animation-play-state: paused;
}
.block {
width: 100px;
height: 100px;
margin: 10px;
background-color: #ccc;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
</style>
</head>
<body>
<div class="container">
<div class="block">Блок 1</div>
<div class="block">Блок 2</div>
<div class="block">Блок 3</div>
<div class="block">Блок 4</div>
<div class="block">Блок 5</div>
<div class="block">Блок 6</div>
</div>
<button class="scroll-button">Прокрутить</button>
<script>
const button = document.querySelector('.scroll-button');
const container = document.querySelector('.container');
button.addEventListener('click', () => {
if (container.style.animationPlayState === 'paused') {
container.style.animationPlayState = 'running';
} else {
container.style.animationPlayState = 'paused';
}
});
</script>
</body>
</html>
Итак, это был пример того, как можно создать анимацию прокрутки блоков в CSS. Вы можете настроить размеры, отступы и другие стили в зависимости от ваших потребностей. Также вы можете варьировать продолжительность анимации и количество блоков.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет