<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>