دلایل کار نکردن ویژگی CSS Transition در هنگام استفاده از رویداد mouseenter

css transition not working mouseenter event
20 آبان 1403

گاهی وقت‌ها ممکن است با مسائلی در CSS مثل کار نکردن transition در هنگام تغییر حالت توسط رویدادهای جاوااسکریپتی مانند mouseenter مواجه شوید. این مشکلات می‌توانند در برخی از شرایط به وجود بیایند که در این مقاله به آن‌ها خواهیم پرداخت.

اول از همه، مهم است بدانیم که ویژگی transition در CSS به تغییرات تدريجي برای ویژگی‌هایی مثل width، height، opacity و غیره مرتبط است. به این ترتیب، زمانی که یک المان با استفاده از ویژگی‌های CSS در وضعیت دیگر قرار می‌گیرد، transition به آرامی این تغییرات را اعمال می‌کند.

اگر شما در حال استفاده از ویژگی جاوااسکریپت mouseenter برای تغییر حالت یک المان هستید، باید توجه داشته باشید که CSS خود را درست تنظیم کرده‌اید و ویژگی‌های پشتیبانی‌کننده از transition را تنظیم کرده‌اید.

گاهی اوقات، این مشکل ممکن است به دلیل ترتیب نا‌مناسب تعریف transition یا ساختار HTML و CSS نادرست رخ دهد. برای کاهش احتمال مشکلات، مطمئن شوید که HTML شما به درستی ساختار یافته و قوانین CSS به درستی اعمال شده است.

بیایید به یک نمونه کد نگاهی بیندازیم:


      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>CSS Transition Example</title>
        <style>
          .myDiv {
            width: 100px;
            height: 100px;
            background-color: blue;
            transition: background-color 0.5s ease, transform 0.5s ease;
          }
          .hovered {
            background-color: green;
            transform: scale(1.2);
          }
        </style>
      </head>
      <body>
        <div class="myDiv" id="demoDiv"></div>
        <script>
          const demoDiv = document.getElementById('demoDiv');
          demoDiv.addEventListener('mouseenter', function() {
            demoDiv.classList.add('hovered');
          });
          demoDiv.addEventListener('mouseleave', function() {
            demoDiv.classList.remove('hovered');
          });
        </script>
      </body>
      </html>
    

در کد بالا:

<div class="myDiv"> نشان‌دهنده المانی است که ما می‌خواهیم با استفاده از CSS و جاوااسکریپت حالتش را تغییر دهیم.
transition: background-color 0.5s ease, transform 0.5s ease; برای .myDiv تعریف شده تا تغییرات رنگ پس‌زمینه و مقیاس به طور نرم انجام شود.
یک کلاس به نام .hovered داریم که تغییرات مدنظر (رنگ سبز و مقیاس بزرگ‌تر) را اعمال می‌کند.
demoDiv.addEventListener('mouseenter', ...) برای افزودن کلاس hovered به المان div زمانی که ماوس وارد می‌شود، استفاده شده.
demoDiv.addEventListener('mouseleave', ...) برای حذف کلاس hovered زمانی که ماوس خارج می‌شود، به کار رفته است.

سوالات متداول

؟

چرا ویژگی transition بعضی اوقات کار نمی‌کند؟

؟

چگونه از transition در CSS به درستی استفاده کنم؟

؟

چرا تغییرات در جاوااسکریپت نمی‌تواند CSS transition را فعال کند؟