<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div class="slide-img zoom"><img src="images/swiper_img_01.jpg" alt=""></div>
<div class="slide-content">
<h1 class="from_top">Slide Title 01</h1>
<p>Lorem ipsum dolor sit amet, consectetur</p>
<div class="caption">caption 01</div>
</div>
</div><!-- end of .swiper-slide -->
<div class="swiper-slide">
<div class="slide-img translate1"><img src="images/swiper_img_02.jpg" alt=""></div>
<div class="slide-content">
<h2 class="from_left">Slide Title 02</h2>
<p class="from_right">Ipsa, quis ex repudiandae eum </p>
<div class="caption">caption 02</div>
</div>
</div><!-- end of .swiper-slide -->
<div class="swiper-slide">
<div class="slide-img translate2"><img src="images/swiper_img_03.jpg" alt=""></div>
<div class="slide-content">
<h3 class="from_bottom">Slide Title 03</h3>
<p>Ullam rerum quasi libero esse </p>
<div class="caption">caption 03</div>
</div>
</div><!-- end of .swiper-slide -->
</div><!-- end of .swiper-wrapper -->
<div class="swiper-pagination swiper-pagination-white"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div><!-- end of .swiper-container -->
.slide-img img {
width: 100%;
}
.swiper-slide .slide-content h1, .swiper-slide .slide-content h2, .swiper-slide .slide-content h3 {
position: absolute;
top: 20%;
left: 50%;
transform: translate(-50%, -50%);
color: #FFF;
font-size: 30px;
text-shadow: 2px 2px rgba(0,0,0,0.3);
}
.swiper-slide .slide-content p {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #FFF;
text-shadow: .5px .5px rgba(0,0,0,0.6);
margin: 0;
padding: 0;
font-size: 18px;
}
.swiper-slide .slide-content .caption {
position: absolute;
bottom: 30px;
right: 30px;
color: #FFF;
font-size: 16px;
background-color: rgba(0,127,127,0.5);
padding: 3px 8px;
}
/* 文字のアニメーション */
@keyframes fromTop {
0% {
top: 0%;
opacity: 0;
}
100% {
top: 20%;
opacity: 1;
}
}
@keyframes fromBottom {
0% {
top: 80%;
opacity: 0;
}
100% {
top: 20%;
opacity: 1;
}
}
@keyframes fromleft {
0% {
left: 0%;
opacity: 0;
}
100% {
left: 50%;
opacity: 1;
}
}
@keyframes fromRight {
0% {
left: 100%;
opacity: 0;
}
100% {
left: 50%;
opacity: 1;
}
}
/* .from_top を指定した要素のアニメーション */
.swiper-slide-active .from_top {
animation: fromTop .6s ease-in-out 0s 1 normal both;
}
/* .from_bottom を指定した要素のアニメーション */
.swiper-slide-active .from_bottom {
animation: fromBottom .6s ease-in-out 0s 1 normal both;
}
/* .from_left を指定した要素のアニメーション */
.swiper-slide-active .from_left {
animation: fromleft .6s ease-in-out 0s 1 normal both;
}
/* .from_right を指定した要素のアニメーション */
.swiper-slide-active .from_right{
animation: fromRight .6s ease-in-out .5s 1 normal both;
}
/* 画像のアニメーション */
@keyframes zoom {
0% {
transform: scale(1);
}
100% {
transform: scale(1.1);
}
}
.swiper-slide-active .zoom img {
animation: zoom 6s linear 0s 1 normal both;
}
@keyframes translate1 {
0% {
transform: scale(1.07) translate(0,0);
}
100% {
transform: scale(1.07) translate(3%, 2%);
}
}
.swiper-slide-active .translate1 img {
animation: translate1 6s linear 0s 1 normal both;
}
@keyframes translate2 {
0% {
transform: scale(1.05) translate(1%,2%);
}
100% {
transform: scale(1.1) translate(-2%, -3%);
}
}
.swiper-slide-active .translate2 img {
animation: translate2 6s linear 0s 1 normal both;
}
<script>
let mySwiper = new Swiper ('.swiper-container', {
loop: true,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
</script>