UNPKG

jquery-beforeafter-slider

Version:

A responsive, touch-enabled, and highly customizable jQuery plugin to compare two images with a slider.

171 lines (116 loc) 8.23 kB
# jQuery Before & After Viewer [![Version](https://img.shields.io/badge/Version-2.0.0-blue.svg)](https://github.com/mamedul/jquery-beforeafter-slider/) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mamedul/jquery-beforeafter-slider/blob/main/LICENSE) &nbsp;&nbsp; [![GitHub stars](https://img.shields.io/github/stars/mamedul/jquery-beforeafter-slider?style=social)](https://github.com/mamedul/jquery-beforeafter-slider/stargazers) &nbsp;&nbsp; [![GitHub forks](https://img.shields.io/github/forks/mamedul/jquery-beforeafter-slider?style=social)](https://github.com/mamedul/jquery-beforeafter-slider/network/members) &nbsp;&nbsp; [![GitHub watchers](https://img.shields.io/github/watchers/mamedul/jquery-beforeafter-slider?style=social)](https://github.com/mamedul/jquery-beforeafter-slider/watchers) &nbsp;&nbsp; [![GitHub followers](https://img.shields.io/github/followers/mamedul?style=social)](https://github.com/mamedul?tab=followers) [![Hire Me](https://img.shields.io/badge/Hire%20Me-Available-brightgreen.svg)](http://mamedul.github.io/) A responsive, touch-enabled, and highly customizable jQuery plugin to compare two images with a slider. Perfect for showcasing before and after transformations, photo retouching, or any visual comparison. --- ### Live Demo [![Demo 1](https://img.shields.io/badge/Demo-1-brightgreen.svg)](https://mamedul.github.io/jquery-beforeafter-slider/sample/example4.html) &nbsp; &nbsp; [![Demo 2](https://img.shields.io/badge/Demo-2-brightgreen.svg)](https://mamedul.github.io/jquery-beforeafter-slider/sample/example2.html) &nbsp; &nbsp; [![Demo 3](https://img.shields.io/badge/Demo-3-brightgreen.svg)](https://mamedul.github.io/jquery-beforeafter-slider/sample/example3.html) &nbsp; &nbsp; [![Demo 4](https://img.shields.io/badge/Demo-4-brightgreen.svg)](https://mamedul.github.io/jquery-beforeafter-slider/sample/example4.html) [![jQuery Before & After Viewer Demo](https://mamedul.github.io/jquery-beforeafter-slider/screencapture-jquery-beforeafter-slider.png)](https://mamedul.github.io/jquery-beforeafter-slider/) ## ✨ Features * **Fully Responsive**: Adapts to any container size. * **Touch & Mobile Friendly**: Works smoothly on iOS, Android, and other mobile devices. * **Highly Customizable**: Easily change colors, positions, and opacities. * **Callback Functions**: Execute your own code on slider events (`onMoveStart`, `onMoving`, `onMoveEnd`). * **Public API Methods**: Control the plugin programmatically with `get`, `set`, and `destroy` methods. * **Lightweight & Easy to Use**: Simple setup with minimal dependencies (just jQuery). * **CSS Class-based Styling**: All styles are injected into the `<head>`, keeping your HTML clean. ## 🚀 Installation & Usage Getting started is simple. Just follow these steps: ### 1. Include Files First, make sure you have jQuery included in your project. Then, include the plugin's JavaScript file. ```html <!-- 1. Include jQuery --> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <!-- 2. Include the Before After Viewer plugin --> <script src="path/to/jquery.before-after.js"></script> ``` ### 2. HTML Structure Create a container `div` with exactly two `img` tags inside it. The first image will be the "before" image, and the second will be the "after" image. ```html <div id="my-viewer"> <img src="path/to/before-image.jpg" alt="Before"> <img src="path/to/after-image.jpg" alt="After"> </div> ``` ### 3. Initialize the Plugin Call the `.beforeAfter()` function on your container element. ```javascript $(document).ready(function() { $('#my-viewer').beforeAfter(); }); ``` ## ⚙️ Configuration Options You can customize the plugin by passing an options object during initialization. ```javascript $('#my-viewer').beforeAfter({ position: 75, separatorColor: '#ff0000', arrowColor: '#ffffff' }); ``` Here is a list of all available options: | Option | Type | Default | Description | | ---------------- | ---------- | ---------------| ----------------------------------------------------------- | | `movable` | `boolean` | `true` | If `false`, the slider cannot be moved. | | `clickMove` | `boolean` | `true` | Allows moving the slider by clicking on the images. | | `position` | `number` | `50` | The initial position of the slider in percentage (0-100). | | `opacity` | `number` | `0.7` | The default opacity of the separator (0-1). | | `activeOpacity` | `number` | `1` | The opacity of the separator when being dragged. | | `hoverOpacity` | `number` | `0.9` | The opacity of the separator on hover. | | `separatorColor` | `string` | `'#ffffff'` | The color of the separator line (CSS color value). | | `bulletColor` | `string` | `'#ffffff'` | The background color of the circular handle. | | `arrowColor` | `string` | `'#333333'` | The color of the arrows inside the handle. | | `onMoveStart` | `function` | `function(){}` | Callback function executed when the user starts dragging. | | `onMoving` | `function` | `function(){}` | Callback function executed continuously while dragging. | | `onMoveEnd` | `function` | `function(){}` | Callback function executed when the user stops dragging. | ## 🛠️ Public Methods (API) You can interact with an initialized slider using public methods. ### Get a Value Retrieve the current value of any setting. ```javascript // Initialize the plugin and store the instance var mySlider = $('#my-viewer').beforeAfter(); // Get the current opacity var currentOpacity = mySlider.beforeAfter('get', 'opacity'); console.log(currentOpacity); // Outputs: 0.7 ``` ### Set a Value Programmatically change a setting after initialization. ```javascript // Set the position to 25% mySlider.beforeAfter('set', 'position', 25); // Change the separator color to blue mySlider.beforeAfter('set', 'separatorColor', 'blue'); ``` ### Destroy the Plugin Revert the container back to its original state (the two images). This is useful for single-page applications or dynamic content. ```javascript mySlider.beforeAfter('destroy'); ``` ## 🌐 Browser Support * Chrome (latest) * Firefox (latest) * Safari (latest) * Edge (latest) * iOS & Android browsers ## 📜 License This project is licensed under the **MIT License**. See the [LICENSE](https://opensource.org/licenses/MIT) file for details. ## 👨‍💻 Author & Hire Me This plugin was created and is maintained by [**Mamedul Islam**](https://mamedul.github.io/). I am a passionate **web developer** with experience in creating interactive and user-friendly web components. I am currently *available for freelance projects* or full-time opportunities. I help businesses grow their online presence with custom web solutions. Specializing in **WordPress**, **WooCommerce**, and **Shopify**, I build modern, responsive, and high-performance websites. * **WhatsApp**: [message me](https://wa.me/8801847406830?text=Hi%2C%20I%27d%20like%20to%20hire%20you.) * **Portfolio**: [mamedul.github.io](https://mamedul.github.io/) * **GitHub**: [@mamedul](https://github.com/mamedul) * **LinkedIn**: [Connect with me!](https://www.linkedin.com/in/mamedul/) * **Twitter (X)**: [@mamedul](https://www.x.com/mamedul/) [![Hire Me](https://img.shields.io/badge/Hire%20Me-Available-brightgreen.svg)](https://mamedul.github.io/) --- ### ⭐ Show Your Support If you find this extension useful, please consider giving it a star on GitHub! Your support helps motivate further development and improvements. [![GitHub stars](https://img.shields.io/github/stars/mamedul/jquery-beforeafter-slider?style=for-the-badge)](https://github.com/mamedul/jquery-beforeafter-slider/stargazers) &nbsp; If you found this project helpful, give it a ⭐ on GitHub!