Logo Image
blog

CSS Animations: Adding Life to Your Website

HTML5 & CSS3

icon-image

SCSS

icon-image

JavaScript

icon-image

TypeScript

icon-image

React

icon-image

Next.js

icon-image

Tailwind CSS

icon-image

Bootstrap

icon-image

ShadCN UI

icon-image

Styled Components

icon-image

GSAP

icon-image

Framer Motion

icon-image

Vite

icon-image

Shopify themes

icon-image

i18next & RTL

icon-image

Recharts

icon-image

Chart.js

icon-image

SaaS dashboards

icon-image

Figma to UI

icon-image

Dark / light mode

icon-image

4+ years

icon-image

Vistothemes

icon-image

Freelance UI

icon-image

NFT & crypto UI

icon-image

eCommerce UI

icon-image

WordPress CSS

icon-image

Remote-ready

icon-image

Muhammad Shahzaib

icon-image

Pixel-perfect

icon-image

Component architecture

icon-image

Live demos

icon-image

HTML5 & CSS3

icon-image

SCSS

icon-image

JavaScript

icon-image

TypeScript

icon-image

React

icon-image

Next.js

icon-image

Tailwind CSS

icon-image

Bootstrap

icon-image

ShadCN UI

icon-image

Styled Components

icon-image

GSAP

icon-image

Framer Motion

icon-image

Vite

icon-image

Shopify themes

icon-image

i18next & RTL

icon-image

Recharts

icon-image

Chart.js

icon-image

SaaS dashboards

icon-image

Figma to UI

icon-image

Dark / light mode

icon-image

4+ years

icon-image

Vistothemes

icon-image

Freelance UI

icon-image

NFT & crypto UI

icon-image

eCommerce UI

icon-image

WordPress CSS

icon-image

Remote-ready

icon-image

Muhammad Shahzaib

icon-image

Pixel-perfect

icon-image

Component architecture

icon-image

Live demos

icon-image
home

/

blog

2026-09-174 min read
CSS Animations: Adding Life to Your Website

Motion should communicate something — state change, hierarchy, feedback — not run just because it's possible. This portfolio itself was recently stripped down from a much more animation-heavy build to exactly this principle: one or two deliberate motion details instead of scroll-triggered effects on every element.

transition vs. @keyframes

transition animates a property change triggered by something else (hover, class toggle) between two states. @keyframes + animation define a self-contained sequence that can loop, reverse, or run through multiple steps — use it for anything more complex than A-to-B.

Animate transform and opacity

Both are compositor-only properties — the browser can animate them without re-running layout, which keeps things smooth even on lower-end devices. Animating width, height, top, or left directly forces layout recalculation every frame.

Respect prefers-reduced-motion

Some users get real physical discomfort from motion. Wrapping non-essential animation in a prefers-reduced-motion: no-preference query — or disabling it entirely for the reduce case — is a one-line fix that shouldn't be skipped.

fade-in-up.css
@keyframes fade-in-up {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.card {
  animation: fade-in-up 0.4s ease-out both;
}

@media (prefers-reduced-motion: reduce) {
  .card {
    animation: none;
  }
}

The best compliment a UI animation can get is that nobody consciously notices it — it should feel like the interface responding naturally, not performing.

← back to all writing

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

Figma to UI

Muhammad Shahzaib

4+ years

Vistothemes

Freelance UI

Muhammad Shahzaib

Remote work

pixel-perfect

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

UI-only scope

Muhammad Shahzaib

your mockups

production UI

Muhammad Shahzaib

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

Figma to UI

Muhammad Shahzaib

4+ years

Vistothemes

Freelance UI

Muhammad Shahzaib

Remote work

pixel-perfect

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

UI-only scope

Muhammad Shahzaib

your mockups

production UI

Muhammad Shahzaib

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

Figma to UI

Muhammad Shahzaib

4+ years

Vistothemes

Freelance UI

Muhammad Shahzaib

Remote work

pixel-perfect

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

UI-only scope

Muhammad Shahzaib

your mockups

production UI

Muhammad Shahzaib

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

Figma to UI

Muhammad Shahzaib

4+ years

Vistothemes

Freelance UI

Muhammad Shahzaib

Remote work

pixel-perfect

Muhammad Shahzaib

Frontend Developer

React & Next.js

TypeScript

Tailwind CSS

Muhammad Shahzaib

SaaS dashboards

Shopify themes

GSAP & Framer

Muhammad Shahzaib

ShadCN UI

RTL & i18next

UI-only scope

Muhammad Shahzaib

your mockups

production UI

Muhammad Shahzaib

arrow-image

Start a project — tell me what you’re building and your timeline.

logo-image

I’m Muhammad Shahzaib—a frontend developer with 4+ years at Vistothemes and on freelance SaaS projects (Deedible, Next Health, Truckers Finder). I build pixel-perfect UI with React, Next.js, TypeScript, Tailwind, ShadCN, and Shopify—plus HTML/CSS templates, RTL bilingual layouts, and dashboard work with Recharts and Chart.js. UI only; no backend or APIs.

Muhammad Shahzaib Copyright © 2026. All Rights Reserved.