Minimal Carousel/Gallery With CSS3 Clip Animation - ClipCarousel
File Size: | 41.1 KB |
---|---|
Views Total: | 1714 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

ClipCarousel is a jQuery plugin for creating a compact, fully responsive slider/carousel/gallery with a subtle clip animation using TweenMax.js library and CSS3 clip property.
Users are able to loops through the images by clicking the next/prev buttons or by clicking the thumbnails under the Clip Carousel.
How to use it:
1. Load the needed jQuery and TweenMax JavaScript libraries at the bottom of the document.
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.3/TweenMax.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT" crossorigin="anonymous"></script>
2. Load the jQuery ClipCarousel plugin after jQuery but before the closing body tag.
<script src="clip_carousel.js"></script>
3. Load an iconic font for the navigation arrows (OPTIONAL).
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
4. Add images (as backgrounds), thumbnails, navigation controls to the slider as these:
<section class="section-intro"> <div class="container"> <div class="photo-slider-wrap"> <!-- slider --> <div class="photo-slider"> <div class="back-img active" style="background-image: url('1.jpg')"> <div class="caption"> Lorem ipsum 1 </div> </div> <div class="back-img" style="background-image: url('2.jpg')"> <div class="caption"> Lorem ipsum 2 </div> </div> <div class="back-img" style="background-image: url('3.jpg')"> <div class="caption"> Lorem ipsum 3 </div> </div> ... </div> <!-- navigation --> <div class="slider-arrow slide-next" id="slide-next"> <i class="icon icon-right-open-big"></i> </div> <div class="slider-arrow slide-prev" id="slide-prev"> <i class="icon icon-left-open-big"></i> </div> </div> <!-- thumbnails --> <div class="photo-slider-thumb"> <div> <div class="back-img" style="background-image: url('1.jpg')"> <div class="caption"> Lorem 1 </div> </div> </div> <div> <div class="back-img" style="background-image: url('2.jpg')"> <div class="caption"> Lorem 2 </div> </div> </div> <div> <div class="back-img" style="background-image: url('3.jpg')"> <div class="caption"> Lorem 3 </div> </div> </div> </div> </div> </section>
5. That's it. The example CSS for the clip carousel.
.back-img { background-size: cover; background-position: center; background-repeat: no-repeat; } .container { margin: auto; } .rect-outer { position: relative; } .rect-outer .rect-inner { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .section-intro .container { max-width: 800px; margin: auto; } .section-intro .photo-slider-wrap { position: relative; } .section-intro .slider-arrow { position: absolute; top: 50%; -ms-transform: translateY(-50%); transform: translateY(-50%); color: white; font-size: 30px; z-index: 3; transition: .5s; cursor: pointer; padding: 5px; background: rgba(0, 0, 0, 0.5); } .section-intro .slider-arrow:hover { background: rgba(0, 0, 0, 0.8); } .section-intro .slider-arrow.slide-next { right: 20px; } .section-intro .slider-arrow.slide-prev { left: 20px; } .section-intro .photo-slider { width: 100%; height: 500px; position: relative; } .section-intro .photo-slider .caption { font-size: 30px; color: white; transition: .5s; font-weight: 700; text-transform: uppercase; } .section-intro .photo-slider > div { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1; opacity: 0; display: -ms-flexbox; display: flex; -ms-flex-pack: end; justify-content: flex-end; -ms-flex-align: end; align-items: flex-end; padding: 20px; } .section-intro .photo-slider > div.active { z-index: 3; opacity: 1; } .section-intro .photo-slider > div.prev .caption { opacity: 0; -ms-transform: translateY(10px); transform: translateY(10px); } .section-intro .photo-slider > div.next { z-index: 2; opacity: 1; } .section-intro .photo-slider > div.next .caption { opacity: 0; -ms-transform: translateY(10px); transform: translateY(10px); } .section-intro .photo-slider-thumb { display: -ms-flexbox; display: flex; width: 100%; -ms-flex-wrap: wrap; flex-wrap: wrap; } .section-intro .photo-slider-thumb .caption { color: white; transition: .5s; } .section-intro .photo-slider-thumb > div { width: 25%; height: 150px; position: relative; z-index: 2; cursor: pointer; } @media (max-width: 700px) { .section-intro .photo-slider-thumb > div { width: 50%; } } .section-intro .photo-slider-thumb > div:hover > div:before { opacity: 1; } .section-intro .photo-slider-thumb > div > div { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 2; display: -ms-flexbox; display: flex; -ms-flex-pack: end; justify-content: flex-end; -ms-flex-align: end; align-items: flex-end; padding: 10px; } .section-intro .photo-slider-thumb > div > div.prev .caption { opacity: 0; -ms-transform: translateY(10px); transform: translateY(10px); } .section-intro .photo-slider-thumb > div > div.next { z-index: 2; opacity: 1; } .section-intro .photo-slider-thumb > div > div.next .caption { opacity: 0; -ms-transform: translateY(10px); transform: translateY(10px); } .section-intro .photo-slider-thumb > div > div:before { position: absolute; left: 0; top: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); opacity: 0; transition: .5s; } .section-intro .photo-slider-thumb > div > div.next { z-index: 1; }
This awesome jQuery plugin is developed by lemehovskiy. For more Advanced Usages, please check the demo page or visit the official website.