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

  • Любое количество фотографий.
  • Произвольный радиус.
  • Автоматическое движение с заданной скоростью.
  • Отсутствие дополнительных библиотек.
  • Всего 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

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

Диагональная карусель фотографий управляемая движением мышки или пальца

Небольшой скрипт на jQuery реализующий слайдер со сменой по диагонали фотографий

jQuery плагин Vegas, его установка, настройки, анимация, методы, события и примеры

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

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

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

  • Влад:

    Добрый вечер. Подскажите пожалуйста, как добавить видео, целый день колдую, получается картинка по кругу, а видео внутри круга крутится или наоборот. Где-то что-то упускаю, но не пойму где.

    Ответить
    • Alexander:

      Не понял, как у вас задумано и что получилось, дайте ссылку на результат.

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

        https://vladschool.specialist-get.ru/Getvizitka

        Ответить
        • Alexander:

          Вы убрали ссылку, и заменили [b]A[/b] на [b]IMG [/b] (как у меня написано)
          А сами вставили [b]video[/b] вместе с картинками.

          Верните родителя, как была ссылка, и замените ее на [b]SPAN [/b]
          И соотв. поменять в стилях и скриптах [b]A[/b] на [b]SPAN [/b]

          Т.е., чтобы получилось:
          [code]<span><img src="/photo-small.jpg" alt="" /></span>[/code]

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

            https://vladschool.specialist-get.ru/Getvizitka
            Вернул ваши настройки и заменил переменные на "span"
            Файл с видео теперь крутится по кругу, но не отображается и не запускается. Соответственно оно не распознается как видео.

            Ответить
            • Alexander:

              Вот так у вас должно быть
              [code]<div id="carousel">
              <div id="drag-container">
              <div id="spin-container">
              <span><img src="photo1.jpg" alt="" /></span>
              <span><img src="photo2.jpg" alt="" /></span>
              <span><img src="photo3.jpg" alt="" /></span>
              <span><img src="photo4.jpg" alt="" /></span>
              <span><video src="video1.mp4" autoplay loop muted></video></span>
              <span><video src="video2.mp4" autoplay loop muted></video></span>
              <p>3D Carousel</p>
              </div>
              <div id="ground"></div>
              </div>
              </div>[/code]

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

                https://vladschool.specialist-get.ru/Getvizitka
                Теперь крутится и распознается, но масштаб не соответствует. Какая переменная отвечает за масштаб именно видео?

            • Alexander:

              Точно также как и с фото, те же стили
              Например:
              [code]#carousel video {
              width: 100%;
              height: 100%;
              object-fit: cover;
              }[/code]

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

                Большое спасибо!!!

            • Alexander:

              Я ошибся в классе, нужно [b]#carousel[/b], а не[del][b] .carousel[/b][/del]
              А вообще, видео для такой карусели должно быть 120х300px (или под горизонтальный формат переделать ее).
              Подумайте о размере не только в пикселях, но и мегабайтах.

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

                Спасибо, Александр. Я заметил и исправил сразу на #. Всё работает, эффектно смотрится! Большое спасибо за помощь!

  • Александр:

    Отличная карусель! Заработала сразу. Хорошо объяснена. Легко настраивается. Пока только не смог изменить первоначальный вертикальный наклон, чтобы надпись на дне с самого начала просматривалась полностью. Надеюсь на подсказку. Очередная "копеечка" за мной. Спасибо!

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

      Ура! Нашёл. Параметр "transform: rotateX(-10deg)"

      Ответить
  • Валентин:

    подскажите, возможно ли сделать не ссылками а указать путь к примеру data/gallery/image/ чтоб оттуда уже подгружались фотографии сами в разнобой,i = i || " "; не пойдет так как у меня фотографии создаются по времени timestamp() .

    Ответить
    • Alexander:

      А как у нас совпадет timestamp, который в именах файлов (создал сервер) с тем, который создался в браузере на JS ?
      На PHP сразу генерируйте HTML с нуждными фото и все.

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

    Добрый день, в Firefox при увеличении радиуса, качество картинки резко падает, как будто он увеличивает уменьшенный в начале js img. Chorme и Yandex отображает нормально. Не знаете как починить?

    Ответить
    • Alexander:

      Тут я не подскажу, так не должно быть, по идеи.
      Если картинка 1000 точек и уменьшена до 200, то при увеличении до 500, как она может остаться 200...
      Это уже тараканы браузера какие то.

      Ответить
  • Эмиль:

    Добрый день очень понравилось только вот установить не смог вот как встаёт [url="http://chatike.ru"]Чатик ФМ[/url][img]https://imgs.su/upload/675/1429015297.png[/img]

    Ответить
    • Alexander:

      Посмотрите пути к фотографиям

      Ответить
  • Антон:

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

    Ответить
    • Alexander:

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

      Ответить
  • Aza:

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

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

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

    Ответить
    • Alexander:

      Удаляем
      [code]setTimeout(init, 300);[/code]
      И в самый низ скрипта добавляем:
      [code]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);[/code]

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

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

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

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

    Ответить
    • Alexander:

      Ниже переменных, где задается радиус и размеры изображений, можно добавить:
      [code]if (window.innerWidth < 500) {
      radius = 200;
      imgWidth = 100;
      imgHeight = 160;
      }[/code]

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

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

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

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

    Ответить
    • Alexander:

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

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

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

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

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

    Ответить
    • Alexander:

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

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

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

        Ответить
        • Alexander:

          Напишите в ВК или Телеграм завтра.
          [url="https://atuin.ru/contacts/"]Контакты[/url]

          Ответить
  • PiVirus:

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

    Ответить