CSS Effects Library

A collection of modern CSS effects with live demos and ready-to-use code. Click "Show Code" on any effect to see the CSS.

Glassmorphism

Jane Cooper

Product Designer

Frosted Glass Card
/* Container needs a colorful bg */
.glass-card {
  background: rgba(255,255,255,.08);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.12);
  padding: 1.5rem;
}
Buttons
Neon Glow Button hover
.neon-btn {
  padding: .75rem 2rem;
  background: transparent;
  color: #6aefc4;
  border: 2px solid #6aefc4;
  border-radius: 8px;
  transition: all .3s;
}
.neon-btn:hover {
  background: #6aefc4;
  box-shadow: 0 0 15px rgba(106,239,196,.4),
              0 0 45px rgba(106,239,196,.15);
}
Gradient Underline Link hover
.fancy-link {
  text-decoration: none;
  color: #7c6aef;
  position: relative;
}
.fancy-link::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  width: 0; height: 2px;
  background: linear-gradient(90deg, #7c6aef, #ef6ac0);
  transition: width .4s cubic-bezier(.22,.61,.36,1);
}
.fancy-link:hover::after {
  width: 100%;
}
Loaders
Gradient Spinner animation
.spinner {
  width: 56px; height: 56px;
  border-radius: 50%;
  border: 3px solid transparent;
  border-top-color: #7c6aef;
  border-right-color: #ef6ac0;
  animation: spin 1.2s linear infinite;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}
Shimmer Skeleton loading
.shimmer-bar {
  height: 12px;
  border-radius: 4px;
  background: linear-gradient(
    90deg,
    #2a2a3a 25%,
    rgba(124,106,239,.15) 50%,
    #2a2a3a 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s ease-in-out infinite;
}
@keyframes shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
Pulse Rings animation
.ring {
  position: absolute; inset: 0;
  border: 2px solid #7c6aef;
  border-radius: 50%;
  animation: pulse 2s cubic-bezier(.215,.61,.355,1) infinite;
}
.ring:nth-child(3) { animation-delay: .5s; }
.ring:nth-child(4) { animation-delay: 1s; }
@keyframes pulse {
  0%   { transform: scale(1);  opacity: .6; }
  100% { transform: scale(2.5); opacity: 0; }
}
Cards

Feature Card

Hover to see the lift effect with smooth shadow transitions.

Hover Lift Card hover
.lift-card {
  padding: 1.5rem;
  background: #22222f;
  border-radius: 12px;
  transition: transform .35s cubic-bezier(.22,.61,.36,1),
            box-shadow .35s;
}
.lift-card:hover {
  transform: translateY(-8px) scale(1.02);
  box-shadow: 0 20px 40px rgba(0,0,0,.4),
              0 0 0 1px rgba(124,106,239,.2);
}
Front Side
Back Side
3D Flip Card 3D
.flip-container {
  perspective: 800px;
}
.flipper {
  transform-style: preserve-3d;
  transition: transform .6s;
}
.flip-container:hover .flipper {
  transform: rotateY(180deg);
}
.flip-front, .flip-back {
  backface-visibility: hidden;
}
.flip-back {
  transform: rotateY(180deg);
}
Move cursor here
Mouse Glow Card interactive
/* CSS — uses CSS custom properties */
.tilt-card::before {
  background: radial-gradient(
    circle at var(--mx) var(--my),
    rgba(124,106,239,.35), transparent 60%);
}
/* JS — track mouse position */
card.addEventListener('mousemove', e => {
  const r = card.getBoundingClientRect();
  card.style.setProperty('--mx',
    ((e.clientX - r.left) / r.width * 100) + '%');
  card.style.setProperty('--my',
    ((e.clientY - r.top) / r.height * 100) + '%');
});
Hover to spread
Stacked Cards hover
.stack-demo:hover .s-card:nth-child(1) {
  transform: rotate(-6deg) translateX(-20px);
}
.stack-demo:hover .s-card:nth-child(2) {
  transform: rotate(-3deg) translateX(-10px);
}
.s-card {
  transition: transform .4s cubic-bezier(.22,.61,.36,1);
}
Text Effects
Gradient Flow
Animated Gradient Text animation
.gradient-text {
  font-size: 2rem; font-weight: 800;
  background: linear-gradient(90deg,
    #7c6aef, #ef6ac0, #6aefc4, #7c6aef);
  background-size: 300% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: gradient-shift 4s ease infinite;
}
@keyframes gradient-shift {
  50% { background-position: 100% 50%; }
}
CSS Typing Animation
Typewriter Effect animation
.typing-text {
  font-family: monospace;
  border-right: 2px solid #7c6aef;
  white-space: nowrap;
  overflow: hidden;
  width: 0;
  animation:
    type 3.5s steps(22) infinite,
    blink .65s step-end infinite alternate;
}
@keyframes type {
  50%, 80% { width: 22ch; }
}
@keyframes blink {
  50% { border-color: transparent; }
}
Animations
Morphing Blob keyframes
.blob {
  width: 100px; height: 100px;
  background: linear-gradient(135deg, #7c6aef, #ef6ac0);
  border-radius:
    60% 40% 30% 70% / 60% 30% 70% 40%;
  animation: morph 8s ease-in-out infinite;
}
@keyframes morph {
  0%   { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
  50%  { border-radius: 50% 60% 30% 60% / 40% 70% 60% 30%; }
  100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
}
Floating Elements keyframes
.float-el {
  animation: float-y 3s ease-in-out infinite;
}
/* Stagger with animation-delay */
.float-el:nth-child(2) { animation-delay: .5s; }
.float-el:nth-child(3) { animation-delay: 1s; }

@keyframes float-y {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-12px); }
}
Interactive
Dashboard
Analytics
Settings
Sliding Menu Items hover
.stagger-item {
  transition: transform .3s, box-shadow .3s;
}
.stagger-item:hover {
  transform: translateX(8px);
  background: rgba(124,106,239,.12);
  box-shadow: -4px 0 0 #7c6aef;
}
Toggle me
Bouncy Toggle click
.toggle {
  width: 52px; height: 28px;
  background: #2a2a3a;
  border-radius: 14px;
  transition: background .3s;
}
.toggle.on { background: #7c6aef; }
.knob {
  transition: transform .3s cubic-bezier(.68,-.55,.27,1.55);
}
.toggle.on .knob {
  transform: translateX(24px);
}