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,
},
});