<div class="swiper"> <div class="swiper-wrapper"> <div class="swiper-slide"> <!-- img 要素から背景画像(background-image)に変更--> <div class="slide-img zoom" style="background-image: url('images/swiper_img_01.jpg')"></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> <div class="swiper-slide"> <!-- img 要素から背景画像(background-image)に変更--> <div class="slide-img translate1" style="background-image: url('images/swiper_img_02.jpg')"></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> <div class="swiper-slide"> <!-- img 要素から背景画像(background-image)に変更--> <div class="slide-img translate2" style="background-image: url('images/swiper_img_03.jpg')"></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> </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 -->
/* .slide-img の背景画像の設定を追加 */ .slide-img { /* 小画面 */ height: 300px; background-size: cover; background-position: center center; background-repeat: no-repeat; overflow:visible; } @media only screen and (min-width:651px) { /* 中画面 */ .slide-img { height: 450px; } } @media only screen and (min-width:961px) { /* 大画面 */ .slide-img { height: 593px; } } /* .slide-img の背景画像の設定の追加 ここまで */ .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', { loop: true, pagination: { el: '.swiper-pagination', clickable: true, }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, }) </script>