ویژگی تصویر

طراحی لیست قیمت انیمیشنی با CSS

  /  CSS   /  طراحی لیست قیمت انیمیشنی با CSS
بنر تبلیغاتی الف

لیست قیمت انیمیشنی با CSS یکی از المان‌های محبوب در طراحی وب مدرن است که به کاربران کمک می‌کند تا انتخاب درست‌تری داشته باشند و تجربه کاربری (UX) را تقویت می‌کند. در این مقاله به اصول طراحی، نمونه‌کد عملی، نکات دسترس‌پذیری و بهینه‌سازی عملکرد خواهیم پرداخت.

چرا از انیمیشن در لیست قیمت استفاده کنیم؟

  • جلب توجه به پلن‌های پیشنهادی (highlight): با انیمیشن می‌توان پلنی را برجسته کرد.
  • افزایش تعامل: افکت‌های hover و focus حس تعاملی به کاربران می‌دهند.
  • اطلاعات تدریجی: جابجایی و نمایش جزئیات به صورت مرحله‌ای باعث خوانایی بهتر می‌شود.

اصول مهم قبل از شروع

  • دسترس‌پذیری: توجه به keyboard navigation و prefers-reduced-motion
  • عملکرد: انیمیشن‌های سخت‌افزاری (transform, opacity) ترجیح داده شوند
  • واکنش‌گرا: طراحی ریسپانسیو برای موبایل و دسکتاپ

نمونه پایه: HTML ساختار کارت قیمت

<div class="pricing-grid">
  <article class="price-card">
    <header class="card-head">
      <h3>Basic</h3>
      <p class="price">$9<span>/mo</span></p>
    </header>
    <ul class="features">
      <li>5 Projects</li>
      <li>10 GB Storage</li>
      <li>Email Support</li>
    </ul>
    <footer class="card-foot">
      <a class="cta" href="#signup" aria-label="Choose Basic plan">Choose</a>
    </footer>
  </article>
  <!-- Repeat for other plans -->
</div>

کد بالا ساختار پایهٔ کارت قیمت را نشان می‌دهد: یک container (pricing-grid)، هر کارت به صورت article و بخش‌های header، ul برای امکانات و footer برای دکمه. استفاده از article برای معنایی کردن محتوای هر پلن و aria-label برای دکمه‌ی CTA اهمیت دارد.

نمونه CSS انیمیشنی

:root{
  --bg:#fff;
  --accent:#4f46e5;
  --muted:#6b7280;
  --card-bg:linear-gradient(180deg,#ffffff, #fbfbff);
}

.pricing-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:1.25rem;
  align-items:start;
}

.price-card{
  background:var(--card-bg);
  border-radius:12px;
  padding:1.25rem;
  position:relative;
  overflow:hidden;
  transform:translateZ(0);
  transition:transform .28s cubic-bezier(.2,.8,.2,1), box-shadow .28s;
  box-shadow:0 6px 18px rgba(16,24,40,0.06);
}

/* Hover Animation */.price-card:hover,
.price-card:focus-within{
  transform:translateY(-8px) scale(1.02);
  box-shadow:0 18px 40px rgba(16,24,40,0.12);
}

/* Floating subtle animation using keyframes */@keyframes float {
  0%{transform:translateY(0)}
  50%{transform:translateY(-6px)}
  100%{transform:translateY(0)}
}
.price-card.popular{
  animation:float 4s ease-in-out infinite;
}

/* CTA button animation */.cta{
  display:inline-block;
  padding:.55rem .9rem;
  background:var(--accent);
  color:#fff;
  border-radius:8px;
  text-decoration:none;
  transition:transform .18s, box-shadow .18s;
}
.cta:hover,
.cta:focus{
  transform:translateY(-3px);
  box-shadow:0 8px 20px rgba(79,70,229,0.18);
}

/* Respect user preferences */@media (prefers-reduced-motion: reduce){
  .price-card, .price-card.popular, .cta{ 
    transition:none;
    animation:none;
  }
}

/* Responsive tweaks */@media (max-width:540px){
  .price-card{ padding:1rem; }
  .cta{ width:100%; text-align:center; display:block; }
}

این CSS از transform برای تغییر مکان و مقیاس استفاده می‌کند که توسط GPU شتاب‌داده می‌شود و بار پردازشی کمتری نسبت به انیمیت کردن ویژگی‌های layout دارد. keyframes برای کارت محبوب (popular) جلوه‌ای آرام و شناور می‌سازد و media query برای کاربران با prefers-reduced-motion ارائه شده است.

بهبودها و نکات حرفه‌ای

  • از will-change فقط برای عناصر معدود استفاده کنید تا مصرف حافظه افزایش نیابد.
  • از سایه‌ها و رنگ‌های نرم برای خوانایی بهتر قیمت استفاده کنید.
  • برای تغییر متن قیمت از opacity/transform استفاده کنید تا از reflow جلوگیری شود.
  • برای دکمه‌ها از :focus-visible و outline منطقی استفاده کنید تا کاربران صفحه‌خوان و کیبرد بتوانند به‌راحتی ناوبری کنند.

نمونه جدول مقایسهٔ سریع CSS

خاصیتچرا استفاده کنیم
transformشتاب سخت‌افزاری، بدون reflow
transitionتعاملات نرم (hover/focus)
animation (keyframes)افکت‌های تکرارشونده یا پیچیده
prefers-reduced-motionحفظ دسترس‌پذیری برای کاربران حساس به حرکت

دسترس‌پذیری (Accessibility)

  • از semantic HTML مانند <article> و <header> استفاده کنید.
  • دکمه‌ها باید قابل فوکوس باشند و با کلید Enter/Space فعال شوند.
  • برای توضیح بیشتر، aria-describedby برای اشاره به جزئیات پلن اضافه کنید.
  • برای کاربران با کاهش حرکت، انیمیشن‌ها غیرفعال شوند.

قابلیت استفاده در پروژه‌ها و CMS

این الگو به‌راحتی قابل وارد شدن در قالب‌های وردپرس، Shopify یا سیستم‌های استاتیک مثل Hugo و Jekyll است. کافی است HTML را به partial مربوطه اضافه کنید و CSS را در فایل اصلی قرار دهید یا به صورت ماژول در component بگنجانید. دادهٔ قیمت را می‌توان با JSON یا متغیرهای سرور جایگزین کرد تا پویا شود.

جمع‌بندی و توصیه‌های نهایی

طراحی لیست قیمت انیمیشنی با CSS ترکیبی از زیبایی و عملکرد است. از انیمیشن برای هدایت توجه استفاده کنید نه حواس‌پرتی؛ همیشه به دسترس‌پذیری و عملکرد فکر کنید؛ و از تکنیک‌های شتاب‌دهی سخت‌افزاری بهره ببرید. با رعایت این اصول، لیست قیمت شما هم جذاب و هم کاربردی خواهد شد.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: