Pure CSS slideshow sliders – lightweight responsive wrappers without heavy script loads.
<div class="auto-slider">
<div class="auto-slides-wrapper">
<div class="auto-slide-frame f1"><div class="title">Slide 1</div></div>
<div class="auto-slide-frame f2"><div class="title">Slide 2</div></div>
<div class="auto-slide-frame f3"><div class="title">Slide 3</div></div>
</div>
</div>
<style>
.auto-slider { width: 100%; max-width: 240px; height: 150px; overflow: hidden; position: relative; border-radius: 8px; }
.auto-slides-wrapper { display: flex; width: 300%; height: 100%; animation: slideAuto 9s infinite ease-in-out; }
.auto-slide-frame { width: 33.333%; height: 100%; display: flex; align-items: center; justify-content: center; color: #fff; }
.auto-slide-frame.f1 { background: #3b82f6; }
.auto-slide-frame.f2 { background: #10b981; }
.auto-slide-frame.f3 { background: #ec4899; }
@keyframes slideAuto {
0%, 25% { transform: translateX(0); }
33%, 58% { transform: translateX(-33.333%); }
66%, 91% { transform: translateX(-66.666%); }
100% { transform: translateX(0); }
}
</style>
<div class="manual-slider">
<input type="radio" id="c1" name="s-nav" checked style="display:none;">
<input type="radio" id="c2" name="s-nav" style="display:none;">
<div class="manual-viewport">
<div class="m-frame" style="background:#1e293b;">Slide A</div>
<div class="m-frame" style="background:#4f46e5;">Slide B</div>
</div>
<div class="slider-dots">
<label for="c1" class="dot-trigger"></label>
<label for="c2" class="dot-trigger"></label>
</div>
</div>
<style>
.manual-slider { width: 100%; max-width: 240px; height: 150px; position: relative; overflow: hidden; border-radius: 8px; }
.manual-viewport { display: flex; width: 200%; height: 100%; transition: transform 0.5s ease; }
.m-frame { width: 50%; height: 100%; display: flex; align-items: center; justify-content: center; color: #fff; }
#c1:checked ~ .manual-viewport { transform: translateX(0); }
#c2:checked ~ .manual-viewport { transform: translateX(-50%); }
.slider-dots { position: absolute; bottom: 10px; width: 100%; display: flex; justify-content: center; gap: 8px; }
.dot-trigger { width: 10px; height: 10px; background: rgba(255,255,255,0.4); border-radius: 50%; cursor: pointer; }
#c1:checked ~ .slider-dots .dot-trigger[for="c1"],
#c2:checked ~ .slider-dots .dot-trigger[for="c2"] { background: #fff; }
</style>
Get 50+ advanced interactive carousels, responsive image touch modules, and swiper grids in our Pro Pack.
Get Pro Pack – $7 →These free snippets took time to create. A small coffee keeps them coming.
✨ Buy Me a Coffee