3D-карусель управляемая мышью

Возможности карусели:

  • Любое количество фотографий.
  • Произвольный радиус.
  • Автоматическое движение с заданной скоростью.
  • Отсутствие дополнительных библиотек.
  • Всего 90 строк кода.

Более подробно о настройках и вариантах карусели описано внизу страницы.

Пример:

Увеличение фотографий в модальных окнах в данное решение не входит и используется только для примера.

HTML:

Количество фотографий может быть любое.

CSS:

JS:

Где:

radius - Радиус карусели

autoRotate - Автоматическое вращение (true / false)

rotateSpeed - Скорость вращения

imgWidth - Ширина фотографии

imgHeight - Высота фотографии


Чтобы карусель вращалась зажатием и движением мыши в любом месте документа, а не только в ее контейнере, нужно заменитьcarousel.onpointerdown = function(e) {...} на document.onpointerdown = function(e) {...}


Если в карусели не используются ссылки, а только фотографии, то:

  • В HTML убираем ссылки
  • В CSS удаляем класс #drag-container img и заменяем #drag-container a на #drag-container img
  • В JS заменяем let aImg = ospin.getElementsByTagName("a"); на let aImg = ospin.getElementsByTagName("img");

У автора сделано одновременно оба варианта (с ссылкой и без), но в этом случае происходит конфликт в Firefox

Видео, которое также присутствует в оригинале, я удалил за ненадобностью, как и фоновую музыку.


Если нужно изменять радиус карусели колесом мыши, добавьте вниз скрипта:

3D Carousel на github

Смотрите также:

Добавить комментарий:

Ваш комментарий отправлен!

Комментарии:

  • Антон:

    Добрый день подскажите, можно ли сделать сразу две карусели на странице?

    Ответить
    • Alexander:

      В этом варианте нет, нужно менять JS

      Ответить
  • Aza:

    Доброго времени суток! Могу ли использовать карусель у себя в проекте?

    Ответить
  • Александр:

    Доброго времени суток и спасибо за контент! Как выпутаться с этим слайдером из ситуации что он разворачивается сразу. В том плане в середине страницы не будет эффекта раскидывания карт. Задержку ставить не понятно когда пользователь долистает. Это было бы идеальным решением, и возможно простым, но я до этого не допетрю)

    Ответить
    • Alexander:

      Удаляем

      setTimeout(init, 300);

      И в самый низ скрипта добавляем:

      let observer = new IntersectionObserver(function (entries, obs) {
          entries.forEach(function (entry) {
              if (!entry.isIntersecting) return;
              obs.unobserve(entry.target);
      		setTimeout(init, 300);
          });
      });
      observer.observe(carousel);
      Ответить
      • Александр:

        Блин одно дело с html css ковыряться, но такое понимать это добротные мозги нужны) Сайт пушка, за помощь респект, увижу рекламу с недвижкой кликну)

        Ответить
  • Олеся:

    Добрый вечер! Как как изменить радиус карусели для мобильной версии(радиус прописан в JS

    Ответить
    • Alexander:

      Ниже переменных, где задается радиус и размеры изображений, можно добавить:

      if (window.innerWidth < 500) {
      	radius = 200; 	
      	imgWidth = 100;
      	imgHeight = 160;
      }
      Ответить
      • Олеся:

        Спасибо Вам огромное! Всё работает!!!

        Ответить
  • Владимир:

    Доброго дня. Я так понимаю часть слайдера после нажатия с паузой и т.д сделана отдельно как то. Фото просто на черном экране увеличивается.

    Ответить
    • Alexander:

      Фото и должно так открываться.
      Тут для примера я подключил свою fancybox, у вас может использоваться другой лайтбокс или открываться по ссылкам не фото, а страницы.

      Ответить
      • Владимир:

        Спасибо понятно

        Ответить
  • Юлия:

    у меня не показывает изображения, в чём может быть проблема?

    Ответить
    • Alexander:

      Смотреть нужно, как я угодаю почему 🙂

      Ответить
      • Юлия:

        Можно с Вами по этому вопросу как-то связаться?

        Ответить
  • PiVirus:

    Шикарная карусель! Как всегда контент топовый у тебя 🙂

    Ответить