ویژگی تصویر

طراحی کارت خبر با CSS — راهنمای جامع و عملی

  /  CSS   /  طراحی کارت خبر با CSS
بنر تبلیغاتی الف

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

اصول طراحی کارت خبر

  • خوانایی: تیتر و خلاصه باید واضح و مختصر باشد.
  • درجه‌بندی بصری: اندازه قلم، رنگ و فاصله برای هدایت چشم استفاده شود.
  • قابلیت لمسی: در موبایل عناصر کلیک‌پذیر بزرگ‌تر باشند.
  • دسترس‌پذیری: استفاده از نقش‌ها (roles) و متن جایگزین برای تصاویر.
  • عملکرد: بارگذاری تصاویر و انیمیشن‌های سبک.

نمونهٔ ساختار HTML پایه

<article class="news-card">
  <figure class="card-media">
    <img src="news.jpg" alt="خلاصه تصویر خبر">
  </figure>
  <div class="card-body">
    <h4 class="card-title">عنوان خبر</h4>
    <p class="card-excerpt">خلاصه‌ای کوتاه از خبر که خواننده را جذب کند.</p>
    <div class="card-meta">
      <time datetime="2025-11-03">۳ نوامبر ۲۰۲۵</time>
      <a href="#" class="read-more">ادامه</a>
    </div>
  </div>
</article>

این HTML ساختار پایهٔ کارت خبری است: یک بخش رسانه (تصویر)، بدنه شامل تیتر و خلاصه، و متادیتا. استفاده از تگ‌های معنایی مثل <article> و <figure> به سئوی بهتر و هم‌خوانی با استانداردهای دسترس‌پذیری کمک می‌کند.

مثال CSS کاربردی و ساده

/* CSS پایه برای کارت خبر */.news-card{
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: 12px;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 6px 18px rgba(0,0,0,0.06);
  overflow: hidden;
  transition: transform .18s ease, box-shadow .18s ease;
}
.news-card:hover{
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0,0,0,0.12);
}
.card-media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.card-body{
  padding: 12px 14px;
}
.card-title{
  font-size: 1rem;
  margin: 0 0 6px 0;
  line-height: 1.25;
}
.card-excerpt{
  font-size: 0.9rem;
  color: #555;
  margin: 0 0 10px 0;
}
.card-meta{
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.85rem;
  color: #888;
}

این CSS یک کارت افقی ساده می‌سازد که شامل تصویر ثابت در ستون اول و متن در ستون دوم است. grid برای چینش ستون‌ها استفاده شده تا چینش منظم و انعطاف‌پذیر داشته باشیم. transition و transform برای افکت شناور (hover) اعمال شده‌اند.

پاسخگویی (Responsive) و بهینه‌سازی برای موبایل

@media (max-width: 600px){
  .news-card{
    grid-template-columns: 1fr;
  }
  .card-media{
    aspect-ratio: 16/9;
  }
  .card-body{
    padding: 10px;
  }
}

در موبایل معمولاً بهتر است تصویر بالا و متن پایین قرار گیرد؛ برای این منظور ستون‌ها به یک ستون تبدیل شده‌اند. استفاده از aspect-ratio باعث حفظ نسبت تصویر بدون نیاز به جاوااسکریپت می‌شود و سرعت و پایداری رندر را بهتر می‌کند.

دسترس‌پذیری و سئو — نکات تخصصی

  • از alt توصیفی برای تصاویر استفاده کنید تا کاربران با صفحه‌خوان محتوای تصویر را درک کنند.
  • از <time datetime=”…”> برای خواندن تاریخ توسط موتورهای جستجو و ربات‌ها استفاده کنید.
  • در صورت نیاز به لینک قابل کلیک برای کل کارت، از <a> بلوکی یا نقش aria استفاده کنید.

مثال بهبود دسترس‌پذیری (رفع مشکل کلیک‌پذیری)

<article class="news-card" role="article" aria-labelledby="title-1">
  <figure class="card-media">
    <img src="news.jpg" alt="نمایی از مراسم افتتاح">
  </figure>
  <div class="card-body">
    <h4 id="title-1" class="card-title">افتتاح نمایشگاه بین‌المللی</h4>
    <!-- ... -->
  </div>
</article>

در این نسخه از attributes معنایی استفاده شده تا صفحه‌خوان‌ها بتوانند نقش و عنوان را بهتر درک کنند. اگر می‌خواهیم کل کارت کلیک‌پذیر باشد، می‌توانیم عنصر <a> را دور کارت قرار دهیم یا از JavaScript برای مدیریت کیبورد استفاده کنیم، اما بهترین روش استفاده از عناصر معنایی همراه با لینک واضح است.

جدول سریع: ویژگی‌های پیشنهادی CSS برای کارت‌های خبری

ویژگیمقدار پیشنهادی
border-radius6px — 12px
box-shadowملایم (مثلاً rgba(0,0,0,0.06) تا 0.15)
object-fitcover
font-size (title)1rem — 1.125rem
spacing8px — 16px

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

  • از CSS variables برای تم‌ها استفاده کنید (–card-bg, –card-radius) تا تغییرات سریع شود.
  • برای بارگذاری تصاویر از تکنیک‌های lazy-loading یا srcset استفاده کنید تا سرعت صفحه بهتر شود.
  • انیمیشن‌ها را تحت media query prefers-reduced-motion کنترل کنید تا تجربهٔ کاربری برای افراد حساس راحت‌تر باشد.

نمونهٔ بهینه‌شده CSS با متغیرها و کاهش حرکت

:root{
  --card-bg: #fff;
  --card-radius: 8px;
  --card-shadow: 0 6px 18px rgba(0,0,0,0.06);
}
.news-card{
  background: var(--card-bg);
  border-radius: var(--card-radius);
  box-shadow: var(--card-shadow);
  transition: transform .18s ease, box-shadow .18s ease;
}
@media (prefers-reduced-motion: reduce){
  .news-card{ transition: none; transform: none; }
}

در این CSS از متغیرهای ریشه استفاده شده تا تغییر رنگ و سایه در تم‌ها ساده‌تر شود. همچنین با prefers-reduced-motion به کاربرانی که انیمیشن را دوست ندارند احترام گذاشته‌ایم.

موارد استفاده و ترکیب در پروژه‌ها

  • سایت‌های خبری و بلاگ‌ها: نمایش خلاصه مقالات در صفحهٔ اصلی یا نتایج جستجو.
  • داشبورد محتوا: نمایش آخرین مقالات، اعلان‌ها یا اعلان‌های تیمی.
  • صفحهٔ لیست محصولات: با تغییر متن و متادیتا، کارت مشابه می‌تواند برای معرفی محصولات مناسب باشد.

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

اگر نمونهٔ قابل اجرا یا نسخهٔ سفارشی‌شده‌ای می‌خواهید (با قابلیت‌های lazy-loading، srcset یا تعاملات پیچیده‌تر)، می‌توانم کد کامل‌تری براساس نیاز شما آماده کنم.

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

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