Author: | amirhosseinrahmati |
---|---|
Views Total: | 7,639 views |
Official Page: | Go to website |
Last Update: | March 9, 2020 |
License: | MIT |
Preview:

Description:
A Vanilla JavaScript mobile-friendly before/after comparison slider to view the difference between two images with mouse move and touch swipe events.
How to use it:
1. Insert before/after images to the comparison slider as follows:
<div id="example" class="bal-container"> <div class="bal-after"> <img src="after.jpg"> <div class="bal-afterPosition afterLabel"> After </div> </div> <div class="bal-before"> <div class="bal-before-inset"> <img src="before.jpg"> <div class="bal-beforePosition beforeLabel"> Before </div> </div> </div> <div class="bal-handle"> <span class=" handle-left-arrow"></span> <span class="handle-right-arrow"></span> </div> </div>
2. The main CSS styles for the comparison slider.
.bal-container { position: relative; width: 100%; height: 100%; cursor: grab; overflow: hidden; } .bal-after { display: block; position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; overflow: hidden; } .bal-before { display: block; position: absolute; top: 0; /* right: 0; */ bottom: 0; left: 0; width: 100%; height: 100%; z-index: 15; overflow: hidden; } .bal-before-inset { position: absolute; top: 0; bottom: 0; left: 0; } .bal-after img, .bal-before img { object-fit: cover; position: absolute; width: 100%; height: 100%; object-position: 50% 50%; top: 0; bottom: 0; left: 0; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; } .bal-beforePosition { background: #121212; color: #fff; left: 0; pointer-events: none; border-radius: 0.2rem; padding: 2px 10px; } .bal-afterPosition { background: #121212; color: #fff; right: 0; pointer-events: none; border-radius: 0.2rem; padding: 2px 10px; } .beforeLabel { position: absolute; bottom: 0; margin: 1rem; font-size: 1em; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; } .afterLabel { position: absolute; bottom: 0; margin: 1rem; font-size: 1em; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; }
3. Style the slider handle & arrows.
.bal-handle { height: 41px; width: 41px; position: absolute; left: 50%; top: 50%; margin-left: -20px; margin-top: -21px; border: 2px solid #fff; border-radius: 1000px; z-index: 20; pointer-events: none; box-shadow: 0 0 10px rgb(12, 12, 12); } .handle-left-arrow, .handle-right-arrow { width: 0; height: 0; border: 6px inset transparent; position: absolute; top: 50%; margin-top: -6px; } .handle-left-arrow { border-right: 6px solid #fff; left: 50%; margin-left: -17px; } .handle-right-arrow { border-left: 6px solid #fff; right: 50%; margin-right: -17px; } .bal-handle::before { bottom: 50%; margin-bottom: 20px; box-shadow: 0 0 10px rgb(12, 12, 12); } .bal-handle::after { top: 50%; margin-top: 20.5px; box-shadow: 0 0 5px rgb(12, 12, 12); } .bal-handle::before, .bal-handle::after { content: " "; display: block; width: 2px; background: #fff; height: 9999px; position: absolute; left: 50%; margin-left: -1.5px; }
4. Load the main script at the end of the document.
<script src="js/script.js"></script>
5. Initialize the before after comparison slider. That’s it.
new BeforeAfter({ id: '#one' });
Thanks so much! it is a perfect and functional code for website!