Cashar 11 / 20

Wareegyada iyo Dhaqdhaqaaqa (Transitions & Animations)

Baro CSS transitions, @keyframes animations, transforms, iyo sida loo sameeyo dhaqdhaqaaq quruxbadan.

Dhaqdhaqaaqu (Motion) wuxuu mareegta internetka siiyaa noolaan iyo shakhsiyad (personality) [1]. CSS waxay leedahay laba siyaabood oo dhaqdhaqaaq lagu daro: transitions (isbeddellada fudud) iyo animations (dhaqdhaqaaqa kakan). Casharkan waxaan ku baran doonaa labadaba, iyadoo ay weheliyaan sifooyinka u-beddelka (Transforms) iyo tixgelinta ku-habboonaanta adeegsiga (accessibility) [1].


Transitions — Isbeddellada Fudud

Sifada transition waxay u oggolaataa sifooyinka CSS inay si tartiib ah oo naxariis leh isu beddelaan:

.badhanka {
  background: #2563eb;
  transition: background 0.3s ease;
}

.badhanka:hover {
  background: #1d4ed8;
}

Sifooyinka Transitions

.curiye {
  /* Habka Gaaban (Shorthand): sifo, muddo, habka waqtiga, daahidda */
  transition: all 0.3s ease 0s;

  /* Qaabaynta sifo gaar ah: */
  transition: background 0.3s ease;
  transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55);

  /* Qaabaynta sifooyin badan isla markaana kala duwan: */
  transition:
    background 0.3s ease,
    transform 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55),
    opacity 0.2s linear;
}
SifadaQiimaha tusaalahaSharaxaadda
transition-propertybackground, transform, allSifooyinka la rabo inay isbeddelaan
transition-duration0.3s, 300msMuddada uu isbeddelku qaadanayo
transition-timing-functionease, linear, ease-in-outSida isbeddelku u soconayo (xawaaraha)
transition-delay0.1s, 500msMuddada la sugayo ka hor intaan isbeddelku bilaaban

Hababka Waayaha (Timing Functions)

Hab-socodka waqtiga ayaa go’aamiya sida uu dareemo dhaqdhaqaaqa isbeddelka:

.box {
  transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
QiimahaSida uu u dareemayo dhaqdhaqaaqa
easeWuxuu ku bilaabmaa si deggen, haddana wuu dhex-ordaa, dhamaadkana wuu degaa
linearXawaare isku mid ah laga bilaabo ilaa dhammaadka
ease-inKu bilaabma gaabis, kuna dhammaada si degdeg ah
ease-outKu bilaabma degdeg, kuna dhammaada si gaabis ah
ease-in-outKu bilaabma kuna dhammaada si gaabis ah
cubic-bezier(n,n,n,n)Hab-socod si gaar ah loo xakameeyay (custom timing curve)

Sifada transform — U-beddelka Qaabka

Sifada transform waxay awood u leedahay inay beddesho muuqaalka ama booska curiyaha, iyadoo aan wax saameyn ah ku yeelanayn curiyayaasha kale ee ku xeeran:

.kaadhka:hover {
  transform: translateY(-8px);    /* Wuxuu curiyaha u dhaqaajiyaa kor ama hoos */
  transform: scale(1.05);          /* In curiyaha la weyneeyo ama la yareeyo */
  transform: rotate(3deg);         /* In curiyaha la wareejiyo */
  transform: skewX(-2deg);         /* In curiyaha dhinac loo iilo */
}

Isku-darka dhowr transform isla markaana hal mar ah:

.kaadhka:hover {
  transform: translateY(-8px) scale(1.02);
  transition: transform 0.3s ease;
}

Ku-qaabaynta @keyframes — Dhaqdhaqaaqa Kakan

Marka aad u baahan tahay dhaqdhaqaaqyo dhowr tallaabo ka kooban ama mid joogto ah oo aan joogsanayn:

@keyframes sabeyn {
  0% {
    transform: translateY(0);
    opacity: 1;
  }
  50% {
    transform: translateY(-20px);
    opacity: 0.8;
  }
  100% {
    transform: translateY(0);
    opacity: 1;
  }
}

.sabeynaya {
  animation: sabeyn 3s ease-in-out infinite;
}

Sifooyinka Animation-ka

.curiye {
  animation-name: sabeyn;
  animation-duration: 3s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-direction: alternate;
  animation-fill-mode: both;
  animation-delay: 0s;

  /* Habka Gaaban (Shorthand): Magaca, muddada, qaabka xawaaraha, inta jeer, iyo dhinaca socodka */
  animation: sabeyn 3s ease-in-out infinite alternate;
}
SifadaTusaaleSharaxaadda
animation-namesabeynMagaca la siiyay @keyframes
animation-duration3sMuddada uu hal wareeg qaadanayo
animation-timing-functionease-in-outSida uu u dareemayo dhaqdhaqaaqa
animation-iteration-countinfiniteInta jeer ee dib loo celcelinayo
animation-directionalternateDhinaca uu u soconayo (hore, dib, ama is-bedbeddel)
animation-fill-modebothSida uu curiyuhu u dhowrayo qaabka ka hor ama ka dib dhaqdhaqaaqa
animation-delay0.5sDaahidda ka hor inta uusan bilaaban

Sifada will-change — Hagaajinta Waxqabadka (Performance)

Bog-furayaashu waxay si toos ah u hagaajiyaan koodka, laakiin waxaad ka caawin kartaa inaad u sii sheegto curiyayaasha is-beddelaya si loogu diyaariyo kaarka garaafiska (GPU):

.animated-element {
  will-change: transform, opacity;
}

Ogow: Iska ilaali inaad si xad-dhaaf ah u adeegsato will-change — waa sifo culays weyn ku keeni karta xusuusta kombiyuutarka ama mobilka haddii mashaariic badan lagu qoro.


Ixtiraamidda Dookha Isticmaalaha (prefers-reduced-motion)

Dadka qaar, dhaqdhaqaaqa degdega ah ee shaashadda wuxuu ku keeni karaa xanuun ama dawakhaad. Sidaas darteed, had iyo jeer isticmaal weydiinta prefers-reduced-motion:

/* Dhaqdhaqaaqyada oo dhan ku dhim daqiiqad aad u yar si loo ixtiraamo dookha isticmaalaha: */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

Tani waxay xaqiijinaysaa in mareegtaadu tahay mid ay dhib yar u adeegsan karaan dadka u nugul ama dhibsanaya dhaqdhaqaaqa dhibka badan.


Tusaalooyin Waaryci ah

Habaynta Badhanka marka tilmaamuhu dul dego (Hover)

.badhanka {
  background: #2563eb;
  color: white;
  padding: 12px 24px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.25s ease;
}

.badhanka:hover {
  background: #1d4ed8;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.4);
}

.badhanka:active {
  transform: translateY(0);
  box-shadow: none;
}

Muujiyaha Sugitaanka (Loading Spinner)

@keyframes wareejin {
  to { transform: rotate(360deg); }
}

.spinner {
  width: 32px;
  height: 32px;
  border: 3px solid #e2e8f0;
  border-top-color: #2563eb;
  border-radius: 50%;
  animation: wareejin 0.8s linear infinite;
}

Muuqaalka Qolfoofka inta wax la soo dajinayo (Skeleton Loading)

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.skeleton {
  height: 20px;
  background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s ease-in-out infinite;
  border-radius: 4px;
}

Tusaale Mashruuc Dhamaystiran oo ku saabsan Animations-ka

<!DOCTYPE html>
<html lang="so">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Transitions &amp; Animations</title>
  <style>
    * { box-sizing: border-box; margin: 0; padding: 0; }
    body {
      font-family: system-ui, sans-serif;
      background: #f8fafc;
      overflow-x: hidden;
    }

    /* Ixtiraamidda Dookha Isticmaalaha (prefers-reduced-motion) */
    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
      }
    }

    .hero {
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      text-align: center;
      padding: 40px 20px;
      background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
      position: relative;
      overflow: hidden;
    }

    .hero h1 {
      color: white;
      font-size: clamp(2rem, 5vw, 3rem);
      animation: soogal 0.8s ease-out both;
    }
    .hero p {
      color: #94a3b8;
      font-size: clamp(0.9rem, 2vw, 1.1rem);
      margin-top: 12px;
      max-width: 500px;
      animation: soogal 0.8s ease-out 0.2s both;
    }

    @keyframes soogal {
      from {
        opacity: 0;
        transform: translateY(30px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    /* Kaadhka sabeynaya (Floating card) */
    @keyframes sabeyn {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-16px); }
    }

    .kaadhka-sabeyn {
      background: rgba(255,255,255,0.06);
      backdrop-filter: blur(12px);
      border: 1px solid rgba(255,255,255,0.1);
      border-radius: 20px;
      padding: 32px 48px;
      margin-top: 32px;
      animation: sabeyn 4s ease-in-out infinite;
      will-change: transform;
      color: white;
    }

    /* Badhamada (Buttons) */
    .badhano {
      display: flex;
      gap: 16px;
      margin-top: 28px;
      flex-wrap: wrap;
      justify-content: center;
    }

    .btn {
      padding: 14px 28px;
      border-radius: 99px;
      font-size: 0.9rem;
      font-weight: 600;
      text-decoration: none;
      transition: all 0.25s ease;
      cursor: pointer;
      border: none;
    }
    .btn-primary {
      background: #3b82f6;
      color: white;
    }
    .btn-primary:hover {
      background: #2563eb;
      transform: translateY(-2px);
      box-shadow: 0 8px 20px rgba(59, 130, 246, 0.4);
    }
    .btn-primary:active {
      transform: translateY(0);
    }
    .btn-secondary {
      background: transparent;
      border: 1.5px solid rgba(255,255,255,0.2);
      color: white;
    }
    .btn-secondary:hover {
      background: rgba(255,255,255,0.08);
      transform: translateY(-2px);
    }

    /* Qaybta Sifooyinka (Features Section) */
    .qaybta {
      padding: 60px 32px;
      max-width: 800px;
      margin: 0 auto;
    }
    .qaybta h2 {
      font-size: 1.5rem;
      margin-bottom: 24px;
      color: #0f172a;
    }

    /* Kaadhadhka (Cards) */
    .cards {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
      gap: 20px;
    }
    .card {
      background: white;
      border-radius: 14px;
      padding: 24px;
      border: 1px solid #e2e8f0;
      transition: all 0.3s ease;
      cursor: default;
    }
    .card:hover {
      transform: translateY(-6px) scale(1.02);
      box-shadow: 0 12px 30px rgba(0,0,0,0.08);
      border-color: #3b82f6;
    }
    .card .icon { font-size: 2rem; margin-bottom: 8px; }
    .card h3 {
      font-size: 0.95rem;
      color: #0f172a;
      transition: color 0.3s ease;
    }
    .card:hover h3 { color: #2563eb; }
    .card p {
      font-size: 0.85rem;
      color: #64748b;
      margin-top: 6px;
      line-height: 1.6;
    }

    /* Muujiyaha rasmiga ah ee Loading-ka */
    .spinner-weelka {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-top: 24px;
    }
    .spinner {
      width: 28px;
      height: 28px;
      border: 3px solid #e2e8f0;
      border-top-color: #3b82f6;
      border-radius: 50%;
      animation: wareejin 0.8s linear infinite;
    }
    @keyframes wareejin {
      to { transform: rotate(360deg); }
    }

    /* Baarka muujiya hannaanka dhowaan-dhammaadka */
    .loading-bar {
      width: 100%;
      height: 4px;
      background: #e2e8f0;
      border-radius: 99px;
      overflow: hidden;
      margin-top: 16px;
    }
    .loading-bar-inner {
      height: 100%;
      width: 30%;
      background: linear-gradient(90deg, #3b82f6, #8b5cf6);
      border-radius: 99px;
      animation: loading 2s ease-in-out infinite;
    }
    @keyframes loading {
      0% { width: 0%; margin-left: 0; }
      50% { width: 60%; margin-left: 40%; }
      100% { width: 0%; margin-left: 100%; }
    }
  </style>
</head>
<body>

<div class="hero">
  <h1>CSS Animations</h1>
  <p>Baro sida loo sameeyo dhaqdhaqaaq qurux badan oo fudud — transitions, keyframes, iyo transforms.</p>
  <div class="kaadhka-sabeyn">
    ✦ 20 Cashar oo CSS ah ✦
  </div>
  <div class="badhano">
    <button class="btn btn-primary">Ku Bilaab Maanta</button>
    <button class="btn btn-secondary">Akhri Faahfaahin</button>
  </div>
</div>

<div class="qaybta">
  <h2>Sifooyinka Dhaqdhaqaaqa</h2>
  <div class="cards">
    <div class="card">
      <div class="icon">↗️</div>
      <h3>Transition</h3>
      <p>Isbadal naxariis leh inta u dhaxaysa laba xaalad — hover, focus, iwm.</p>
    </div>
    <div class="card">
      <div class="icon">🔄</div>
      <h3>Transform</h3>
      <p>U-beddelka qaabka: translate, rotate, scale, iyo skew.</p>
    </div>
    <div class="card">
      <div class="icon">🎬</div>
      <h3>Keyframes</h3>
      <p>Dhaqdhaqaaq kakan oo leh talaabooyin badan — @keyframes.</p>
    </div>
    <div class="card">
      <div class="icon">⏳</div>
      <h3>Spinner / Loading</h3>
      <p>Sida loo sameeyo loading spinner, skeleton, iyo muujinta sugitaanka.</p>
    </div>
  </div>

  <div class="spinner-weelka">
    <div class="spinner"></div>
    <span style="color:#64748b; font-size:0.9rem;">Waxaa la soo dejinayaa...</span>
  </div>
  <div class="loading-bar">
    <div class="loading-bar-inner"></div>
  </div>
</div>

</body>
</html>

Casharka xiga: Hababka Ugu Fiican iyo Dayactirka Koodka CSS (CSS Best Practices).

Start today · It's free

Ready to learn
something new?

Browse community-written courses on any subject, or share your expertise by contributing on GitHub .

Browse Courses