DevPlatform
Home
Components
Search
Submit
Earn
Login
Sign Up Free
Gallery - Preview | DevPlatform
DevPlatform
Categories
Accordion
Animation
Box Shadow
Button
Card
Footer
Form
Gallery
Hero Section
Inputs
Loader
Marquee
Modal
Modules
Navbar
Progress Bar
Radio Buttons
Search-Bar
Sections
Slider
Tab
Timeline
Toggle
Gallery
rohit
Feb 13, 2026
4
0
Share
Live Preview
Refresh
Live Editor
HTML
CSS
JS
HTML
CSS
JavaScript
1
<div id="lb1" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/10/900/1100" alt="Architecture"> <div class="lb-caption">Architecture · Design</div> </div> </div> <div id="lb2" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/20/900/700" alt="Urban Space"> <div class="lb-caption">Urban Space · Photo</div> </div> </div> <div id="lb3" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/30/900/1000" alt="Interior"> <div class="lb-caption">Interior · Art</div> </div> </div> <div id="lb4" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/40/900/750" alt="Landscape"> <div class="lb-caption">Landscape · Nature</div> </div> </div> <div id="lb5" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/50/900/1050" alt="Portrait"> <div class="lb-caption">Portrait · Fashion</div> </div> </div> <div id="lb6" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/60/900/740" alt="Street Art"> <div class="lb-caption">Street Art · Urban</div> </div> </div> <div id="lb7" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/70/900/1000" alt="Forest"> <div class="lb-caption">Forest · Nature</div> </div> </div> <div id="lb8" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/80/900/680" alt="Abstract"> <div class="lb-caption">Abstract · Art</div> </div> </div> <div id="lb9" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/90/900/940" alt="City Lights"> <div class="lb-caption">City Lights · Night</div> </div> </div> <div id="lb10" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/100/900/820" alt="Studio Shot"> <div class="lb-caption">Studio Shot · Fashion</div> </div> </div> <div id="lb11" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/110/900/980" alt="Minimal"> <div class="lb-caption">Minimal · Design</div> </div> </div> <div id="lb12" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/120/900/700" alt="Ocean View"> <div class="lb-caption">Ocean View · Travel</div> </div> </div> <div id="lb13" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/130/900/1060" alt="Architecture"> <div class="lb-caption">Architecture · Arch</div> </div> </div> <div id="lb14" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/140/900/750" alt="Mountains"> <div class="lb-caption">Mountains · Nature</div> </div> </div> <div id="lb15" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/150/900/900" alt="Detail Shot"> <div class="lb-caption">Detail Shot · Macro</div> </div> </div> <div id="lb16" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/160/900/820" alt="Product"> <div class="lb-caption">Product · Brand</div> </div> </div> <div id="lb17" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/170/900/1060" alt="People"> <div class="lb-caption">People · Street</div> </div> </div> <div id="lb18" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/180/900/700" alt="Texture"> <div class="lb-caption">Texture · Art</div> </div> </div> <div id="lb19" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/190/900/980" alt="Skyline"> <div class="lb-caption">Skyline · City</div> </div> </div> <div id="lb20" class="lb-overlay"> <div class="lb-inner"> <a href="#" class="lb-close">✕</a> <img src="https://picsum.photos/seed/200/900/780" alt="Flowers"> <div class="lb-caption">Flowers · Nature</div> </div> </div> <!-- ══ GALLERY SECTION ══ --> <section class="gallery-section"> <!-- Header --> <div class="sec-head"> <div class="head-left"> <div class="eyebrow">Our Work</div> <h2 class="sec-title">Creative<br><i>Gallery</i></h2> </div> <div class="head-right"> <p class="sec-desc">A curated collection of our finest work — spanning branding, photography, and digital art.</p> <a href="#" class="view-btn">View All Projects →</a> </div> </div> <!-- Columns --> <div class="cols-wrap"> <!-- COL 1 --> <div class="col"> <div class="col-track"> <!-- Original set --> <a href="#lb1" class="card"> <img src="https://picsum.photos/seed/10/400/520" alt="Architecture" loading="lazy"> <div class="card-overlay"><span class="card-label">Architecture</span><span class="card-tag">Design</span></div> <span class="card-chip">Design</span> </a> <a href="#lb2" class="card"> <img src="https://picsum.photos/seed/20/400/340" alt="Urban Space" loading="lazy"> <div class="card-overlay"><span class="card-label">Urban Space</span><span class="card-tag">Photo</span></div> <span class="card-chip">Photo</span> </a> <a href="#lb3" class="card"> <img src="https://picsum.photos/seed/30/400/480" alt="Interior" loading="lazy"> <div class="card-overlay"><span class="card-label">Interior</span><span class="card-tag">Art</span></div> <span class="card-chip">Art</span> </a> <a href="#lb4" class="card"> <img src="https://picsum.photos/seed/40/400/360" alt="Landscape" loading="lazy"> <div class="card-overlay"><span class="card-label">Landscape</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <a href="#lb5" class="card"> <img src="https://picsum.photos/seed/50/400/500" alt="Portrait" loading="lazy"> <div class="card-overlay"><span class="card-label">Portrait</span><span class="card-tag">Fashion</span></div> <span class="card-chip">Fashion</span> </a> <!-- Duplicate for seamless loop --> <a href="#lb1" class="card"> <img src="https://picsum.photos/seed/10/400/520" alt="Architecture" loading="lazy"> <div class="card-overlay"><span class="card-label">Architecture</span><span class="card-tag">Design</span></div> <span class="card-chip">Design</span> </a> <a href="#lb2" class="card"> <img src="https://picsum.photos/seed/20/400/340" alt="Urban Space" loading="lazy"> <div class="card-overlay"><span class="card-label">Urban Space</span><span class="card-tag">Photo</span></div> <span class="card-chip">Photo</span> </a> <a href="#lb3" class="card"> <img src="https://picsum.photos/seed/30/400/480" alt="Interior" loading="lazy"> <div class="card-overlay"><span class="card-label">Interior</span><span class="card-tag">Art</span></div> <span class="card-chip">Art</span> </a> <a href="#lb4" class="card"> <img src="https://picsum.photos/seed/40/400/360" alt="Landscape" loading="lazy"> <div class="card-overlay"><span class="card-label">Landscape</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <a href="#lb5" class="card"> <img src="https://picsum.photos/seed/50/400/500" alt="Portrait" loading="lazy"> <div class="card-overlay"><span class="card-label">Portrait</span><span class="card-tag">Fashion</span></div> <span class="card-chip">Fashion</span> </a> </div> </div> <!-- COL 2 --> <div class="col"> <div class="col-track"> <a href="#lb6" class="card"> <img src="https://picsum.photos/seed/60/400/360" alt="Street Art" loading="lazy"> <div class="card-overlay"><span class="card-label">Street Art</span><span class="card-tag">Urban</span></div> <span class="card-chip">Urban</span> </a> <a href="#lb7" class="card"> <img src="https://picsum.photos/seed/70/400/500" alt="Forest" loading="lazy"> <div class="card-overlay"><span class="card-label">Forest</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <a href="#lb8" class="card"> <img src="https://picsum.photos/seed/80/400/320" alt="Abstract" loading="lazy"> <div class="card-overlay"><span class="card-label">Abstract</span><span class="card-tag">Art</span></div> <span class="card-chip">Art</span> </a> <a href="#lb9" class="card"> <img src="https://picsum.photos/seed/90/400/460" alt="City Lights" loading="lazy"> <div class="card-overlay"><span class="card-label">City Lights</span><span class="card-tag">Night</span></div> <span class="card-chip">Night</span> </a> <a href="#lb10" class="card"> <img src="https://picsum.photos/seed/100/400/400" alt="Studio Shot" loading="lazy"> <div class="card-overlay"><span class="card-label">Studio Shot</span><span class="card-tag">Fashion</span></div> <span class="card-chip">Fashion</span> </a> <!-- Duplicate --> <a href="#lb6" class="card"> <img src="https://picsum.photos/seed/60/400/360" alt="Street Art" loading="lazy"> <div class="card-overlay"><span class="card-label">Street Art</span><span class="card-tag">Urban</span></div> <span class="card-chip">Urban</span> </a> <a href="#lb7" class="card"> <img src="https://picsum.photos/seed/70/400/500" alt="Forest" loading="lazy"> <div class="card-overlay"><span class="card-label">Forest</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <a href="#lb8" class="card"> <img src="https://picsum.photos/seed/80/400/320" alt="Abstract" loading="lazy"> <div class="card-overlay"><span class="card-label">Abstract</span><span class="card-tag">Art</span></div> <span class="card-chip">Art</span> </a> <a href="#lb9" class="card"> <img src="https://picsum.photos/seed/90/400/460" alt="City Lights" loading="lazy"> <div class="card-overlay"><span class="card-label">City Lights</span><span class="card-tag">Night</span></div> <span class="card-chip">Night</span> </a> <a href="#lb10" class="card"> <img src="https://picsum.photos/seed/100/400/400" alt="Studio Shot" loading="lazy"> <div class="card-overlay"><span class="card-label">Studio Shot</span><span class="card-tag">Fashion</span></div> <span class="card-chip">Fashion</span> </a> </div> </div> <!-- COL 3 --> <div class="col"> <div class="col-track"> <a href="#lb11" class="card"> <img src="https://picsum.photos/seed/110/400/480" alt="Minimal" loading="lazy"> <div class="card-overlay"><span class="card-label">Minimal</span><span class="card-tag">Design</span></div> <span class="card-chip">Design</span> </a> <a href="#lb12" class="card"> <img src="https://picsum.photos/seed/120/400/340" alt="Ocean View" loading="lazy"> <div class="card-overlay"><span class="card-label">Ocean View</span><span class="card-tag">Travel</span></div> <span class="card-chip">Travel</span> </a> <a href="#lb13" class="card"> <img src="https://picsum.photos/seed/130/400/520" alt="Architecture" loading="lazy"> <div class="card-overlay"><span class="card-label">Architecture</span><span class="card-tag">Arch</span></div> <span class="card-chip">Arch</span> </a> <a href="#lb14" class="card"> <img src="https://picsum.photos/seed/140/400/360" alt="Mountains" loading="lazy"> <div class="card-overlay"><span class="card-label">Mountains</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <a href="#lb15" class="card"> <img src="https://picsum.photos/seed/150/400/440" alt="Detail Shot" loading="lazy"> <div class="card-overlay"><span class="card-label">Detail Shot</span><span class="card-tag">Macro</span></div> <span class="card-chip">Macro</span> </a> <!-- Duplicate --> <a href="#lb11" class="card"> <img src="https://picsum.photos/seed/110/400/480" alt="Minimal" loading="lazy"> <div class="card-overlay"><span class="card-label">Minimal</span><span class="card-tag">Design</span></div> <span class="card-chip">Design</span> </a> <a href="#lb12" class="card"> <img src="https://picsum.photos/seed/120/400/340" alt="Ocean View" loading="lazy"> <div class="card-overlay"><span class="card-label">Ocean View</span><span class="card-tag">Travel</span></div> <span class="card-chip">Travel</span> </a> <a href="#lb13" class="card"> <img src="https://picsum.photos/seed/130/400/520" alt="Architecture" loading="lazy"> <div class="card-overlay"><span class="card-label">Architecture</span><span class="card-tag">Arch</span></div> <span class="card-chip">Arch</span> </a> <a href="#lb14" class="card"> <img src="https://picsum.photos/seed/140/400/360" alt="Mountains" loading="lazy"> <div class="card-overlay"><span class="card-label">Mountains</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <a href="#lb15" class="card"> <img src="https://picsum.photos/seed/150/400/440" alt="Detail Shot" loading="lazy"> <div class="card-overlay"><span class="card-label">Detail Shot</span><span class="card-tag">Macro</span></div> <span class="card-chip">Macro</span> </a> </div> </div> <!-- COL 4 --> <div class="col"> <div class="col-track"> <a href="#lb16" class="card"> <img src="https://picsum.photos/seed/160/400/400" alt="Product" loading="lazy"> <div class="card-overlay"><span class="card-label">Product</span><span class="card-tag">Brand</span></div> <span class="card-chip">Brand</span> </a> <a href="#lb17" class="card"> <img src="https://picsum.photos/seed/170/400/520" alt="People" loading="lazy"> <div class="card-overlay"><span class="card-label">People</span><span class="card-tag">Street</span></div> <span class="card-chip">Street</span> </a> <a href="#lb18" class="card"> <img src="https://picsum.photos/seed/180/400/340" alt="Texture" loading="lazy"> <div class="card-overlay"><span class="card-label">Texture</span><span class="card-tag">Art</span></div> <span class="card-chip">Art</span> </a> <a href="#lb19" class="card"> <img src="https://picsum.photos/seed/190/400/480" alt="Skyline" loading="lazy"> <div class="card-overlay"><span class="card-label">Skyline</span><span class="card-tag">City</span></div> <span class="card-chip">City</span> </a> <a href="#lb20" class="card"> <img src="https://picsum.photos/seed/200/400/380" alt="Flowers" loading="lazy"> <div class="card-overlay"><span class="card-label">Flowers</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> <!-- Duplicate --> <a href="#lb16" class="card"> <img src="https://picsum.photos/seed/160/400/400" alt="Product" loading="lazy"> <div class="card-overlay"><span class="card-label">Product</span><span class="card-tag">Brand</span></div> <span class="card-chip">Brand</span> </a> <a href="#lb17" class="card"> <img src="https://picsum.photos/seed/170/400/520" alt="People" loading="lazy"> <div class="card-overlay"><span class="card-label">People</span><span class="card-tag">Street</span></div> <span class="card-chip">Street</span> </a> <a href="#lb18" class="card"> <img src="https://picsum.photos/seed/180/400/340" alt="Texture" loading="lazy"> <div class="card-overlay"><span class="card-label">Texture</span><span class="card-tag">Art</span></div> <span class="card-chip">Art</span> </a> <a href="#lb19" class="card"> <img src="https://picsum.photos/seed/190/400/480" alt="Skyline" loading="lazy"> <div class="card-overlay"><span class="card-label">Skyline</span><span class="card-tag">City</span></div> <span class="card-chip">City</span> </a> <a href="#lb20" class="card"> <img src="https://picsum.photos/seed/200/400/380" alt="Flowers" loading="lazy"> <div class="card-overlay"><span class="card-label">Flowers</span><span class="card-tag">Nature</span></div> <span class="card-chip">Nature</span> </a> </div> </div> </div> </section>
1
:root { --bg: #0a0a0f; --card: #13131b; --accent: #c8f135; --text: #f0f0f5; --muted: #555566; --border: rgba(255,255,255,0.06); } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { background: var(--bg); font-family: 'Jost', sans-serif; color: var(--text); overflow-x: hidden; } /* ═══════════════════════════ SECTION ═══════════════════════════ */ .gallery-section { width: 100%; padding: 90px 0 100px; position: relative; overflow: hidden; } /* Radial bg glow */ .gallery-section::before { content: ''; position: absolute; width: 600px; height: 600px; border-radius: 50%; background: radial-gradient(circle, rgba(200,241,53,0.06) 0%, transparent 70%); top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } /* ── Header ── */ .sec-head { display: flex; justify-content: space-between; align-items: flex-end; padding: 0 56px; margin-bottom: 60px; position: relative; z-index: 2; } .eyebrow { font-size: 10px; letter-spacing: 0.45em; text-transform: uppercase; color: var(--accent); font-weight: 500; margin-bottom: 16px; display: flex; align-items: center; gap: 10px; } .eyebrow::before { content: ''; width: 32px; height: 1px; background: var(--accent); display: block; } .sec-title { font-family: 'Playfair Display', serif; font-size: clamp(38px, 5vw, 68px); font-weight: 700; line-height: 1.0; letter-spacing: -0.01em; color: var(--text); } .sec-title i { color: var(--accent); font-style: italic; } .head-right { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 14px; padding-bottom: 4px; } .sec-desc { font-size: 14px; color: var(--muted); max-width: 240px; line-height: 1.75; font-weight: 300; } .view-btn { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text); text-decoration: none; padding: 10px 22px; border: 1px solid rgba(255,255,255,0.15); border-radius: 100px; transition: border-color 0.3s, color 0.3s, background 0.3s; } .view-btn:hover { border-color: var(--accent); color: var(--accent); background: rgba(200,241,53,0.05); } /* ═══════════════════════════ COLUMNS WRAPPER ═══════════════════════════ */ .cols-wrap { display: flex; gap: 14px; padding: 0 56px; height: 620px; overflow: hidden; position: relative; } /* Top fade */ .cols-wrap::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 130px; background: linear-gradient(to bottom, var(--bg), transparent); z-index: 10; pointer-events: none; } /* Bottom fade */ .cols-wrap::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 160px; background: linear-gradient(to top, var(--bg), transparent); z-index: 10; pointer-events: none; } /* ── One column ── */ .col { flex: 1; min-width: 0; overflow: hidden; } /* The scrolling track — pure CSS animation */ .col-track { display: flex; flex-direction: column; gap: 14px; animation: scrollUp linear infinite; } /* Different durations = different speeds */ .col:nth-child(1) .col-track { animation-duration: 28s; } .col:nth-child(2) .col-track { animation-duration: 38s; } .col:nth-child(3) .col-track { animation-duration: 22s; } .col:nth-child(4) .col-track { animation-duration: 32s; } /* Pause on hover — pure CSS */ .col:hover .col-track { animation-play-state: paused; } @keyframes scrollUp { 0% { transform: translateY(0); } 100% { transform: translateY(-50%); } } /* ── Image card ── */ .card { position: relative; border-radius: 12px; overflow: hidden; display: block; cursor: pointer; flex-shrink: 0; /* CSS-only lightbox target */ text-decoration: none; } .card img { width: 100%; display: block; border-radius: 12px; transition: transform 0.6s ease; object-fit: cover; border: 1px solid var(--border); } .card:hover img { transform: scale(1.06); } /* Overlay — pure CSS */ .card-overlay { position: absolute; inset: 0; border-radius: 12px; background: linear-gradient(to top, rgba(10,10,15,0.82) 0%, rgba(10,10,15,0.1) 45%, transparent 70% ); opacity: 0; transition: opacity 0.35s ease; display: flex; flex-direction: column; justify-content: flex-end; padding: 16px; gap: 4px; } .card:hover .card-overlay { opacity: 1; } .card-label { font-family: 'Playfair Display', serif; font-size: 15px; font-weight: 700; color: #fff; letter-spacing: 0.02em; } .card-tag { font-size: 9px; font-weight: 500; letter-spacing: 0.3em; text-transform: uppercase; color: var(--accent); } /* Top-left category chip */ .card-chip { position: absolute; top: 11px; left: 11px; font-size: 9px; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; padding: 4px 10px; border-radius: 100px; background: rgba(10,10,15,0.7); border: 1px solid rgba(200,241,53,0.3); color: var(--accent); opacity: 0; transform: translateY(-5px); transition: opacity 0.35s, transform 0.35s; backdrop-filter: blur(6px); } .card:hover .card-chip { opacity: 1; transform: translateY(0); } /* ── CSS-only Lightbox using :target ── */ .lb-overlay { position: fixed; inset: 0; z-index: 9999; background: rgba(5,5,10,0.93); backdrop-filter: blur(16px); display: flex; align-items: center; justify-content: center; /* Hidden by default */ opacity: 0; visibility: hidden; transition: opacity 0.35s, visibility 0.35s; } .lb-overlay:target { opacity: 1; visibility: visible; } .lb-inner { position: relative; max-width: 88vw; max-height: 88vh; } .lb-inner img { max-width: 100%; max-height: 88vh; border-radius: 10px; object-fit: contain; box-shadow: 0 40px 120px rgba(0,0,0,0.7); transform: scale(0.95); transition: transform 0.4s cubic-bezier(0.34,1.2,0.64,1); } .lb-overlay:target .lb-inner img { transform: scale(1); } .lb-close { position: absolute; top: -14px; right: -14px; width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); color: #fff; font-size: 16px; display: flex; align-items: center; justify-content: center; text-decoration: none; transition: background 0.25s; } .lb-close:hover { background: rgba(255,255,255,0.2); } .lb-caption { text-align: center; margin-top: 14px; font-size: 12px; letter-spacing: 0.25em; text-transform: uppercase; color: rgba(255,255,255,0.4); } /* ── Responsive ── */ @media (max-width: 900px) { .sec-head { padding: 0 28px; flex-direction: column; align-items: flex-start; gap: 20px; } .head-right { align-items: flex-start; text-align: left; } .sec-desc { text-align: left; } .cols-wrap { padding: 0 28px; height: 520px; gap: 10px; } .col:nth-child(4) { display: none; } } @media (max-width: 560px) { .cols-wrap { height: 440px; } .col:nth-child(3) { display: none; } }
1
Comments
0
Want to comment?
Please
login
or
sign up
to post comments.
No comments yet
Be the first to comment on this component!
Comments 0
Want to comment?
Please login or sign up to post comments.
No comments yet
Be the first to comment on this component!