Компактная, но функциональная CSS-Javascript - карусель, автоматически подстраивается к любой ширине экрана. Может одновременно показывать один или более одного элемента (количество настраивается). Обладает опциями зацикливания (бесконечного цикла) и автоматической прокрутки, которые можно отключить. Если опция зацикливания отключена, автопрокрутка отключается также. Скорость анимации и интервал между прокрутками элементов можно изменять, указав значения в миллисекундах. Навигация осуществляется стрелками, точками навигации, перелистыванием (для тактильных экранов). Любой из элементов навигации можно отключить.
В HTML-разметке можно использовать как теги ul-li, так и div-div (или div-p).
auto - Автоматическая прокрутка (если loop=true), true/false
interval - Интервал между прокруткой элементов (мс)
speed - Скорость анимации (мс)
touch - Использовать прокрутку прикосновением (для мобильных устройств), true/false
arrows - Использовать или нет прокрутку стрелками, true/false
dots - Показывать или нет точки навигации, true/false
В CSS-стилях нужно указать ширину элемента и максимальную ширину контейнера (с учётом того, что видимых элементов может быть несколько). Например, для трёх видимых элементов с шириной 270 px значения могут быть такими:
Предполагается, что все элементы имеют одинаковую ширину. Программой учитывается ширина только первого элемента. Желательно не использовать CSS-свойство margin, а использовать свойство padding, как на рисунке справа. Иначе при прокрутке могут наблюдаться небольшие рывочки. Зазоров между элементами не предусмотрено.
Все элементы построены в горизонтальную линейку (контейнер с CSS-свойством display: flex).При прокрутке влево последний элемент справа клонируется и подставляется первым слева при одновременном смещении линейки влево на ширину элемента (CSS-свойство margin-left изменяется от 0 px до отрицательного значения, равного ширине элемента в пикселях). Далее осуществляется плавная прокрутка всей линейки вправо при помощи CSS-свойства transition с плавным изменением margin-left из отрицательного значения до нуля, после чего последний элемент справа удаляется. Прокрутка вправо происходит в обратном порядке. CSS transition-timing-function применяется значение ease, при желании можно поменять на linear или ease-in-out, внеся исправления в соответствующих местах программы. Если зацикливание отключено, клонирование и перестановка не применяются, вся линейка просто смещается влево или вправо до крайних точек.
Стили, как обычно, подключаются в заголовке. Скрипт карусели можно подключить по наступлению события onload или в конце HTML-разметки.
Возможно размещение нескольких каруселей на одной странице, но тогда вызывать их нужно по идентификатору. Допускается, чтобы разные карусели имели разное количество элементов.
<div class="ant-carousel" id=“first”>
<!-- первая карусель -->
…
<div class="ant-carousel" id=“second”>
<!-- вторая карусель -->
…
<script>new Ant(“first”); new Ant(“second”);</script>
Более подробное описание карусели находится в моём посте на HABRAHABR
или на ITnan