FA-TOOLS — Header Component

آموزش پیاده‌سازی افکت بزرگنمایی (Zoom on Hover) نرم روی کارت‌های وبلاگ

رفیق برنامه‌نویس، سلام! اگه دلت می‌خواد کارت‌های وبلاگت جون بگیرن و بازدیدکننده‌هات یه تجربه کاربری جذاب‌تر داشته باشن، درست اومدی. امروز می‌خوایم با هم یاد بگیریم چطور یه افکت زوم نرم و حرفه‌ای رو روی کارت‌های وبلاگ پیاده‌سازی کنیم که با حرکت ماوس روی کارت فعال میشه. این تکنیک نه تنها ظاهر سایتت رو حسابی مدرن و پویا می‌کنه، بلکه کاربر رو هم بیشتر درگیر محتوا نگه می‌داره. از پایه شروع می‌کنیم و قدم به قدم پیش میریم تا تهش یه کد تمیز و بهینه داشته باشیم. اگر دنبال ابزارهای حرفه‌ای برای کدنویسی هستی، حتماً یه سر به فروشگاه ابزارهای ما بزن؛ کلی اسنیپت و کد آماده داریم که کارت رو راحت می‌کنه. اگه هم سوالی داشتی، هر وقت خواستی می‌تونی با شماره ۰۹۲۰۰۲۲۳۲۷۸۹ تماس بگیری.

🗺️ نقشه راه بزرگنمایی (Zoom on Hover) نرم

این راهنما بهت کمک می‌کنه تا افکت جذاب زوم رو به کارت‌های وبلاگت اضافه کنی. بیا قدم به قدم بریم جلو:

  • 1️⃣ شناخت پایه: HTML (ساختار کارت)، CSS (استایل و انیمیشن)، JavaScript (برای کنترل پیشرفته).
  • 2️⃣ ساختار HTML: ساخت تگ‌های `div` برای کارت‌ها و تصویر.
  • 3️⃣ جادوی CSS: تعریف `transform: scale()`, `transition`, `overflow: hidden`.
  • 4️⃣ چاشنی JS (اختیاری): بهبود عملکرد، دیلی و کنترل بیشتر.
  • 5️⃣ رسپانسیو کردن: اطمینان از عملکرد صحیح روی همه دستگاه‌ها.
  • 6️⃣ عیب‌یابی: حل مشکلات رایج.

حواست باشه، هدف یه تجربه کاربری عالی و چشم‌نوازه! آماده‌ایم شروع کنیم؟

چرا افکت بزرگنمایی (Zoom on Hover) برای کارت‌های وبلاگت مهمه؟

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

💡 نکته حرفه‌ای: افکت‌ها باید نرم و سریع باشن تا کاربر اذیت نشه. سرعت بارگذاری و عملکرد کلی سایتت نباید فدای این جلوه‌های بصری بشه.

پیش‌نیازها و ابزارهای لازم

قبل از اینکه کلاهمون رو قاضی کنیم و بریم سراغ کدنویسی، لازمه یه سری پیش‌نیازها رو بشناسیم. برای این پروژه، ما به دانش ابتدایی از سه تکنولوژی اصلی توسعه وب نیاز داریم:

HTML: ستون فقرات ساختار

HTML (HyperText Markup Language) همون اسکلت‌بندی وب‌پیج ماست. ما از HTML برای ساختار دادن به کارت‌های وبلاگ و قرار دادن تصویر داخل اون‌ها استفاده می‌کنیم. هر کارت وبلاگ معمولاً شامل یک عکس، عنوان و خلاصه‌ای از متن هست. اگه می‌خوای اسنیپت‌های HTML بیشتری رو یاد بگیری، حتماً یه سر به بخش اسنیپت‌های HTML ما بزن.

CSS: جادوی استایل‌دهی و انیمیشن

CSS (Cascading Style Sheets) همون چیزیه که به کارت‌های ما ظاهر میده. اما فراتر از رنگ و فونت، CSS ابزارهای قدرتمندی برای ایجاد انیمیشن‌های نرم و ترنزیشن‌ها داره. ویژگی‌هایی مثل `transform`, `transition` و `overflow` کلید اصلی ایجاد افکت زوم ما هستن. برای تسلط بیشتر روی CSS، می‌تونی از اسنیپت‌های CSS آماده استفاده کنی.

JavaScript: کنترل پیشرفته و بهینه‌سازی (اختیاری)

JavaScript زبان برنامه‌نویسی وب هست که به صفحات ما تعامل میبخشه. با اینکه بیشتر افکت زوم ما رو CSS انجام میده، اما JS می‌تونه برای بهبودهایی مثل کنترل دقیق‌تر سرعت، تأخیر در زوم (debounce) یا مدیریت رویدادها در سناریوهای پیچیده‌تر استفاده بشه. البته برای این آموزش پایه، عمدتاً به CSS اکتفا می‌کنیم ولی در بخش‌های پیشرفته‌تر، کمی هم به سراغ JS می‌ریم.

گام به گام: پیاده‌سازی افکت بزرگنمایی

حالا که پیش‌نیازها رو شناختیم، بریم سراغ اصل مطلب: پیاده‌سازی عملی.

گام اول: ساختار HTML کارت وبلاگ

اول از همه، باید ساختار پایه یک کارت وبلاگ رو با HTML آماده کنیم. ما یه `div` اصلی برای کل کارت، یه `div` برای قسمت عکس و خود تگ `img` رو داخلش قرار میدیم. این `div` مخصوص عکس نقش یه “ماسک” رو ایفا می‌کنه.

(برای کپی، متن را انتخاب کنید یا از ابزار سایت استفاده کنید)


<div class="blog-card">
    <div class="card-image-wrapper">
        <img src="https://via.placeholder.com/400x250" alt="تصویر مقاله" class="card-image">
    </div>
    <div class="card-content">
        <h3>عنوان جذاب مقاله اینجا</h3>
        <p>خلاصه‌ای کوتاه و دلنشین از محتوای مقاله که کاربر رو جذب کنه...</p>
        <a href="#" class="read-more-btn">بیشتر بخوانید</a>
    </div>
</div>
    

گام دوم: استایل‌دهی پایه با CSS

حالا نوبت CSS هست. ابتدا یه استایل پایه برای کارت‌ها میدیم و بعد مهمترین بخش یعنی افکت زوم رو پیاده‌سازی می‌کنیم. تمرکز اصلی ما روی `card-image-wrapper` و `card-image` خواهد بود.

(برای کپی، متن را انتخاب کنید یا از ابزار سایت استفاده کنید)


.blog-card {
    width: 300px; /* عرض کارت */
    border: 1px solid #ddd;
    border-radius: 8px;
    overflow: hidden; /* خیلی مهم: برای پنهان کردن قسمت زوم شده خارج از کارت */
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    margin: 20px;
    transition: transform 0.3s ease; /* انیمیشن نرم برای خود کارت */
    background-color: #fff;
    cursor: pointer;
}

.blog-card:hover {
    transform: translateY(-5px); /* یه بالا رفتن کوچیک برای تعامل بیشتر */
}

.card-image-wrapper {
    width: 100%;
    height: 200px; /* ارتفاع ثابت برای کادر عکس */
    overflow: hidden; /* کلید اصلی: برای پنهان کردن قسمت‌های اضافه تصویر */
    position: relative;
}

.card-image {
    width: 100%;
    height: 100%;
    object-fit: cover; /* مطمئن شو عکس تمام کادر رو پر می‌کنه */
    transition: transform 0.4s ease; /* انیمیشن نرم برای زوم تصویر */
    transform: scale(1); /* وضعیت عادی: بدون زوم */
}

.blog-card:hover .card-image {
    transform: scale(1.1); /* در زمان هاور: 10% زوم */
}

.card-content {
    padding: 15px;
}

.card-content h3 {
    font-size: 1.3em;
    color: #333;
    margin-top: 0;
    margin-bottom: 10px;
}

.card-content p {
    font-size: 0.95em;
    color: #666;
    line-height: 1.5;
    margin-bottom: 15px;
}

.read-more-btn {
    display: inline-block;
    background-color: #3498db;
    color: #fff;
    padding: 8px 15px;
    border-radius: 5px;
    text-decoration: none;
    font-size: 0.9em;
    transition: background-color 0.3s ease;
}

.read-more-btn:hover {
    background-color: #2980b9;
}
    

تشریح کدهای CSS کلیدی:

  • `.blog-card` و `overflow: hidden;`: این خصوصیت روی کارت اصلی باعث میشه هر محتوایی که از مرزهای کارت خارج میشه (مثلاً قسمتی از عکس که زوم شده و بزرگ‌تر شده)، دیده نشه و فقط داخل کادر کارت بمونه.
  • `.card-image-wrapper` و `overflow: hidden;`: این `div` مثل یه پنجره عمل می‌کنه. عکس `card-image` داخل این پنجره زوم میشه و تنها قسمتی از اون که توی این پنجره قرار داره، قابل مشاهده‌ست.
  • `.card-image` و `transition: transform 0.4s ease;`: این خط باعث میشه تغییرات روی ویژگی `transform` (که همون زوم ما هست) به جای اینکه ناگهانی اتفاق بیفته، توی ۰.۴ ثانیه و به نرمی انجام بشه.
  • `transform: scale(1);` و `transform: scale(1.1);`: این همون جادوی زوم کردن هست. `scale(1)` یعنی اندازه عادی و `scale(1.1)` یعنی ۱۰ درصد بزرگ‌تر از اندازه اصلی. این تغییر وقتی اتفاق می‌افته که ماوس روی `blog-card` قرار می‌گیره (قانون `blog-card:hover .card-image`).

گام سوم: رسپانسیو کردن برای همه دستگاه‌ها

همونطور که میدونی، کاربران از دستگاه‌های مختلفی مثل موبایل، تبلت، لپ‌تاپ و حتی تلوزیون برای دیدن وب‌سایت‌ها استفاده می‌کنن. بنابراین، مهمه که کارت‌های ما روی هر صفحه‌ای به درستی نمایش داده بشن. ما با استفاده از Media Queries می‌تونیم استایل‌ها رو برای اندازه‌های مختلف صفحه تنظیم کنیم.

(برای کپی، متن را انتخاب کنید یا از ابزار سایت استفاده کنید)


/* استایل‌های پایه برای دسکتاپ (موجود در بالا) */

/* برای تبلت‌ها و لپ‌تاپ‌های کوچک */
@media (max-width: 992px) {
    .blog-card {
        width: 45%; /* دو کارت در یک ردیف */
        margin: 15px auto;
    }
}

/* برای موبایل‌ها */
@media (max-width: 768px) {
    .blog-card {
        width: 90%; /* یک کارت در یک ردیف */
        margin: 20px auto;
    }
    .card-image-wrapper {
        height: 180px; /* ارتفاع کمتر برای موبایل */
    }
    .card-content h3 {
        font-size: 1.2em;
    }
    .card-content p {
        font-size: 0.9em;
    }
}

/* برای دستگاه‌های خیلی کوچک */
@media (max-width: 480px) {
    .blog-card {
        width: 95%;
    }
    .card-image-wrapper {
        height: 150px;
    }
}

/* اگر کارت‌ها در یک Flexbox یا Grid قرار دارند (برای چیدمان چند ستونی) */
/* مثال: استایل‌دهی به کانتینر اصلی کارت‌ها */
.blog-cards-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: center; /* برای قرار گرفتن کارت‌ها در مرکز */
    gap: 30px; /* فاصله بین کارت‌ها */
    padding: 20px;
}
    

اگه داری از یه فریمورک مثل وردپرس استفاده می‌کنی، این استایل‌ها رو می‌تونی توی فایل `style.css` قالب یا از طریق بخش “تنظیمات سفارشی‌سازی” اضافه کنی.

گام چهارم: بهینه‌سازی و نکات پیشرفته (با چاشنی JavaScript)

تا اینجا ما با CSS یه افکت زوم عالی ساختیم. اما اگه بخوایم یه کم فراتر بریم و کنترل بیشتری داشته باشیم یا عملکرد رو بهینه کنیم، JavaScript وارد بازی میشه. مثلاً اگه نخوایم افکت زوم روی کل تصویر اعمال بشه و فقط یه بخش کوچیک ازش زوم بشه یا بخوایم یه دیلی (تأخیر) کوچیک داشته باشیم.

استفاده از JavaScript برای Debounce (کاهش فراخوانی مکرر)

گاهی اوقات حرکت سریع ماوس روی کارت می‌تونه باعث فعال و غیرفعال شدن سریع افکت بشه که ممکنه کمی آزاردهنده باشه. با `debounce` می‌تونیم یه تأخیر ایجاد کنیم تا مطمئن بشیم کاربر واقعاً قصد داره روی کارت بمونه.

(برای کپی، متن را انتخاب کنید یا از ابزار سایت استفاده کنید)


// کد JavaScript
document.addEventListener('DOMContentLoaded', () => {
    const cards = document.querySelectorAll('.blog-card');
    let timeoutId;

    const debounce = (func, delay) => {
        return function(...args) {
            clearTimeout(timeoutId);
            timeoutId = setTimeout(() => func.apply(this, args), delay);
        };
    };

    cards.forEach(card => {
        const image = card.querySelector('.card-image');

        card.addEventListener('mouseenter', debounce(() => {
            image.style.transform = 'scale(1.1)';
        }, 100)); // 100 میلی‌ثانیه تأخیر قبل از اعمال زوم

        card.addEventListener('mouseleave', () => {
            clearTimeout(timeoutId); // اگه ماوس رفت، تأخیر رو کنسل کن
            image.style.transform = 'scale(1)';
        });
    });
});
    

این کد به خصوص برای سناریوهایی که افکت زوم سنگین‌تره یا در کنارش افکت‌های دیگه هم فعال میشه، به درد می‌خوره. البته برای این مثال ساده، CSS به تنهایی کافیه و حتی بهتره که کارهایی که با CSS میشه انجام داد رو با CSS انجام بدیم، چون عملکرد بهتری داره.

افکت بزرگنمایی با حرکت ماوس در جهت خاص

اگر بخوایم یه افکت خیلی باحال‌تر داشته باشیم که تصویر نه فقط زوم بشه، بلکه با حرکت ماوس داخل کارت، تصویر هم یه حرکت کوچیک توی جهت مخالف داشته باشه، قضیه کمی پیچیده‌تر میشه و نیاز به JavaScript پیشرفته‌تر داره. به این افکت `Parallax Zoom` هم میگن.
برای چنین افکتی، لازمه مختصات ماوس رو نسبت به کارت به دست بیاریم و `transform: translate()` رو بر اساس اون تنظیم کنیم. این کار نیاز به محاسبه دقیق موقعیت `cursor` و به‌روزرسانی مداوم استایل داره که می‌تونه منابع بیشتری از سیستم رو درگیر کنه. پیشنهاد می‌کنم اگه نیاز مبرمی نداری، از همون روش CSS ساده‌تر استفاده کنی. ولی اگه خواستی عمیق‌تر بشی، می‌تونی توی اسنیپت‌های جاوااسکریپت دنبال مثال‌های پیچیده‌تر بگردی.

⚠️ توجه: همواره سعی کن از رویکرد “CSS-first” استفاده کنی. یعنی هر چیزی که با CSS قابل پیاده‌سازیه، با همون انجام بشه. JavaScript رو برای تعاملات پیچیده و بهبودهای عملکردی نگه دار.

جدول مقایسه روش‌های پیاده‌سازی زوم

برای اینکه بهتر متوجه بشی هر روشی چه مزایا و معایبی داره، یه نگاهی به این جدول میندازیم:

ویژگی زوم فقط با CSS زوم با CSS + JavaScript
سادگی پیاده‌سازی بالا (چند خط کد) متوسط تا پیچیده (بسته به افکت)
عملکرد (Performance) عالی (توسط مرورگر بهینه‌سازی شده) خوب تا متوسط (بسته به بهینه‌سازی کد JS)
قابلیت شخصی‌سازی محدود (فقط مقیاس و سرعت) بالا (حرکت پارالاکس، دیلی، کنترل دقیق)
پشتیبانی مرورگرها بسیار عالی (تمام مرورگرهای مدرن) عالی (همه مرورگرها JS رو پشتیبانی می‌کنند)
تأثیر بر سئو (SEO) ناچیز (مثبت، بهبود UX) ناچیز (مثبت، بهبود UX با احتیاط در عملکرد)

عیب‌یابی سریع (Troubleshooting)

بعضی وقت‌ها ممکنه با مشکلاتی روبرو بشی. نگران نباش، این طبیعیه. اینجا به چند تا مشکل رایج و راه حلشون اشاره می‌کنم:

مشکل ۱: تصویر از کادر کارت بیرون می‌زنه!

علت: فراموش کردی `overflow: hidden;` رو روی `blog-card` یا `card-image-wrapper` اعمال کنی. این ویژگی باعث میشه محتوای اضافی پنهان بمونه.

راه حل: مطمئن شو که هر دوی این سلکتورها `overflow: hidden;` رو دارن. به خصوص `card-image-wrapper` برای ماسک کردن تصویر زوم شده.

مشکل ۲: افکت زوم، نرم نیست و یهو اتفاق می‌افته.

علت: ویژگی `transition` رو فراموش کردی یا مقدارش رو درست تنظیم نکردی.

راه حل: به سلکتور `.card-image` این خط رو اضافه کن: `transition: transform 0.4s ease;`. می‌تونی مقدار `0.4s` رو برای سرعت بیشتر یا کمتر عوض کنی.

مشکل ۳: افکت زوم روی موبایل کار نمی‌کنه.

علت: رویداد `hover` در دستگاه‌های لمسی معنی نداره. `عثر` هاور فقط با ماوس کار می‌کنه.

راه حل: این یک محدودیت طبیعیه. برای موبایل، می‌تونی افکت زوم رو کلاً غیرفعال کنی (با استفاده از `media queries`) یا اگه می‌خوای تعامل داشته باشی، از رویداد `active` برای زمانی که کاربر روی کارت لمس می‌کنه استفاده کنی. معمولاً بهتره افکت‌ها روی موبایل کمتر باشن تا سرعت و سهولت استفاده حفظ بشه.

مشکل ۴: کدها داخل ویرایشگر بلوک وردپرس درست نمایش داده نمیشن یا استایل‌ها بهم می‌ریزه.

علت: ویرایشگر بلوک (گوتنبرگ) برای حفظ ثبات طراحی، برخی از استایل‌های اینلاین (inline styles) یا کدهای پیچیده رو ممکنه نادیده بگیره یا تغییر بده.

راه حل: برای کدهای HTML/CSS/JS، همیشه از بلوک “کد” یا “HTML سفارشی” (Custom HTML) در گوتنبرگ استفاده کن. برای استایل‌های بخش‌های مختلف مقاله (مثل کادرهای نکته یا اینفوگرافیک)، بهتره استایل‌ها رو به فایل CSS اصلی سایتت (child theme’s `style.css`) اضافه کنی و فقط کلاس‌های CSS رو در HTML به کار ببری. اما برای این آموزش، ما از استایل‌های اینلاین استفاده کردیم تا مستقیماً کار کنن؛ اگه مشکل دیدی، احتمالاً بهتره استایل‌ها رو به شیت جداگانه منتقل کنی.

حرف آخر

همونطور که دیدی، پیاده‌سازی یه افکت زوم نرم روی کارت‌های وبلاگت با کمی دانش HTML و CSS خیلی راحته و می‌تونه تأثیر زیادی روی جذابیت بصری و تجربه کاربری سایتت داشته باشه. اجله نکنید، کدها رو امتحان کن، با مقادیر مختلف `transition` و `scale` بازی کن تا به اون چیزی که دوست داری برسی. یادگیری کدنویسی یه مسیر جذاب و پر از کشف و تجربه است، و هر اسنیپت کدی که یاد می‌گیری، یه قدم به سمت حرفه‌ای‌تر شدن برمی‌داری. موفق باشی!

سوالات متداول (FAQ)

۱. آیا افکت زوم روی عملکرد سایت تأثیر منفی می‌ذاره؟

اگر از `transform` و `transition` در CSS استفاده کنی، تأثیر ناچیزی روی عملکرد سایتت داره، چون این ویژگی‌ها توسط GPU مرورگر بهینه سازی میشن. استفاده بیش از حد از JavaScript برای انیمیشن‌های پیچیده ممکنه در برخی موارد روی عملکرد تأثیر بگذاره، اما برای یه زوم ساده، CSS بهترین انتخابه.

۲. چطور می‌تونم سرعت یا شدت زوم رو تغییر بدم؟

سرعت زوم رو می‌تونی با تغییر مقدار زمان در ویژگی `transition` (مثلاً `0.4s` به `0.2s` برای سریع‌تر شدن یا `0.8s` برای کندتر شدن) کنترل کنی. شدت زوم رو هم با تغییر مقدار `scale()` در CSS (مثلاً `scale(1.1)` به `scale(1.05)` برای زوم کمتر یا `scale(1.2)` برای زوم بیشتر) تنظیم می‌کنی.

۳. آیا این افکت روی تصاویر با کیفیت پایین خوب به نظر می‌رسه؟

خیر، زوم کردن روی تصاویر با کیفیت پایین باعث میشه تصویر پیکسلی و ناواضح به نظر برسه. همیشه سعی کن از تصاویر با کیفیت و رزولوشن بالا استفاده کنی تا حتی پس از زوم هم وضوح خودشون رو حفظ کنن.

۴. چطور می‌تونم این افکت رو فقط روی یک قسمت خاص از کارت فعال کنم؟

اگه می‌خوای فقط روی بخش تصویر (و نه کل کارت) افکت هاور داشته باشی، باید انتخابگر CSS رو از `:hover` روی `.blog-card` به `:hover` روی `.card-image-wrapper` (یا هر بخشی که دوست داری) تغییر بدی. یعنی به جای `.blog-card:hover .card-image` بنویسی `.card-image-wrapper:hover .card-image`.

“`json
{
“@context”: “https://schema.org”,
“@type”: “FAQPage”,
“mainEntity”: [
{
“@type”: “Question”,
“name”: “آیا افکت زوم روی عملکرد سایت تأثیر منفی می‌ذاره؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “اگر از `transform` و `transition` در CSS استفاده کنی، تأثیر ناچیزی روی عملکرد سایتت داره، چون این ویژگی‌ها توسط GPU مرورگر بهینه سازی میشن. استفاده بیش از حد از JavaScript برای انیمیشن‌های پیچیده ممکنه در برخی موارد روی عملکرد تأثیر بگذاره، اما برای یه زوم ساده، CSS بهترین انتخابه.”
}
},
{
“@type”: “Question”,
“name”: “چطور می‌تونم سرعت یا شدت زوم رو تغییر بدم؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “سرعت زوم رو می‌تونی با تغییر مقدار زمان در ویژگی `transition` (مثلاً `0.4s` به `0.2s` برای سریع‌تر شدن یا `0.8s` برای کندتر شدن) کنترل کنی. شدت زوم رو هم با تغییر مقدار `scale()` در CSS (مثلاً `scale(1.1)` به `scale(1.05)` برای زوم کمتر یا `scale(1.2)` برای زوم بیشتر) تنظیم می‌کنی.”
}
},
{
“@type”: “Question”,
“name”: “آیا این افکت روی تصاویر با کیفیت پایین خوب به نظر می‌رسه؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “خیر، زوم کردن روی تصاویر با کیفیت پایین باعث میشه تصویر پیکسلی و ناواضح به نظر برسه. همیشه سعی کن از تصاویر با کیفیت و رزولوشن بالا استفاده کنی تا حتی پس از زوم هم وضوح خودشون رو حفظ کنن.”
}
},
{
“@type”: “Question”,
“name”: “چطور می‌تونم این افکت رو فقط روی یک قسمت خاص از کارت فعال کنم؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “اگه می‌خوای فقط روی بخش تصویر (و نه کل کارت) افکت هاور داشته باشی، باید انتخابگر CSS رو از `:hover` روی `.blog-card` به `:hover` روی `.card-image-wrapper` (یا هر بخشی که دوست داری) تغییر بدی. یعنی به جای `.blog-card:hover .card-image` بنویسی `.card-image-wrapper:hover .card-image`.”
}
}
]
}
“`

Table of Contents

آخرین نوشته‌ها