Smooth Image Comparison Slider with jQuery and CSS3
File Size: | 150 KB |
---|---|
Views Total: | 3400 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

This is a jQuery & CSS3 based image comparison tool which allows you to compare two overlapping images with a smooth slider that follows your mouse movements.
How to use it:
1. Build the html structure for the image comparison tool.
<div class="slider-wrapper"> <div class="before-wrapper"> <div class="after-wrapper"> <div class="after-image"></div> </div> </div> <div class="comparison-slider"></div> </div>
2. Style the image comparison slider and add the before / after images to the image comparison tool.
.slider-wrapper { width: 500px; height: 270px; margin: 0 auto; position: relative; } .slider-wrapper:hover { cursor: none; } .comparison-slider { position: absolute; width: 4px; left: 50%; top: -10px; bottom: -15px; background-image: -webkit-linear-gradient(top, rgba(59,144,203,0) 0, #64b700 2%, #64b700 98%, rgba(59,144,203,0) 100%); background-image: -moz-linear-gradient(top, rgba(59,144,203,0) 0, #64b700 2%, #64b700 98%, rgba(59,144,203,0) 100%); background-image: -o-linear-gradient(top, rgba(59,144,203,0) 0, #64b700 2%, #64b700 98%, rgba(59,144,203,0) 100%); background-image: linear-gradient(to bottom, rgba(59,144,203,0) 0, #64b700 2%, #64b700 98%, rgba(59,144,203,0) 100%); -webkit-box-shadow: 0 0 10px 1px rgba(0,0,0,0.4); -moz-box-shadow: 0 0 10px 1px rgba(0,0,0,0.4); box-shadow: 0 0 10px 1px rgba(0,0,0,0.4); } .before-wrapper { border-radius: 8px; -moz-border-radius: 8px; -webkit-border-radius: 8px; border: 2px solid #222; display: block; overflow: hidden; width: 100%; height: 100%; position: relative; background: url("before.png") no-repeat; } .after-wrapper, .after-image { border-radius: 0 8px 8px 0; -moz-border-radius: 0 8px 8px 0; -webkit-border-radius: 0 8px 8px 0; } .after-wrapper { overflow: hidden; position: absolute; top: 0; left: 0; right: 0; bottom: 0; -webkit-transform: translateX(50%); transform: translateX(50%); } .after-image { display: block; width: 100%; height: 100%; position: relative; -webkit-transform: translateX(-50%); transform: translateX(-50%); background: url("after.png") no-repeat; }
3. Include the latest version of jQuery library from a CDN.
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
4. The core JavaScript to enable the image comparison tool.
(function($){ $(function(){ $('.before-wrapper').on( "mousemove", function(e) { var offsets = $(this).offset(); var fullWidth = $(this).width(); var mouseX = e.pageX - offsets.left; if (mouseX < 0) { mouseX = 0; } else if (mouseX > fullWidth) { mouseX = fullWidth } $(this).parent().find('.comparison-slider').css({ left: mouseX, transition: 'none' }); $(this).find('.after-wrapper').css({ transform: 'translateX(' + (mouseX) + 'px)', transition: 'none' }); $(this).find('.after-image').css({ transform: 'translateX(' + (-1*mouseX) + 'px)', transition: 'none' }); }); $('.slider-wrapper').on( "mouseleave", function() { $(this).parent().find('.comparison-slider').css({ left: '50%', transition: 'all .3s' }); $(this).find('.after-wrapper').css({ transform: 'translateX(50%)', transition: 'all .3s' }); $(this).find('.after-image').css({ transform: 'translateX(-50%)', transition: 'all .3s' }); }); }); })(jQuery);
This awesome jQuery plugin is developed by mewowa. For more Advanced Usages, please check the demo page or visit the official website.