実現したいこと
スライドショーに拡大機能を付けたいです。
やったこと
スライド機能はcssのみで実装させました。
拡大機能はcssにtransform: scale();を打ち込み、jsのeventlistener(click)で
画像をクリックした時に画像が拡大されるような処理をしようとしました。
html
1<div class="slide" id="makeImg"> 2 <img src="img/app.png" alt="" onclick="zoom('img/app.png')" class="zoom"/> 3 <img src="img/bus.png" alt="" onclick="zoom('img/bus.png')" class="zoom"/> 4 <img src="img/casy.png" alt="" onclick="zoom('img/casy.png')" class="zoom"/> 5 <img src="img/rec.png" alt="" onclick="zoom('img/rec.png')" class="zoom"/> 6</div>
css
1.slide { 2 height: 50%; 3 margin: auto; 4 position: absolute; 5 top: 0; 6 bottom: 0; 7 left: 25%; 8} 9.slide img { 10 display: block; 11 position: absolute; 12 width: inherit; 13 height: inherit; 14 cursor: pointer; 15 opacity: 0; 16 animation: slideAnime 16s ease infinite; 17 box-shadow: 18 0 1.9px 2.5px rgba(0, 0, 0, 0.057), 19 0 5px 6.1px rgba(0, 0, 0, 0.076), 20 0 10.1px 11.4px rgba(0, 0, 0, 0.086), 21 0 19.2px 19.8px rgba(0, 0, 0, 0.092), 22 0 38.4px 34.8px rgba(0, 0, 0, 0.1), 23 0 101px 74px rgba(0, 0, 0, 0.13); 24 } 25.slide img:nth-of-type(1) { animation-delay: 0s } 26.slide img:nth-of-type(2) { animation-delay: 4s } 27.slide img:nth-of-type(3) { animation-delay: 8s } 28.slide img:nth-of-type(4) { animation-delay: 12s } 29@keyframes slideAnime{ 30 0% { opacity: 0 } 31 3% { opacity: 1 } 32 22% { opacity: 1 } 33 25% { opacity: 0 } 34 100% { opacity: 0 } 35} 36@keyframes zoom{ 37 0%{ transform: scale(0,0);} 38 100%{ transform: scale(1.5,1.5);} 39}
js
1document.querySelector(".slide").addEventListener("click" , function(){ 2 document.querySelector(".zoom").style.animation='1.5s ease zoom' 3})
現状
画像スライドは実装出来ましたが、クリックしても拡大はされません。
---------------------------追記---------------------------
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓スライドショーのように切り替わります↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓画像をクリックすると....↓↓↓↓↓↓
---------------------------追記2(スクロールをcssからjsライブラリのswiperに変更いたしました。)---------------------------
html
1<!-- scrollpaper --> 2 <div id="sp-box" ontouchstart=""> 3 <img src="img/s-c-p.png" alt=""> 4 5 <div class="swiper-container"> 6 <div class="swiper-wrapper"> 7 <div class="swiper-slide"><img src="img/bus.png" alt="Swiper01"></div> 8 <div class="swiper-slide"><img src="img/casy.png" alt="Swiper02"></div> 9 <div class="swiper-slide"><img src="img/app.png" alt="Swiper03"></div> 10 <div class="swiper-slide"><img src="img/rec.png" alt="Swiper04"></div> 11 </div> 12 <div class="swiper-button-prev"></div> 13 <div class="swiper-button-next"></div> 14 </div> 15 </div>
css
1/* sp-box */ 2#sp-box{ 3 height: 40%; 4 text-align: center; 5 position: relative; 6 top: 20%; 7 animation: fluffy 3s ease 1s infinite alternate; 8} 9#sp-box img{ 10 object-fit: cover; 11 height: 100%; 12} 13.swiper-container{ 14 width: 40vh; 15 height: 50%; 16 margin: auto; 17 position: absolute; 18 bottom: 75%; 19 left: 5%; 20} 21.swiper-button-next::after, .swiper-button-prev::after { 22 content: none !important; 23}
javascript
1var swiper = new Swiper('.swiper-container', { 2 navigation: { 3 nextEl: '.swiper-button-next', 4 prevEl: '.swiper-button-prev', 5 }, 6 loop: true, 7 effect: 'fade', 8 autoplay: { 9 delay: 5000, 10 disableOnInteraction: true 11 }, 12 });
回答2件
あなたの回答
tips
プレビュー