Staggered Grid Reveal
Beeldraster dat per cel met mask-clip en diagonale stagger in beeld onthult bij scroll.
Zo gebruik je het
- Plak de HTML op de plek waar het onderdeel moet komen. Zet de script-tags bovenaan één keer per pagina.
- Zet de CSS in je stylesheet. Alle klassen hebben een eigen voorvoegsel, dus niets botst met je eigen opmaak.
- Voeg de JavaScript toe en roep init() aan met het element waar de HTML in staat.
<!-- Staggered Grid Reveal · NedDev · eigen werk. -->
<!-- benodigd, één keer per pagina: -->
<script src="https://cdn.jsdelivr.net/npm/gsap@3.13.0/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.13.0/dist/ScrollTrigger.min.js"></script>
<div class="jouw-container">
<div class="sgr-grid"><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div><div class="sgr-cell"></div></div>
</div>/* Staggered Grid Reveal · NedDev · eigen werk. */
.sgr-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);gap:8px;padding:7%;background:#fff}
.sgr-cell{border-radius:8px;clip-path:inset(0 0 100% 0);background:#0a0a0a}.sgr-cell:nth-child(3n+1){background:#F5480F}.sgr-cell:nth-child(3n){background:#1a1a1a}// Staggered Grid Reveal · NedDev · eigen werk.
// root = het element waarin de HTML staat
function init(root){
var cells=root.querySelectorAll('.sgr-cell');var g=window.gsap;var rm=matchMedia('(prefers-reduced-motion:reduce)').matches;
if(!g||rm){cells.forEach(function(c){c.style.clipPath='inset(0 0 0% 0)';});return;}
var cols=4;cells.forEach(function(c,i){c._d=(Math.floor(i/cols)+(i%cols))*0.08;});
if(window.ScrollTrigger){window.ScrollTrigger.create({trigger:root,start:'top 78%',once:true,onEnter:function(){cells.forEach(function(c){g.to(c,{clipPath:'inset(0 0 0% 0)',duration:.7,ease:'power3.out',delay:c._d});});}});}else{cells.forEach(function(c){g.to(c,{clipPath:'inset(0 0 0% 0)',duration:.7,ease:'power3.out',delay:c._d});});}
}
init(document.querySelector('.jouw-container'));
Meer uit scroll-effecten
Iets gezien dat je mooi vindt?
Zet het in je selectie en stuur hem op. Dan bouwen we je site eromheen, in jouw huisstijl.
Neem contact op →