پرش به مطلب اصلی

مستندات معماری Tailwind

اطلاعات مستند

وضعیت: الزامی
مخاطبان هدف: مهندسی فرانت‌اند و پیاده‌سازی طراحی
نسخه: 2.0 (توسعه یافته)

1. فلسفه معماری

این سیستم طراحی بر اساس استراتژی توکن‌سازی مبتنی بر متغیرهای CSS ساخته شده است. برخلاف پیکربندی‌های استاندارد Tailwind که مقادیر را در زمان build به صورت "hard-code" تعریف می‌کنند (مثلاً red-500 = #ef4444)، این معماری از کلاس‌های Tailwind به عنوان پروکسی استفاده می‌کند که به متغیرهای CSS در زمان اجرا ارجاع می‌دهند.

اهداف اصلی

  • تم‌بندی در زمان اجرا: امکان تغییر فوری تم (مثلاً تغییر رنگ‌های برند یا حالت تاریک) با تغییر متغیرهای CSS در DOM، بدون نیاز به rebuild.
  • پشتیبانی از شفافیت: با ذخیره‌سازی کانال‌های رنگ (R G B) جدا از کانال آلفا، اطمینان حاصل می‌کنیم که modifier های opacity در Tailwind (مثلاً bg-primary/50) به درستی کار می‌کنند.
  • استقلال از تراکم: فاصله‌گذاری و اندازه‌گیری نسبت به base-gutter هستند و امکان حالت‌های تراکم "فشرده" یا "راحت" را با تغییر یک متغیر فراهم می‌کنند.

2. سیستم پالت رنگی

این پیکربندی از یک تابع تولید پیچیده (generateTailwindColors) استفاده می‌کند که مجموعه‌ای از کلیدهای پایه را به 19 تنوع رنگی متمایز map می‌کند.

قرارداد CSS (حیاتی)

برای اینکه کلاس‌های Tailwind کار کنند، متغیرهای CSS باید به صورت کانال‌های RGB جدا شده با فاصله بدون wrapper rgb() یا نماد # تعریف شوند.

فرمت نادرست
/* ❌ نادرست */
--primary: #3b82f6;
--primary: rgb(59, 130, 246);
فرمت صحیح
/* ✅ صحیح */
--primary: 59 130 246;

کلیدهای تولید شده

پیکربندی انتظار دارد کلیدهای root زیر در شیء colors وجود داشته باشد. هر کلید به صورت خودکار سطوح 1 تا 100 را تولید می‌کند.

کلیدهدف
baseپس‌زمینه/پیش‌زمینه خنثی
primaryرنگ اصلی برند
secondaryرنگ‌های تکمیلی
tertiaryرنگ برجسته/جایگزین
blackسایه‌های خالص
successنشانگر وضعیت موفقیت
warningنشانگر وضعیت هشدار
dangerنشانگر وضعیت خطر

نمونه‌های استفاده

<!-- رنگ پایه -->
<div class="bg-primary text-white">...</div>

<!-- با شفافیت (امکان‌پذیر به دلیل ساختار RGB) -->
<div class="bg-primary/50">...</div>

<!-- سطح رنگی خاص -->
<div class="bg-primary-80 text-primary-10">...</div>

3. مرجع متغیرهای CSS

اطمینان حاصل کنید که این متغیرها در CSS سراسری شما (:root یا body) تعریف شده‌اند. این به عنوان لایه پیکربندی برای کل برنامه عمل می‌کند.

الف. تعریف رنگ‌ها

پیاده‌سازی حالت تاریک

برای پیاده‌سازی حالت تاریک، به سادگی این متغیرها را در scope کلاس .dark override کنید.

:root {
/* فرمت: قرمز آبی سبز */
--primary: 59 130 246;

/* سطوح رنگی (تولید شده برای 100، 95، 90... تا 1) */
--primary-100: 30 58 138;
--primary-95: 35 65 145;
/* ... سطوح میانی ... */
--primary-10: 239 246 255;

--success: 34 197 94;
--danger: 239 68 68;
/* تکرار برای تمام کلیدهای ذکر شده در بخش 2 */
}

ب. سیستم فضایی و اندازه‌گیری (کنترل تراکم)

اصل مهم

ما از پیکسل‌های ثابت برای فاصله‌گذاری layout استفاده نمی‌کنیم. ما از سیستم Base Gutter استفاده می‌کنیم.

:root {
/* واحد اساسی فضا. این را تغییر دهید تا کل UI را مقیاس‌بندی کنید. */
--base-gutter: 1rem; /* پیش‌فرض 16px */

/* مشتقات */
--base-gutter-half: calc(var(--base-gutter) / 2);
--base-gutter-xs: calc(var(--base-gutter) / 4);
/* ... تا 4xl ... */

/* عناصر ورودی و تعاملی */
--input-height-base: 3rem;
--input-height-sm: 2.5rem;
--input-height-lg: 3.5rem;

/* شعاع حاشیه‌ها */
--radius-input: 0.5rem;
--radius-button: 0.5rem;
--radius-card: 1rem;
}

نگاشت Tailwind

کلاس Utilityخروجی CSS
p-basepadding: var(--base-gutter)
gap-base-halfgap: var(--base-gutter-half)
h-input-baseheight: var(--input-height-base)

ج. تایپوگرافی

خانواده‌های فونت به صورت انتزاعی تعریف شده‌اند تا امکان تغییر سریع فونت را فراهم کنند.

:root {
--base-font: 'Inter', system-ui, -apple-system, sans-serif;
}

نگاشت Tailwind: font-base

4. ابزارهای توسعه‌یافته و کلاس‌های سفارشی

این پیکربندی Tailwind استاندارد را با ابزارهای بسیار خاص طراحی شده برای زبان بصری این پروژه گسترش می‌دهد.

الف. کمک‌کننده‌های Layout

Flex Basis کسری

  • flex-1/10 تا flex-9/10: تقسیم‌بندی layout مبتنی بر درصد دقیق (10% تا 90%).

Max-Width های کسری

  • max-w-1/4، max-w-1/2، max-w-3/4: برای محدود کردن عرض container به صورت نرم.

ارتفاع خطوط

  • leading-spaced: line-height را به 1.75 تنظیم می‌کند برای بهبود خوانایی در بخش‌های متن‌محور.

ب. عمق و ارتفاع (سایه‌ها)

سایه‌ها نیز به سیستم base gutter متصل هستند برای "بلندی" ثابت.

  • shadow-base-half
  • shadow-base-xs
  • shadow-base-md
  • shadow-base-xl

ج. الگوهای بصری

bg-mosaic-pattern

یک الگوی شطرنجی پیچیده مبتنی بر گرادیان CSS.

نیازمندی

از var(--color) برای تعریف رنگ stroke/fill استفاده می‌کند. باید این متغیر را روی element یا parent آن تنظیم کنید.

استفاده:

<div class="bg-mosaic-pattern" style="--color: rgba(0,0,0,0.1)"></div>

5. سیستم انیمیشن

این معماری شامل keyframe های سفارشی و ابزارهای انیمیشن برای جلای تعاملی است.

انیمیشن‌های موجود

کلاسرفتارمورد استفاده
animate-floatشناوری ملایم عمودی/افقی (مدت 6 ثانیه)تصاویر قهرمان، آیکون‌های تزئینی
animate-float-slowشناوری آهسته‌تر (مدت 8 ثانیه)عناصر پس‌زمینه
animate-float-delayedشناوری با تاخیر 3 ثانیهانیمیشن‌های پله‌ای
animate-pulse-slowپالس شفافیت (مدت 3 ثانیه)اسکلتون‌های بارگذاری، جلب توجه ملایم
animate-spin-slowچرخش خطی (مدت 10 ثانیه)نشانگرهای بارگذاری، چرخ‌دنده‌های تزئینی
animate-color-switchتغییر متناوب رنگ (مدت 3 ثانیه)دکمه‌های توجه، نشانگرهای وضعیت

تخصصی: انیمیشن تغییر رنگ

ابزار animate-color-switch پس‌زمینه، fill و stroke را بین دو متغیر تغییر می‌دهد.

متغیرهای مورد نیاز:

  • --color-from
  • --color-to

استفاده:

<button class="animate-color-switch" style="--color-from: #3b82f6; --color-to: #ec4899;">
کلیک کنید
</button>

6. استراتژی Z-Index

رعایت دقیق الزامی است

برای جلوگیری از "جنگ‌های z-index"، به شدت به مقیاس تعریف شده پایبند باشید. از مقادیر دلبخواه مانند z-[9999] استفاده نکنید.

Z-Indexهدف
z-75منوهای کشویی، Tooltip ها در context
z-100هدرهای چسبنده
z-200کشوها / Sidebar ها
z-300Modal ها
z-400Toast ها / اعلان‌ها
z-500Overlay های حیاتی (صفحات بارگذاری)

7. گردش کار توسعه‌دهنده و بهترین شیوه‌ها

خلاصه بهترین شیوه‌ها
  1. هرگز رنگ‌ها را Hard-code نکنید: از text-[#123456] استفاده نکنید. همیشه رنگ را در متغیرهای CSS تعریف کنید و از کلاس utility تولید شده استفاده کنید.

  2. از base برای Layout استفاده کنید: از p-4 یا m-8 برای کامپوننت‌های ساختاری اصلی اجتناب کنید. از p-base یا m-base-md استفاده کنید تا layout تنظیمات تراکم سراسری را رعایت کند.

  3. آلفا را بررسی کنید: هنگام افزودن رنگ‌های جدید به CSS، تأیید کنید که آنها صرفاً اعداد هستند (255 0 0). اگر کاما یا rgb() اضافه کنید، modifier های opacity در Tailwind به صورت خاموش خراب می‌شوند.


منابع و مراجع اضافی

مستندات مرتبط

  • پیاده‌سازی توکن‌های طراحی
  • راهنمای پیکربندی تم
  • استانداردهای کتابخانه کامپوننت

لینک‌های خارجی