في تطبيق React/Webpack الخاص بك الذي يستخدم CSS modules، تواجه تحديًا في تحديد أنماط التحوّل عند تمرير مؤشر الفأرة على وحدة نمطية داخل وحدة نمطية أخرى. في هذه الحالة، لديك وحدة نمطية تسمى .card
في ملف SCSS خاص بها، ووحدة نمطية أخرى تسمى .stat
وتعتبر محتوى يظهر داخل .card
.
الهدف هو تحديد أنماط عند تحوّل المؤشر فوق .card
بحيث يؤثر على أنماط .stat
الموجودة داخلها. ومع ذلك، تواجه تحديًا عند محاولة استيراد .card
داخل وحدة .stat
، حيث يتم تصدير جميع أنماط .card
إلى الإخراج الخاص بـ .stat
.
لحل هذا التحدي، يمكنك اتباع الطريقة الصحيحة للتعامل مع وحدات النمط في CSS modules. يمكنك استخدام التفوق التسلسلي (:global
) للوصول إلى عناصر خارج نطاق وحدة النمط. في حالتك، يمكنك تحقيق السلوك المطلوب كالتالي:
scss/* في ملف .card.scss */
.card {
/* أنماط .card هنا */
}
/* في ملف .stat.scss */
:global(.card:hover) .stat {
color: #000;
}
باستخدام :global
، يمكنك الوصول إلى نمط .card
من خلال وحدة النمط .stat
دون أن يتم تصدير كل الأنماط. هذا يسمح لك بتحقيق التأثير المرغوب عند تحوّل المؤشر فوق .card
مع تطبيق أنماط محددة على .stat
داخلها.
المزيد من المعلومات
تتيح لنا الوحدات النمطية في CSS modules تنظيم وتقسيم الأنماط الخاصة بنا في تطبيقات React/Webpack، مما يجعل الصيانة أسهل ويقلل من تداخل الأنماط بين المكونات. في حالة استخدامك للوحدات النمطية، هنا بعض المعلومات الإضافية التي قد تكون مفيدة:
-
تنظيم الأنماط:
يعتبر استخدام الوحدات النمطية أسلوبًا فعّالًا لتنظيم أنماط التصميم الخاصة بك. يمكنك تقسيم أنماط كل مكونة في ملف SCSS خاص بها، مما يسهل عملية الصيانة والتحكم. -
استخدام الـ
composes
:
يمكنك أيضًا استخدام خاصيةcomposes
لدمج أنماط من وحدة نمطية إلى أخرى بدون زيادة حجم الإخراج. على سبيل المثال:scss/* في ملف .stat.scss */ .stat { composes: someOtherClass from './other-styles.scss'; /* أنماط .stat هنا */ }
-
استخدام الـ
:local
:
في حال كنت بحاجة إلى تحديد أنماط محلية داخل وحدة نمطية، يمكنك استخدام الـ:local
:scss/* في ملف .card.scss */ :local(.card) { /* أنماط .card هنا */ }
وبذلك، يتم تحديد الأنماط المحلية داخل نطاق الوحدة النمطية.
-
استخدام Sass Variables:
يمكنك أيضًا الاستفادة من المتغيرات في Sass لتعريف قيم قابلة للإعادة استخدام وتسهيل عملية تحديث الأنماط بشكل مركزي.
من خلال متابعة هذه الممارسات، يمكنك بناء تصميم نظيف ومنظم باستخدام الوحدات النمطية في تطبيقك، وتجنب التداخلات غير المرغوب فيها بين الأنماط في مشروعك.