A bold evolution of horizontal scrolling design. Version 4 transforms the previous versionโs minimalist charm into a fully featured, visually immersive gallery. With smoother scroll behavior, custom UI elements, upgraded JavaScript architecture, and fine-tuned responsiveness โ this version is no longer just a gallery. Itโs an experience.
Still lightweight. Still no external libraries.
Just pure HTML, CSS, and modular, vanilla JavaScript.
- ๐ฏ Navigation Arrows Added โ No more guessing where to scroll next. V4 introduces left/right navigation buttons for manual control, complementing mouse/touch scroll.
- ๐ง Smarter JavaScript โ Script has been split out into a clean
app.jsfile. The logic is modular, easier to read, and much more maintainable. - ๐ป More Responsive Layout โ Grid and flex tweaks improve how the gallery behaves across ultra-wide and smaller screen sizes.
- ๐๏ธ Visual Refresh โ New background gradient, spacing, and subtle animations bring a more professional look and smoother feel.
- ๐งผ Cleaner Codebase โ Reorganized folders, comments, and consistent naming. Ready to scale or collaborate on.
- ๐ฎ Improved Scroll Interaction โ Refined scroll-to-horizontal behavior with better support across input types (wheel, touch, buttons).
V4 pushes the concept of a horizontal image gallery into a more production-ready, interactive territory. Itโs perfect for:
- Developer/design portfolios
- Product showcases
- Horizontal landing pages
- Interactive presentations or timelines
Whether you're looking for a lightweight scroll effect or a starting point for a high-impact user experience, this version offers a refined and flexible foundation.
- Scrolls a container of images horizontally
- Features smooth scroll and transition effects
- Responsive layout that adapts across devices
- Visually enhanced layout with padding, spacing, and gradients
- Gallery container is a
display: flexrow withoverflow-x: scroll - JavaScript listens for
wheelevents and scrolls on the X-axis - Navigation buttons manually control scroll position
- Smooth scrolling enabled via CSS (
scroll-behavior: smooth) - Fully responsive using flex wrapping, percentage widths, and media queries
V4 makes it feel complete. Not just functional, but stylish and user-friendly.
Design improvements include:
- ๐ซ Linear background gradients for subtle depth
- ๐ Spacing and margins for breathing room
- ๐ Custom arrow buttons for better navigation
- ๐ Designed primarily for light mode, but can be tweaked for dark
Things you might want to add next:
- Scroll snapping (
scroll-snap-type) - Lazy loading for images
- Hover/active effects on gallery items
- Captions or image overlays
- Animation triggers with
IntersectionObserver
- Clone the repository
git clone https://github.com/masterjaneza/Horizontal-Scroll-Gallery---V4.git
Open the Project:
- Open
index.htmlin your browser
or - Use Live Server in VS Code.
Fully compatible with modern browsers:
- โ Chrome
- โ Firefox
- โ Safari
- โ Edge
- โ Arc
- โ Brave
โ ๏ธ Older browsers may not supportscroll-behavior: smoothor modern CSS variables.
- No scroll snapping yet (but itโs easy to add).
- Scrollbar is visible by default โ can be styled or hidden.
- No built-in accessibility for keyboard navigation (yet).
This project is open source โ use it, fork it, tweak it, remix it.
Just give credit where itโs due. โ๏ธ
If you like this or find it useful, give it a โญ star on GitHub.
Fork it, extend it, tag me โ letโs inspire each other to scroll sideways in style.
Designed & developed by
Davit Janezashvili
aka MasterJaneza โ Creative Developer & Designer
๐ฑ For best visuals, use in light mode.
Some gradients or shadows may appear dull in dark mode.
๐ แฐแแ แแแแแขแแแฃแ แ แกแฅแ แแแแก แแแแแ แแ | แแแ แกแแ 4
แฐแแ แแแแแขแแแฃแ แ แกแฅแ แแแแก แแแแแแแแก แแแแแแ แแแแแฃแชแแ. แแแ แกแแ 4 แแฅแชแแแก แฌแแแ แแแ แกแแแก แแแแแแแแแกแขแฃแ แฎแแแแก แกแ แฃแแคแแกแแแแ, แแแแฃแแแฃแ แแ แจแแแแแแญแแแ แแแแแชแแแแแแแ. แแแฃแแฏแแแแกแแแฃแแแ แกแฅแ แแแแก แฅแชแแแ, แแแแแแขแ แแแแฎแแแ แแแแแกแแแแก แจแแฅแแแแแ แแแขแแ แคแแแกแแก แแแแแแแขแแแ, แแแแฎแแแฌแ JavaScript แแ แฅแแขแแฅแขแฃแ แ แแ แแแแจแแแแแแแแแ แแแแฎแแแฌแ แ แแแแแ แแแแแแแ.
แแแแแช แแกแฃแแฃแฅแ. แแแแแช แแแแแแแแแแแแแก แแแ แแจแ.
แฃแแ แแแแ HTML, CSS แแ แแแแฃแแฃแ แ Vanilla JavaScript.
- ๐ฏ แแแแแแแชแแแก แฆแแแแแแแ โ แแฆแแ แแแแญแแ แแแแแ แแแแแชแแแแ, แกแแแ แฃแแแ แแแแแแฎแแแแ. V4 แแแแแแแแแ แแแ แชแฎแแแ/แแแ แฏแแแแ แฆแแแแแแแก, แ แแช แแแแจแแแแแแแแแ แแฃแแฏแแแแกแแแก แแแแขแ แแแก.
- ๐ง แแแแแแ แฃแแ JavaScript แกแขแ แฃแฅแขแฃแ แ โ แกแแ แแแขแ แแแแแขแแแแแแ แกแฃแคแแ
app.jsแคแแแแจแ. แแแแ แแแแฃแแฃแ แแ แแแแแฃแแแ, แแแ แขแแแแ แฌแแกแแแแแฎแ แแ แจแแแแฎแแแแ. - ๐ป แฃแคแ แ แ แแแแแ แแแแแ แแแแแฃแขแ โ grid แแ flex แแแฎแแแฌแแแ, แ แแช แฃแแแแแกแแ แแ แแแแ แ แแแแ แช แกแฃแแแ แคแแ แแ, แแกแ แแแแแแฃแ แแแ แแแแแก.
- ๐๏ธ แแแแฃแแแฃแ แ แแแแแฎแแแแ โ แแฎแแแ แคแแแแก แแ แแแแแแขแแแ, แกแแแ แชแแแแ แแ แแแแแแชแแแแ แแแแแแแก แแซแแแแก แแ แแคแแกแแแแแแฃแ แแแ แกแแฎแแก.
- ๐งผ แฃแคแ แ แกแฃแคแแ แแแแแก แแแแ โ แคแแแแแแแก แแ แแแแแแแแฃแแ แกแขแ แฃแฅแขแฃแ แ, แแแแแแขแแ แแแ แแ แแแแแแแแแแ แฃแแ แแแกแแฎแแแแแแแ โ แแแแ แแ แแก แแแกแจแขแแแแ แแแแกแ แแ แแฃแแแฃแ แ แแฃแจแแแแแกแแแแก.
- ๐ฎ แแแฃแแฏแแแแกแแแฃแแ แกแฅแ แแแแก แฅแชแแแ โ แแแฎแแแฌแแแ scroll-to-horizontal แฅแชแแแ, แ แแแแแแช แแฃแจแแแแก แกแฎแแแแแกแฎแแ แจแแงแแแแแก แขแแแแแแ: แแแ แแแแ, แจแแฎแแแ, แฆแแแแแแแ.
V4 แแแแแแ แแแก แฐแแ แแแแแขแแแฃแ แ แแแแแ แแแก แแแแชแแคแชแแแก แแ แแฅแชแแแก แแแก แแ แแแฃแฅแชแแแกแแแแก แแแแแงแแคแแแจแ แแงแแค, แแแขแแ แแฅแขแแฃแ แแแแขแคแแ แแแ. แแแแแแฃแ แแ:
- แแแแแแแแแ แแก แแ แแแแแแแแ แแก แแแ แขแคแแแแแกแแแแก
- แแ แแแฃแฅแขแแก แแแขแ แแแแกแแแแก
- แฐแแ แแแแแขแแแฃแ แ แแแแแแแ แแแแ แแแแแกแแแแก
- แแแขแแ แแฅแขแแฃแแ แแ แแแแแขแแชแแแแแกแแแแก แแ แแ แแแก แฎแแแแแแกแแแแก
แแฃ แแญแแ แแแแแ แแกแฃแแฃแฅแ แกแฅแ แแแแก แแคแแฅแขแ แแ แกแแฌแงแแกแ แฌแแ แขแแแ แแแฆแแแ แแคแแฅแขแฃแ แแแแก UI-แกแแแแก โ แแก แแแ แกแแ แแซแแแแ แกแขแแแแแฃแ , แแแฎแแแฌแแ แแ แแแฅแแแ แกแแคแฃแซแแแแก.
- แแแแแ แแแก แแแแขแแแแแ แ แกแฅแ แแแแแแ แฐแแ แแแแแขแแแฃแ แแ
- แแแแฉแแแ แแแฃแแ แกแฅแ แแแแก แแ แขแ แแแแแชแแแก แแคแแฅแขแแแ
- แ แแแแแ แแแแแ แแแแแฃแขแ, แ แแแแแแช แแ แแแแ แงแแแแ แแแฌแงแแแแแแแแก
- แแแแฃแแแฃแ แแ แแแฃแแฏแแแแกแแแฃแแ แแแแแแแขแแแ โ padding, spacing แแ gradients
- แแแแแ แแแก แแแแขแแแแแ แ โ
display: flexแ แแแoverflow-x: scroll-แแ - JavaScript แฃแกแแแแก
wheelแแแแแแแแแก แแ แแฎแแ แชแแแแแแก แฐแแ แแแแแขแแแฃแ แกแฅแ แแแก - แแแแแแแชแแแก แฆแแแแแแแ แกแฅแ แแแแก แแแแแชแแแก แชแแแแก แฎแแแแ
- แแแฃแแ แกแฅแ แแแ แฉแแ แแฃแแแ CSS-แแ (
scroll-behavior: smooth) - แกแ แฃแแแ แ แแแแแ แแแแแ โ แแแแแแงแแแแแ แแ แแชแแแขแฃแแ แกแแแแแแแแ, แแแแแ แแแแฎแแแก แแแ แแแแแ แแ flex wrapping
V4-แก แกแซแแแก แแแกแ แฃแแแแฃแแแแแก แจแแแ แซแแแแ. แแ แ แแฎแแแแ แคแฃแแฅแชแแฃแ แ, แแ แแแแ แกแขแแแฃแ แ แแ แแแกแแฎแแ แฎแแแแแ.
แแแแแแแแก แแแฃแแฏแแแแกแแแแแ:
- ๐ซ แแแแแแ แฃแแ แแ แแแแแแขแแแ แคแแแแ โ แฆแ แแ แแ แแแฎแแแฌแแแ แแแแฃแแแ
- ๐ แกแแแ แชแแแแ แแ แแแ แแแแแแ แฃแแแแแกแ แฐแแ แแแแแแกแแแแก
- ๐ แแแ แแแแฃแแ แฆแแแแแแแ แแแแแแแชแแแกแแแแก
- ๐ แแแแแแแ แแแแแแแแแ แฆแแ แ แแแแแแ, แแแแ แแ แแแแแแแ แแแแฎแแแฌแแแ แแฃแฅแแกแแแแกแแช
แจแแแแแแ แแแแแฏแแแ แจแแแซแแแแ แแงแแก:
- Scroll snapping (
scroll-snap-type) - แกแฃแ แแแแแแก แแแ แแแชแ แฉแแขแแแ แแแ (lazy loading)
- แฐแแแแ แแก/แแฅแขแแฃแ แ แแแแแแแ แแแแแก แแคแแฅแขแแแ
- แกแฃแ แแแแแแ แขแแฅแกแขแฃแ แ แแแแแคแแ แแ แแ แขแแขแ แแแ
- แแแแแแชแแแแ
IntersectionObserver-แแ
แแแแแแแแ แแแแกแแแแแแ แงแแแแ แแแแแแแแ แแแ แแ แแฃแแแ แแแ:
- โ Chrome
- โ Firefox
- โ Safari
- โ Edge
- โ Arc
- โ Brave
โ ๏ธ แซแแแ แแ แแฃแแแ แแแจแ แจแแกแแซแแแ แแ แแแฃแจแแแกscroll-behavior: smoothแแ แแแแแแแแ แแแ CSS แชแแแแแแแ.
- Scroll snapping แฏแแ แแ แแ แแก แแแขแแแ แแ แแแฃแแ (แแแ แขแแแแ แแแกแแแแขแแแแแแ)
- Scrollbar แแแแฃแแแกแฎแแแแแ แฎแแแฃแแแ โ แจแแกแแซแแแแแแแ แกแขแแแแแแชแแ แแ แแแแแแแ
- แแแแแแแขแฃแ แแ แแแแแแแชแแ แฏแแ แแ แแ แแก แแฎแแ แแแญแแ แแแ
แแ แแแฅแขแ แฆแแ แแแแแแแ โ แแแแแแงแแแแ, fork-แแ, แจแแชแแแแแ, แแแแแแแแแแ.
แฃแแ แแแแ แแแฃแแแแแ แแแขแแ แ, แ แแแแ แช แกแแญแแ แแ. โ๏ธ
แแฃ แแแแแฌแแแแ แแ แแแแแแแแแแ, แแแแญแแ แแ โญ GitHub-แแ.
แแแแคแแ แแแแ, แจแแชแแแแแ, แแแแแแแแแแ โ แแ แแแ แแฅแแแแ แฐแแ แแแแแขแแแฃแ แ แกแแ แแแแก แแแแแแก!
แแแแแแแแก แแ แแ แแแฅแขแแก แจแแแฅแแแแ:
แแแแแ แฏแแแแแแจแแแแ
aka MasterJaneza โ แแ แแแขแแฃแแ แแแแแแแแแ แ แแ แแแแแแแแ แ
๐ฑ แกแแฃแแแแแกแ แแแแฃแแแฃแ แ แแคแแฅแขแแแแกแแแแก แแแแแแงแแแแ แฆแแ แ แแแแแ.
แแแแแแ แแ แแ แแแแแแขแ แแ แฉแ แแแแ แจแแกแแซแแแ แแแแแแแแ แแคแแฅแขแฃแ แแ แแแแแฉแแแแก แแฃแฅ แ แแแแแจแ.