Tailwind CSS • المستوى الرابع • الدرس 1
العودة لفهرس المستوىالتخصيص وإضافة الكلاسات الخاصة (Customization & @apply)
أهداف الدرس
- توسيع الثيم الافتراضي بإضافة ألوان وخطوط في
tailwind.config.js. - تجميع كلاسات Utility المكررة بـ
@applyللحفاظ على نظافة القوالب. - تنظيم الكلاسات المخصصة داخل طبقات
@layer componentsو@layer utilities. - إعادة استخدام الأنماط عبر المتغيرات (مثل: btn-sm, btn-md, btn-lg) لتنظيم نظام التصميم.
1. تنظيف وتجميع التنسيقات
عندما يتكرر زر أو بطاقة بشكل كبير في تطبيقك، يمكنك الاستعانة بالموجّه @apply لتجميع كلاسات Tailwind المتكررة في كلاس CSS مخصص ومختصر واحد.
css
/* globals.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer components {
/* الأزرار الأساسية */
.btn-primary {
@apply bg-purple-600 hover:bg-purple-700 text-white font-bold
px-6 py-3 rounded-none transition-all
active:scale-95;
}
.btn-danger {
@apply bg-rose-600 hover:bg-rose-700 text-white font-bold
px-6 py-3 rounded-none transition-all
active:scale-95;
}
/* البطاقات */
.card {
@apply bg-slate-800 border border-slate-700 rounded-none
p-6 hover:border-purple-500/40 transition-all;
}
/* المدخلات */
.input-field {
@apply w-full bg-slate-800 border border-slate-700
focus:border-purple-500 focus:ring-2 focus:ring-purple-500/20
text-white px-4 py-3 rounded-none transition-all outline-none;
}
}
/* الآن في أي مكون */
// <button class="btn-primary">حفظ</button>
// <button class="btn-danger">حذف</button>2. تخصيص الثيم عبر tailwind.config.js
يمكنك توسيع الثيم الافتراضي لإضافة ألوان، خطوط، مسافات مخصصة لمشروعك.
javascript
// tailwind.config.js
module.exports = {
content: ['./src/**/*.{js,jsx,ts,tsx}'],
theme: {
extend: {
// ألوان مخصصة للعلامة التجارية
colors: {
brand: {
50: '#f5f3ff',
500: '#8b5cf6',
900: '#4c1d95',
},
},
// خطوط مخصصة
fontFamily: {
display: ['Playfair Display', 'serif'],
},
// مسافات إضافية
spacing: {
'128': '32rem',
},
// حركات مخصصة
animation: {
'bounce-slow': 'bounce 3s infinite',
},
},
},
plugins: [],
};3. متى تستخدم @apply ومتى تتجنبه؟
استخدم @apply عندما
- يكون الزر/البطاقة متكررة بشكل كبير
- ترغب بنظام تصميم موحد (Design System)
- تحتاج لتوحيد الأنماط عبر المشروع
- تعمل على مكونات JSX معقدة
تجنّب @apply عندما
- الكلاس يُستخدم مرة أو مرتين فقط
- تحتاج لتعديلات سياقية خاصة
- تُضخّم حجم CSS بلا فائدة
- تريد مرونة قصوى في التنسيق
التطبيق العملي المباشر
تحدي الدرس الأول: بناء نظام أزرار موحد
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- غلّف الكل في حاوية
<div class="space-y-6 p-8">. - أضف
btn-primary(بنفسجي) وbtn-secondary(رمادي) وbtn-danger(أحمر) وbtn-success(أخضر) في صف واحد بـflex flex-wrap justify-center gap-3. - أضف زر
btn-ghostبخلفية شفافةbg-transparent hover:bg-purple-500/10مع حدودborder-2 border-purple-500/50. - أضف 3 أزرار بأحجام مختلفة:
btn-sm(text-xs, px-3 py-1.5) وbtn-md(text-base) وbtn-lg(text-lg, px-8 py-4). - أضف بطاقة
cardبـbg-slate-800 border border-slate-700 p-6 hover:border-purple-500/40تحتوي على أيقونة دائرية. - أضف حقل إدخال
input-fieldبـbg-slate-800 border border-slate-700 focus:border-purple-500 focus:ring-2 focus:ring-purple-500/20.
⏳ جارٍ تحميل المحرر التفاعلي...