Чтобы создать эффект бесконечной горизонтальной прокрутки с помощью ключевых кадров CSS, вы можете использовать следующие методы:
Метод 1. CSS-анимация и ключевые кадры
- Создайте элемент-контейнер с фиксированной шириной и установите для свойства CSS
overflow-xзначение"scroll", чтобы включить горизонтальную прокрутку. - Внутри контейнера создайте дочерний элемент, который будет служить содержимым для прокрутки.
- Определите анимацию CSS, используя
@keyframes - Примените анимацию к элементу контента с помощью свойства
animation, указав бесконечную продолжительность и желаемую функцию синхронизации анимации.
Вот пример:
<style>
.container {
width: 100%;
overflow-x: scroll;
white-space: nowrap;
}
.content {
display: inline-block;
animation: scroll 10s infinite;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
</style>
<div class="container">
<div class="content">
<!-- Add your content here -->
</div>
</div>
Метод 2: CSS-переходы и JavaScript
- Настройте элемент-контейнер и дочерний элемент, как описано в методе 1.
- Используйте JavaScript, чтобы клонировать элемент контента и добавить его в контейнер, создавая плавный цикл.
- Примените переход CSS к родительскому контейнеру, анимируя свойство
transformдля достижения эффекта прокрутки.
Вот пример:
<style>
.container {
width: 100%;
overflow: hidden;
white-space: nowrap;
}
.content {
display: inline-block;
transition: transform 10s linear;
}
</style>
<div class="container">
<div class="content">
<!-- Add your content here -->
</div>
</div>
<script>
const container = document.querySelector('.container');
const content = document.querySelector('.content');
const clone = content.cloneNode(true);
container.appendChild(clone);
function scroll() {
container.scrollLeft++;
if (container.scrollLeft >= content.offsetWidth) {
container.scrollLeft = 0;
}
}
setInterval(scroll, 10);
</script>