طراحی کارت خبر با 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-radius | 6px — 12px |
| box-shadow | ملایم (مثلاً rgba(0,0,0,0.06) تا 0.15) |
| object-fit | cover |
| font-size (title) | 1rem — 1.125rem |
| spacing | 8px — 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 یا تعاملات پیچیدهتر)، میتوانم کد کاملتری براساس نیاز شما آماده کنم.
آیا این مطلب برای شما مفید بود ؟




