Vanilla JS image slideshow with CSS3 transition
A Pen by Justin Perry on CodePen.
| <div id="slideshow"> | |
| <img class="is-active" src="http://placekitten.com/300/296" alt="" /> | |
| <img src="http://placekitten.com/300/297" alt="" /> | |
| <img src="http://placekitten.com/300/302" alt="" /> | |
| <img src="http://placekitten.com/300/299" alt="" /> | |
| <img src="http://placekitten.com/300/301" alt="" /> | |
| </div> |
| (function(){ | |
| var slideshow = document.getElementById('slideshow'), | |
| imgs = slideshow.getElementsByTagName('img'), | |
| activeClass = 'is-active', | |
| activeClassRegEx = new RegExp( '\\b'+ activeClass + '\\b', 'i' ), | |
| count = 0, | |
| timer, | |
| previous; | |
| function next(){ | |
| previous = count > 0 ? count - 1 : 0; | |
| imgs[ previous ].className = imgs[ previous ].className.replace( activeClassRegEx, '' ); | |
| if( count < imgs.length ){ | |
| imgs[ count ].className += activeClass; | |
| count++; | |
| } | |
| else{ | |
| count = 0; | |
| next(); | |
| } | |
| } | |
| next(); | |
| timer = setInterval(function(){ | |
| next(); | |
| }, 2000); | |
| })(); |
| *{ | |
| box-sizing: border-box; | |
| } | |
| body{ | |
| background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(12%,#595959), color-stop(25%,#666666), color-stop(39%,#474747), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(60%,#111111), color-stop(76%,#2b2b2b), color-stop(91%,#1c1c1c), color-stop(100%,#131313)); | |
| } | |
| #slideshow{ | |
| height: 800px; | |
| margin: auto; | |
| max-width: 500px; | |
| position: relative; | |
| } | |
| #slideshow img{ | |
| border-radius: 40px; | |
| border: 20px solid #222; | |
| height: auto; | |
| opacity: 0; | |
| left: 100%; | |
| position: absolute; | |
| z-index: 1; | |
| top: 0; | |
| width: 100%; | |
| -webkit-transition: 1s all; | |
| -webkit-transform: scale(1); | |
| -webkit-box-reflect: below 0px -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(250, 250, 250, 0.1))); | |
| } | |
| #slideshow .is-active{ | |
| opacity: 1; | |
| left: 0; | |
| top: 0; | |
| z-index: 2; | |
| -webkit-transition: 1s all; | |
| -webkit-transform: scale(.8); | |
| -webkit-backface-visibility: hidden; | |
| } |
Vanilla JS image slideshow with CSS3 transition
A Pen by Justin Perry on CodePen.