DevGang
Авторизоваться

Учебное пособие по CSS: Создание фона с бесконечной прокруткой Codepen разработан специально для начинающих пользователей

В этой статье я покажу вам, как создать эффект бесконечной прокрутки, используя изображение в качестве фона.  Для начала вам потребуется подключение к CSS и некоторое понимание селекторов. Мы будем использовать 2 класса и ключевые кадры для целей анимации.

Вам понадобится:

  • Редактор кода, я использую codepen
  • Изображение, я нашел его через Google

Это окончательный результат:

Codepen

HTML

Начнем с HTML. Я буду использовать 2 класса.

<div class="container">
  <div class="infinite-scrolling"></div>
</div>

Код HTML включает элемент div с классом container, который содержит другой элемент div с infinite-scrolling. Это обычная структура, используемая в веб-разработке для создания элемента-контейнера, содержащего другие элементы.

CSS

А теперь давайте сотворим немного волшебства!

Я определю container, а затем infinite-scrolling.

.container {
  overflow: hidden;
}

Код CSS устанавливает для свойства overflow элемента div контейнера значение hidden, что означает, что любое содержимое, выходящее за пределы размеров контейнера, будет скрыто от просмотра.

.infinite-scrolling {
  background: url("https://static.vecteezy.com/system/resources/previews/001/928/973/original/rural-nature-road-scene-free-vector.jpg") repeat-x;
  height: 645px;
  width: 5760px; /* The image width times 3 */
}

Класс с infinite-scrolling устанавливает фон элемента div на изображение, расположенное по URL-адресу, указанному в свойстве background. В этом случае изображение повторяется по горизонтали (repeat-x), чтобы создать эффект бесконечно прокручивающегося фона!

Свойство height класса с infinite-scrolling установлено на 645px, что определяет высоту фона прокрутки. Свойство width установлено равным 5760px, то есть ширине изображения, умноженной на 3, так что изображение повторяется три раза по горизонтали. (Итак, размер изображения, которое я выбрал, составляет 1920x645.)

Если вы не уверены, что понимаете приведенный выше блок кода, продолжайте читать этот раздел, иначе вы можете перейти к АНИМАЦИИ.

Свойство width класса .infinite-scrolling установлено равным 5760px, что в три раза превышает ширину фонового изображения. Это сделано для создания эффекта бесконечно прокручивающегося фона, который плавно повторяется.

Когда фоновое изображение повторяется с использованием значения repeat-x свойства background-repeat, изображение повторяется по горизонтали, чтобы заполнить ширину элемента контейнера. Установив ширину элемента .infinite-scrolling в три раза больше ширины фонового изображения, он гарантирует, что в любой момент времени на экране всегда будут видны три копии фонового изображения.

Когда фоновое изображение начинает прокручиваться справа налево, первая копия изображения исчезает с левого края экрана, а четвертая копия изображения становится видимой с правого края экрана, создавая иллюзию бесконечно прокручивающегося фона. Без установки width в три раза больше ширины фонового изображения эффект прокрутки не будет бесшовным, поскольку между концом первого изображения и началом второго изображения будет разрыв.

ANIMATION

И самое интересное! Добавим изучение анимации и саму анимацию. Нам нужно добавить еще одну строку в предыдущий класс CSS. Вот как это будет выглядеть.

.infinite-scrolling {
  background: url("https://static.vecteezy.com/system/resources/previews/001/928/973/original/rural-nature-road-scene-free-vector.jpg") repeat-x;
  height: 645px;
  width: 5760px; /* The image width times 3 */

  animation: slide 60s linear infinite;
}

Свойство animation класса с infinite-scrolling задает анимацию, называемую slide, которая длится 60 секунд (60s), воспроизводится линейно и повторяется бесконечно (infinite).

Далее нам нужно установить infinite.

@keyframes slide {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(-1920px, 0, 0); /* The image width */
  }
}

Правило @keyframes определяет анимацию slide, которая указывает, как фоновое изображение должно перемещаться по экрану.

  • Ключевой кадр 0% устанавливает начальное состояние анимации, то есть изображение не переведено (translate3d(0, 0, 0)).
  • Ключевой кадр 100% задает конечное состояние анимации, то есть изображение смещается на -1920px по оси X (translate3d(-1920px, 0, 0)), что эквивалентно ширине изображения. Это заставляет фоновое изображение перемещаться по экрану справа налево, создавая эффект бесконечной прокрутки фона.

Ты все еще здесь? Поздравляем, вы сделали это! У вас должно получиться что-то похожее:

Codepen

Подведем итог

В статье объясняется, как создать эффект бесконечной прокрутки, используя изображение в качестве фона веб-страницы. Он использует CSS для установки свойств фона и анимации, а также правило @keyframes для определения анимации слайдов. Если установить ширину элемента прокрутки в три раза больше ширины изображения, эффект прокрутки будет бесшовным. Так же вы модете узнать как  анимировать градиентный текст в CSS.

#CSS #Начинающим
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу