Scale-In on Scroll
A copy-paste scroll effects component in pure HTML & CSS. Zero dependencies, framework-agnostic, MIT-licensed.
Scroll EffectsHTMLCSSany framework
New
Feature Alpha
Feature Beta
Copy into your project
HTML
<div class="nuda-scx-scale-in__card">
<span class="nuda-scx-scale-in__dot nuda-scx-scale-in__dot--accent"></span>
<span class="nuda-scx-scale-in__text">Feature Alpha</span>
</div>
<div class="nuda-scx-scale-in__card">
<span class="nuda-scx-scale-in__dot nuda-scx-scale-in__dot--muted"></span>
<span class="nuda-scx-scale-in__text">Feature Beta</span>
</div>CSS
.nuda-scx-scale-in {
display: flex;
flex-direction: column;
align-items: center;
gap: .6rem;
padding: .75rem;
}
.nuda-scx-scale-in__badge {
display: flex;
align-items: center;
gap: .4rem;
margin-bottom: .1rem;
}
.nuda-scx-scale-in__ring {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
border: 2px solid #e4ff54;
animation: _nuda-scxPing 1.6s ease-in-out infinite;
}
.nuda-scx-scale-in__label {
color: #e4ff54;
font-size: .7rem;
font-weight: 700;
letter-spacing: .08em;
text-transform: uppercase;
}
.nuda-scx-scale-in__card {
background: #1a1a1a;
border: 1px solid rgba(255,255,255,.08);
border-radius: 10px;
padding: .5rem .9rem;
display: flex;
align-items: center;
gap: .5rem;
width: 180px;
}
.nuda-scx-scale-in__card--d1 {
animation: _nuda-scxScaleIn .5s cubic-bezier(.34,1.56,.64,1) both;
}
.nuda-scx-scale-in__card--d2 {
animation: _nuda-scxScaleIn .5s cubic-bezier(.34,1.56,.64,1) .15s both;
}
.nuda-scx-scale-in__dot {
width: 7px;
height: 7px;
border-radius: 50%;
flex-shrink: 0;
}
.nuda-scx-scale-in__dot--accent {
background: #e4ff54;
}
.nuda-scx-scale-in__dot--muted {
background: #444;
}
.nuda-scx-scale-in__text {
color: #cfcfcf;
font-size: .78rem;
}
@keyframes _nuda-scxScaleIn {
from {
opacity: 0;
transform: scale(.72);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes _nuda-scxPing {
0%,100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.5);
opacity: .4;
}
}
@media (prefers-reduced-motion:reduce) {
.nuda-scx-scale-in__card--d1,.nuda-scx-scale-in__card--d2,.nuda-scx-scale-in__ring {
animation: none;
}
}
How to use Scale-In on Scroll
Paste the HTML where you need it and the CSS into a global stylesheet (or a <style> tag). Every class is prefixed nuda- so it never collides with Tailwind or your own styles. Tweak the CSS custom properties to match your design system.
Works in React, Vue, Svelte, Astro, Next.js, Nuxt, Laravel Blade, Django, Rails — or a single .html file. No npm install, no build step.