JSFiddle - React, Tailwind, and code Playground

by Lhankor_Mhy

HTML

<link rel="stylesheet" href="https://unpkg.com/@acab/reset.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
    ここに言語を入力
    <div class="swiper mySwiper p-mv-swiper">
        <div class="swiper-wrapper">
            <img class="swiper-slide" src="https://picsum.photos/id/237/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/238/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/239/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/240/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/241/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/242/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/243/200/300" alt="">
            <img class="swiper-slide" src="https://picsum.photos/id/244/200/300" alt="">
        </div>
    </div>

CSS

.p-mv-swiper {
            width: min(50vw, 75vh);
            padding-bottom: 25%;
        }

        .swiper-slide {
            border: solid calc(var(--slider-width)*10/800) white;
            box-shadow: 0 0 8px 0 rgba(#3338);
            object-fit: cover;
            transition: transform .5s;

        }

        .p-mv-swiper .swiper-slide-active {
            transform: translate3d(calc(var(--slider-width)*23/800), 59px, 0) rotate(-7deg) !important;
            z-index: 4;
        }

        .p-mv-swiper .swiper-slide-active+.swiper-slide {
            transform: translate3d(calc(var(--slider-width)*-217/800), 31px, 0) rotate(0deg) !important;
            z-index: 3;
        }

        .p-mv-swiper .swiper-slide-active+.swiper-slide+.swiper-slide {
            transform: translate3d(calc(var(--slider-width)*-417/800), 0px, 0) rotate(4deg) !important;
            z-index: 2;
        }

        .p-mv-swiper .swiper-slide-active+.swiper-slide+.swiper-slide+.swiper-slide {
            transform: translate3d(calc(var(--slider-width)*-613/800), 43px, 0) rotate(9deg) !important;
            z-index: 1;
        }

JavaScript

const targetSlider = document.querySelector('.p-mv-swiper');
        const slideWidthPx = getComputedStyle(targetSlider).width;
        targetSlider.style.setProperty('--slider-width', slideWidthPx);
        const slideWidth = parseFloat(getComputedStyle(targetSlider).width);

        const swiper = new Swiper('.swiper', {
            // slidesPerView: 1,
            width: slideWidth / 2.5,

            grabCursor: true,
            loop: true,
            autoplay: true,
            virtual: {
                enabled: true,
                addSlidesAfter: 4,
            },
        });