Interactive image comparison slider perfect for contractors showing project transformations. No dependencies, mobile responsive, accessible.
Show your clients the dramatic difference in kitchen remodels.
<div data-tradecalcs-before-after>
<img data-before-image src="before.jpg" alt="Kitchen before remodel">
<img data-after-image src="after.jpg" alt="Kitchen after remodel">
<div data-before-label>Before</div>
<div data-after-label>After</div>
</div>
Interaction: Drag the slider handle left/right, or use arrow keys when focused.
Demonstrate bathroom transformation with before/after comparison.
Show exterior transformations with siding, paint, or landscaping.
Customized colors using CSS variables to match your brand.
<div data-tradecalcs-before-after
style="--tc-ba-slider-color: #10b981;
--tc-ba-slider-hover: #059669;
--tc-ba-handle-border: #10b981;">
<!-- images -->
</div>
Step 1: Add the CSS and JavaScript files to your HTML:
<!-- Add to <head> -->
<link rel="stylesheet" href="/widgets/before-after-slider.css">
<!-- Add before closing </body> -->
<script src="/widgets/before-after-slider.js"></script>
Step 2: Add your before/after images:
<div data-tradecalcs-before-after>
<img data-before-image src="path/to/before.jpg" alt="Before renovation">
<img data-after-image src="path/to/after.jpg" alt="After renovation">
<div data-before-label>Before</div>
<div data-after-label>After</div>
</div>
Note: Replace d790a6cc.tradecalcs.pages.dev with tradecalcs.com once the production domain is configured.
data-tradecalcs-before-after (required) — Main containerdata-before-image (required) — Before image (must be <img>)data-after-image (required) — After image (must be <img>)data-before-label (optional) — Label for before imagedata-after-label (optional) — Label for after image--tc-ba-slider-color — Slider line color (default: #667eea)--tc-ba-slider-hover — Slider hover color (default: #5568d3)--tc-ba-handle-bg — Handle background (default: white)--tc-ba-handle-border — Handle border color (default: #667eea)--tc-ba-label-bg — Label background (default: rgba(0,0,0,0.7))--tc-ba-label-text — Label text color (default: white)--tc-ba-slider-width — Slider line width (default: 4px)--tc-ba-handle-size — Handle circle size (default: 48px)// Initialize all sliders manually
TradeCalcsBeforeAfter.init();
// Initialize specific slider
const element = document.querySelector('[data-tradecalcs-before-after]');
TradeCalcsBeforeAfter.initElement(element);
// Cleanup slider (remove event listeners)
TradeCalcsBeforeAfter.cleanup(element);
TradeCalcsBeforeAfter.cleanup('slider-id');
// Check if user prefers reduced motion
if (TradeCalcsBeforeAfter.prefersReducedMotion()) {
console.log('User prefers reduced motion');
}
// Listen for initialization
element.addEventListener('tc-before-after-initialized', function(e) {
console.log('Slider initialized', e.detail);
});
The slider is fully keyboard accessible:
Works in all modern browsers:
Our Network
Built by Cali Dream Construction · CSLB #1054602
Need a custom calculator for your trade business? We'll get back to you within 24 hours.