Some experiment with sexy FX
A Pen by Erick Jones on CodePen.
| <section id="thumbsList"> | |
| <h3>New Zealand 2015</h3> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet facere voluptas vel ipsam vero, cum voluptatum molestiae eos at nemo eum corrupti a maiores perspiciatis quod expedita, minus placeat, eius!</p> | |
| <ul> | |
| <li><img src="https://dl4rygnmrir77.cloudfront.net/muzli_feed/wp-content/uploads/2015/10/Screenshot_12.png" alt="" /></li> | |
| <li><img src="https://dl4rygnmrir77.cloudfront.net/muzli_feed/wp-content/uploads/2015/10/Screenshot_71.png" alt="" /></li> | |
| <li><img src="https://dl4rygnmrir77.cloudfront.net/muzli_feed/wp-content/uploads/2015/10/Screenshot_9.png" alt="" /></li> | |
| <li><img src="https://dl4rygnmrir77.cloudfront.net/muzli_feed/wp-content/uploads/2015/10/Screenshot_11.png" alt="" /></li> | |
| <li><img src="https://dl4rygnmrir77.cloudfront.net/muzli_feed/wp-content/uploads/2015/10/Social.jpg" alt=""/></li> | |
| <li><img src="https://dl4rygnmrir77.cloudfront.net/muzli_feed/wp-content/uploads/2015/10/38.png" alt=""/></li> | |
| </ul> | |
| </section> | |
| <div id="lightBox"> | |
| <img id="lightBoxImage" src="" alt="" /> | |
| <div id="prevImg"><span></span></div> | |
| <div id="nextImg"><span></span></div> | |
| <div id="closeLightbox-button"></div> | |
| </div> |
| window.onload = function() { | |
| var thumbsList = document.getElementById("thumbsList"); | |
| var allLIs = thumbsList.getElementsByTagName("li"); | |
| var allImages = thumbsList.getElementsByTagName("img"); | |
| var TheLightBox = document.getElementById("lightBox"); | |
| var ThelightBoxImage = document.getElementById("lightBoxImage"); | |
| var prevImg = document.getElementById("prevImg"); | |
| var nextImg = document.getElementById("nextImg"); | |
| var numberOfImages = allLIs.length; | |
| var counter = 0; | |
| var currentImage = counter; | |
| function hasClass(el, className) { | |
| if (el.classList) | |
| return el.classList.contains(className) | |
| else | |
| return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)')) | |
| } | |
| function addClass(el, className) { | |
| if (el.classList) | |
| el.classList.add(className) | |
| else if (!hasClass(el, className)) el.className += " " + className | |
| } | |
| function removeClass(el, className) { | |
| if (el.classList) | |
| el.classList.remove(className) | |
| else if (hasClass(el, className)) { | |
| var reg = new RegExp('(\\s|^)' + className + '(\\s|$)') | |
| el.className=el.className.replace(reg, ' ') | |
| } | |
| } | |
| ThelightBoxImage.setAttribute("src", (allImages[0].getAttribute("src"))); | |
| function loadImageInLightBox(URL, callback){ | |
| var url = URL; | |
| ThelightBoxImage.setAttribute("src", url); | |
| if(typeof callback == "function"){ | |
| callback(); | |
| } | |
| } | |
| function loadLightBox(){ | |
| addClass(TheLightBox, "lightBox-active"); | |
| addClass(ThelightBoxImage, "active-image"); | |
| } | |
| function unloadLightBox(){ | |
| removeClass(TheLightBox, "lightBox-active"); | |
| removeClass(ThelightBoxImage, "active-image"); | |
| } | |
| function prevImage(){ | |
| if(counter <= 0){ | |
| counter = numberOfImages; | |
| } | |
| counter--; | |
| loadImageInLightBox(allImages[counter].getAttribute("src")); | |
| } | |
| function nextImage(){ | |
| counter++; | |
| if(counter == numberOfImages){ | |
| counter = 0; | |
| } | |
| loadImageInLightBox(allImages[counter].getAttribute("src")); | |
| } | |
| document.getElementById("lightBox").addEventListener("click", function(e){ | |
| switch (e.target.id) { | |
| case "prevImg": | |
| prevImage(); | |
| break; | |
| case "nextImg": | |
| nextImage(); | |
| break; | |
| case "lightBoxImage": | |
| break; | |
| default: | |
| unloadLightBox(); | |
| } | |
| }) | |
| for (var i=0; i < allImages.length; i++){ | |
| allImages[i].setAttribute("id", "thumb_" + i); | |
| allImages[i].addEventListener("click", | |
| function (e){ | |
| var theIndex = e.target.id.match(/\d+/)[0]; | |
| counter = theIndex; | |
| loadImageInLightBox(e.target.getAttribute("src"), function(){ | |
| loadLightBox(e.target.getAttribute("src")); | |
| }); | |
| } | |
| ); | |
| } | |
| } |
Some experiment with sexy FX
A Pen by Erick Jones on CodePen.
| * { | |
| margin: 0; | |
| padding: 0; | |
| border: 0; | |
| box-sizing: border-box; | |
| } | |
| $buttonWidth: 50px; | |
| $primaryColor: #222222; | |
| $secondaryColor: #E60000; | |
| body { | |
| background-color: $primaryColor; | |
| font-family: Helvetica, sans-serif; | |
| font-size: 16px; | |
| color: #666; | |
| } | |
| #thumbsList { | |
| overflow: hidden; | |
| display: block; | |
| margin: 50px auto; | |
| width: 90%; | |
| max-width: 1000px; | |
| background: #eaeaea; | |
| border: 1px solid #CCC; | |
| -webkit-border-radius: 4px; | |
| -moz-border-radius: 4px; | |
| border-radius: 4px; | |
| padding: 20px; | |
| } | |
| #thumbsList h3 { | |
| margin-bottom: .5em; | |
| font-size: 2.3em; | |
| color: #333; | |
| } | |
| #thumbsList p { | |
| font-size: 1em; | |
| margin-bottom: 1em; | |
| } | |
| #thumbsList ul { | |
| list-style-type: none; | |
| padding: 0; | |
| } | |
| #thumbsList ul li { | |
| position: relative; | |
| display: inline-block; | |
| padding: 0; | |
| margin: 0; | |
| cursor: pointer; | |
| overflow: hidden; | |
| width: 33.3%; | |
| height: 200px; | |
| float: left; | |
| background-color: #000; | |
| } | |
| #thumbsList ul li img { | |
| position: relative; | |
| display: block; | |
| max-width: 100%; | |
| transition: all 0.3s linear; | |
| } | |
| #thumbsList ul li img:hover { | |
| opacity: 0.5; | |
| -webkit-transform: scale(2) rotate(30deg); /* Safari */ | |
| -ms-transform: scale(2) rotate(30deg); /* IE 9 */ | |
| transform: scale(2) rotate(30deg); /* Standard syntax */ | |
| transition: transform 10s ease, opacity 1s ease; | |
| } | |
| #lightBox { | |
| position: fixed; | |
| top: -100%; | |
| width: 100%; | |
| background: rgba(0,0,0,.8); | |
| width: 100%; | |
| opacity: 0; | |
| -webkit-transition: opacity .5s ease-in-out; | |
| -moz-transition: opacity .5s ease-in-out; | |
| -o-transition: opacity .5s ease-in-out; | |
| transition: opacity .5s ease-in-out; | |
| overflow: hidden; | |
| } | |
| .lightBox-active { | |
| display: block !important; | |
| opacity: 1 !important; | |
| top: 0 !important; | |
| bottom: 0 !important; | |
| transition: all 0.5s ease; | |
| } | |
| #prevImg { | |
| position: absolute; | |
| top: 50%; | |
| margin-top: -($buttonWidth/2); | |
| width: $buttonWidth; | |
| height: $buttonWidth; | |
| cursor: pointer; | |
| background-color: $secondaryColor; | |
| transition: all 0.3s ease; | |
| } | |
| #prevImg:hover, #nextImg:hover { | |
| background-color: #B30000; | |
| transition: all 0.3s ease; | |
| } | |
| #prevImg:after { | |
| content: ""; | |
| display: block; | |
| width: 20px; | |
| height: 20px; | |
| margin: 8px; | |
| margin-top: 13px; | |
| margin-left: 20px; | |
| border-left: 2px solid #FFF; | |
| border-bottom: 2px solid #FFF; | |
| transform: rotate(45deg); | |
| } | |
| #nextImg { | |
| @extend #prevImg; | |
| right: 0; | |
| } | |
| #nextImg:after { | |
| margin-left: 8px; | |
| transform: rotate(225deg); | |
| } | |
| #closeLightbox-button { | |
| cursor: pointer; | |
| position: absolute; | |
| top: 20px; | |
| right: 20px; | |
| background-color: #B30000; | |
| width: $buttonWidth; | |
| height: $buttonWidth; | |
| transition: all 0.7s ease; | |
| } | |
| #closeLightbox-button:hover { | |
| background-color: red; | |
| transform: rotate(180deg); | |
| transition: all 0.3s ease; | |
| } | |
| #closeLightbox-button:before { | |
| content: ""; | |
| display: block; | |
| position: relative; | |
| width: 2px; | |
| height: 25px; | |
| background-color: white; | |
| left: 23px; | |
| top: 12px; | |
| -ms-transform: rotate(40deg); /* IE 9 */ | |
| -webkit-transform: rotate(40deg); /* Safari */ | |
| transform: rotate(40deg); | |
| } | |
| #closeLightbox-button:after { | |
| content: ""; | |
| display: block; | |
| position: relative; | |
| width: 2px; | |
| height: 25px; | |
| background-color: white; | |
| left: 23px; | |
| top: -13px; | |
| -ms-transform: rotate(-40deg); /* IE 9 */ | |
| -webkit-transform: rotate(-40deg); /* Safari */ | |
| transform: rotate(-40deg); | |
| } | |
| #lightBox img { | |
| margin: auto; | |
| position: absolute; | |
| top: 0; | |
| left:0; | |
| right:0; | |
| bottom: 0; | |
| max-height: 0%; | |
| max-width: 0%; | |
| box-shadow: 0px 0px 8px rgba(0,0,0,.3); | |
| box-sizing: border-box; | |
| -webkit-transition: .5s ease-in-out; | |
| -moz-transition: .5s ease-in-out; | |
| -o-transition: .5s ease-in-out; | |
| transition: .5s ease-in-out; | |
| } | |
| .active-image { | |
| max-width: 90% !important; | |
| max-height: 100% !important; | |
| transition: all .5s ease !important; | |
| } | |
| @media (max-width: 1000px) { | |
| #thumbsList ul li { | |
| position: relative; | |
| width: 50%; | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| #thumbsList ul li { | |
| position: relative; | |
| width: 100%; | |
| } | |
| } | |