فارسی

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

توابع رنگ در CSS: تسلط بر دستکاری پیشرفته رنگ

رنگ یک جنبه اساسی در طراحی وب است که بر تجربه کاربری و هویت برند تأثیر می‌گذارد. توابع رنگ CSS ابزارهای قدرتمندی برای دستکاری رنگ‌ها فراهم می‌کنند و به توسعه‌دهندگان امکان می‌دهند تا وب‌سایت‌های پویا، در دسترس و از نظر بصری جذاب ایجاد کنند. این راهنما به بررسی تکنیک‌های پیشرفته برای تنظیم، ترکیب و مدیریت رنگ‌ها با استفاده از توابع رنگ CSS می‌پردازد و شما را برای ساخت طرح‌های رنگی پیچیده توانمند می‌سازد.

درک مدل‌های رنگی CSS

قبل از پرداختن به توابع رنگ، درک مدل‌های مختلف رنگی CSS بسیار مهم است. هر مدل، رنگ را به شیوه‌ای منحصربه‌فرد نمایش می‌دهد که بر نحوه دستکاری آن‌ها تأثیر می‌گذارد.

RGB (قرمز، سبز، آبی)

رایج‌ترین مدل رنگی، RGB، رنگ‌ها را به صورت ترکیبی از نور قرمز، سبز و آبی نشان می‌دهد. مقادیر از ۰ تا ۲۵۵ (یا ۰٪ تا ۱۰۰٪) متغیر هستند.

color: rgb(255, 0, 0); /* قرمز */
color: rgb(0, 255, 0); /* سبز */
color: rgb(0, 0, 255); /* آبی */

RGBA (قرمز، سبز، آبی، آلفا)

RGBA با افزودن یک کانال آلفا که شفافیت رنگ را نشان می‌دهد، RGB را گسترش می‌دهد. مقدار آلفا از ۰ (کاملاً شفاف) تا ۱ (کاملاً مات) متغیر است.

color: rgba(255, 0, 0, 0.5); /* قرمز با ۵۰٪ شفافیت */

HSL (فام، اشباع، روشنایی)

HSL رنگ‌ها را بر اساس فام (زاویه رنگ در چرخه رنگ)، اشباع (شدت رنگ) و روشنایی (درخشندگی رنگ) نشان می‌دهد. HSL برای بسیاری از توسعه‌دهندگان بصری‌تر است زیرا با نحوه درک رنگ توسط انسان‌ها هماهنگی بیشتری دارد.

color: hsl(0, 100%, 50%); /* قرمز */
color: hsl(120, 100%, 50%); /* سبز */
color: hsl(240, 100%, 50%); /* آبی */

HSLA (فام، اشباع، روشنایی، آلفا)

HSLA با یک کانال آلفا برای شفافیت، مشابه RGBA، HSL را گسترش می‌دهد.

color: hsla(0, 100%, 50%, 0.5); /* قرمز با ۵۰٪ شفافیت */

HWB (فام، سفیدی، سیاهی)

HWB رنگ‌ها را بر اساس فام، سفیدی (مقدار سفیدی اضافه شده) و سیاهی (مقدار سیاهی اضافه شده) نشان می‌دهد. این مدل روش بصری دیگری برای تعریف رنگ‌ها، به‌ویژه ته‌رنگ‌ها و سایه‌ها، فراهم می‌کند.

color: hwb(0 0% 0%); /* قرمز */
color: hwb(0 50% 0%); /* صورتی (قرمز با ۵۰٪ سفیدی) */
color: hwb(0 0% 50%); /* خرمایی (قرمز با ۵۰٪ سیاهی) */

LCH (روشنایی، کروما، فام)

LCH یک مدل رنگی مبتنی بر درک انسان است که هدف آن یکنواختی ادراکی است. این بدان معناست که تغییرات در مقادیر LCH با نحوه درک تفاوت‌های رنگی توسط انسان‌ها تطابق بیشتری دارد. این مدل بخشی از خانواده فضای رنگی CIE Lab است.

color: lch(50% 100 20); /* یک رنگ نارنجی-قرمز زنده */

OKLCH (LCH بهینه‌سازی شده)

OKLCH اصلاح بیشتری از LCH است که برای ارائه یکنواختی ادراکی بهتر و جلوگیری از برخی مشکلات LCH سنتی، به‌ویژه در مقادیر بالای کروما که برخی رنگ‌ها ممکن است تحریف شده به نظر برسند، طراحی شده است. این مدل به سرعت در حال تبدیل شدن به فضای رنگی ترجیحی برای دستکاری پیشرفته رنگ در CSS است.

color: oklch(50% 0.2 240); /* یک آبی کم‌رنگ */

Color()

تابع color() روشی عمومی برای دسترسی به هر فضای رنگی، از جمله فضاهای رنگی خاص دستگاه و آنهایی که در پروفایل‌های ICC تعریف شده‌اند، فراهم می‌کند. این تابع یک شناسه فضای رنگی را به عنوان آرگومان اول و سپس اجزای رنگ را می‌پذیرد.

color: color(display-p3 1 0 0); /* قرمز در فضای رنگی Display P3 */

توابع رنگ CSS: تکنیک‌های پیشرفته

اکنون که مدل‌های رنگی را درک کردیم، بیایید توابع رنگ CSS را که به ما امکان دستکاری این رنگ‌ها را می‌دهند، بررسی کنیم.

color-mix()

تابع color-mix() دو رنگ را با هم ترکیب می‌کند و به شما امکان می‌دهد رنگ‌های جدیدی بر اساس رنگ‌های موجود ایجاد کنید. این ابزار قدرتمندی برای تولید تنوع‌های رنگی و ایجاد پالت‌های رنگی هماهنگ است.

color: color-mix(in srgb, red, blue); /* بنفش (۵۰٪ قرمز، ۵۰٪ آبی) */
color: color-mix(in srgb, red 20%, blue); /* بیشتر آبی با کمی قرمز */
color: color-mix(in lch, lch(50% 60 20), white); /* ته‌رنگی از رنگ LCH */

/* ترکیب با شفافیت */
color: color-mix(in srgb, rgba(255, 0, 0, 0.5), blue); /*  ترکیبی با در نظر گرفتن شفافیت */

مثال: ایجاد افکت hover برای دکمه با سایه‌ای کمی روشن‌تر:

.button {
  background-color: #007bff; /* رنگ آبی پایه */
  color: white;
}

.button:hover {
  background-color: color-mix(in srgb, #007bff 80%, white); /* آبی روشن‌تر در حالت hover */
}

کلمه کلیدی in فضای رنگی را که ترکیب باید در آن انجام شود، مشخص می‌کند. استفاده از فضاهای رنگی یکنواخت ادراکی مانند LCH یا OKLCH اغلب منجر به گرادیان‌ها و ترکیب‌های رنگی با ظاهر طبیعی‌تر می‌شود.

color-contrast()

تابع color-contrast() به طور خودکار رنگی را از لیستی از گزینه‌ها انتخاب می‌کند که بهترین کنتراست را در برابر یک رنگ پس‌زمینه مشخص فراهم می‌کند. این برای اطمینان از دسترسی‌پذیری و خوانایی بسیار ارزشمند است.

color: color-contrast(
  #007bff, /* رنگ پس‌زمینه */
  white, /* گزینه اول */
  black  /* گزینه دوم */
);

/*  اگر #007bff به اندازه کافی تیره باشد، سفید خواهد بود؛ در غیر این صورت، سیاه خواهد بود. */

شما همچنین می‌توانید یک نسبت کنتراست را برای اطمینان از کنتراست کافی برای استانداردهای دسترسی‌پذیری (WCAG) مشخص کنید:

color: color-contrast(
  #007bff, /* رنگ پس‌زمینه */
  white vs. 4.5, /* سفید، اما تنها اگر نسبت کنتراست حداقل ۴.۵:۱ باشد */
  black /* جایگزین: اگر سفید شرط کنتراست را برآورده نکند، از سیاه استفاده کن */
);

مثال: انتخاب پویای رنگ متن بر اساس رنگ پس‌زمینه:

.element {
  background-color: var(--background-color);
  color: color-contrast(
    var(--background-color),
    white vs. 4.5,
    black
  );
}

lab()، lch() و oklch()

همانطور که قبلاً ذکر شد، lab()، lch() و oklch() توابع رنگی هستند که به شما امکان می‌دهند رنگ‌ها را مستقیماً در آن فضاهای رنگی تعریف کنید. آنها به‌ویژه برای ایجاد پالت‌های رنگی که از نظر ادراکی یکنواخت هستند، مفید می‌باشند.

مثال: ایجاد مجموعه‌ای از رنگ‌ها با روشنایی افزایشی در OKLCH:

:root {
  --base-hue: 240; /* آبی */
  --base-chroma: 0.15;
  --color-1: oklch(0.25 var(--base-chroma) var(--base-hue));
  --color-2: oklch(0.50 var(--base-chroma) var(--base-hue));
  --color-3: oklch(0.75 var(--base-chroma) var(--base-hue));
}

این کد سه رنگ آبی با مقادیر روشنایی متفاوت اما فام و کرومای یکسان ایجاد می‌کند و یک پالت بصری منسجم را تضمین می‌نماید.

hwb()

تابع hwb() روشی بصری برای تعریف رنگ‌ها با مشخص کردن فام، سفیدی و سیاهی آنها فراهم می‌کند. این تابع به‌ویژه برای ایجاد ته‌رنگ‌ها و سایه‌های یک رنگ پایه مفید است.

مثال: ایجاد ته‌رنگ‌ها و سایه‌های یک رنگ اصلی با استفاده از HWB:

:root {
  --primary-hue: 210; /* سایه‌ای از آبی */
  --primary-color: hwb(var(--primary-hue) 0% 0%); /* خود رنگ اصلی */
  --primary-tint: hwb(var(--primary-hue) 20% 0%); /* یک ته‌رنگ روشن‌تر */
  --primary-shade: hwb(var(--primary-hue) 0% 20%); /* یک سایه تیره‌تر */
}

color()

تابع color() دسترسی به فضاهای رنگی وابسته به دستگاه مانند display-p3 را فراهم می‌کند که طیف رنگی وسیع‌تری نسبت به sRGB ارائه می‌دهد. این به شما امکان می‌دهد از قابلیت‌های رنگی کامل نمایشگرهای مدرن بهره‌مند شوید.

مثال: استفاده از Display P3 برای رنگ‌های زنده‌تر (در صورت پشتیبانی توسط مرورگر و نمایشگر):

body {
  background-color: color(display-p3 0.8 0.2 0.1); /* یک نارنجی-قرمز زنده */
}

توجه: همیشه برای مرورگرهایی که از فضای رنگی مشخص شده پشتیبانی نمی‌کنند، رنگ‌های جایگزین در sRGB فراهم کنید.

کاربردهای عملی و مثال‌ها

ایجاد پالت‌های رنگی پویا

توابع رنگ CSS برای ایجاد پالت‌های رنگی پویا که با ترجیحات کاربر یا تنظیمات سیستم (مانند حالت تاریک) سازگار می‌شوند، فوق‌العاده مفید هستند. با استفاده از متغیرهای CSS و color-mix() (یا توابع مشابه)، می‌توانید به راحتی طرح رنگی وب‌سایت خود را تنظیم کنید.

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

:root {
  --background-color: white;
  --text-color: black;
  --link-color: blue;
}

body {
  background-color: var(--background-color);
  color: var(--text-color);
}

a {
  color: var(--link-color);
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: black;
    --text-color: white;
    --link-color: lightblue;
  }
}

برای پالت‌های پویای پیشرفته‌تر، می‌توانید از جاوا اسکریپت برای تغییر متغیرهای CSS بر اساس ورودی کاربر یا عوامل دیگر استفاده کنید.

بهبود دسترسی‌پذیری

دسترسی‌پذیری در طراحی وب از اهمیت بالایی برخوردار است. توابع رنگ CSS، به‌ویژه color-contrast()، می‌توانند با اطمینان از کنتراست کافی بین رنگ متن و پس‌زمینه، دسترسی‌پذیری وب‌سایت شما را به طور قابل توجهی بهبود بخشند. همیشه ترکیبات رنگی خود را با ابزارهای دسترسی‌پذیری آزمایش کنید تا با دستورالعمل‌های WCAG مطابقت داشته باشند.

مثال: اطمینان از کنتراست کافی برای برچسب‌های فرم:

label {
  color: color-contrast(
    var(--background-color),
    white vs. 4.5,
    black
  );
}

ایجاد تم‌های رنگی

توابع رنگ CSS به شما امکان می‌دهند تم‌های رنگی انعطاف‌پذیر و قابل نگهداری ایجاد کنید. با تعریف مجموعه‌ای از رنگ‌های پایه و استفاده از توابع رنگ برای استخراج تنوع‌ها، می‌توانید به راحتی بین تم‌های مختلف جابجا شوید بدون اینکه نیاز به تغییر مقدار زیادی از CSS داشته باشید.

مثال: ایجاد یک دکمه تم‌دار با تنوع‌ها:

:root {
  --primary-color: #007bff; /* رنگ اصلی پایه */
  --primary-color-hover: color-mix(in srgb, var(--primary-color) 80%, white); /* روشن‌تر در حالت hover */
  --primary-color-active: color-mix(in srgb, var(--primary-color) 80%, black); /* تیره‌تر در حالت فعال */
}

.button.primary {
  background-color: var(--primary-color);
  color: white;
}

.button.primary:hover {
  background-color: var(--primary-color-hover);
}

.button.primary:active {
  background-color: var(--primary-color-active);
}

تولید مقیاس‌های رنگی و گرادیان‌ها

color-mix() و فضاهای رنگی LCH/OKLCH برای ایجاد مقیاس‌های رنگی و گرادیان‌های بصری جذاب و یکنواخت ادراکی عالی هستند. این امر به‌ویژه برای تجسم داده‌ها و سایر کاربردهایی که در آنها از رنگ برای نمایش داده‌های کمی استفاده می‌شود، اهمیت دارد.

مثال: ایجاد یک گرادیان روان با استفاده از OKLCH:

.gradient {
  background: linear-gradient(
    to right,
    oklch(80% 0.1 20),
    oklch(80% 0.1 340)
  ); /* گرادیان از نارنجی-قرمز به بنفش */
}

بهترین شیوه‌ها و ملاحظات

نتیجه‌گیری

توابع رنگ CSS یک افزودنی قدرتمند به جعبه ابزار توسعه‌دهندگان وب هستند که امکان دستکاری پیشرفته رنگ و تم‌سازی پویا را فراهم می‌کنند. با درک مدل‌های مختلف رنگی و تسلط بر این توابع، می‌توانید وب‌سایت‌هایی از نظر بصری خیره‌کننده، در دسترس و قابل نگهداری ایجاد کنید. این تکنیک‌ها را برای ارتقاء طرح‌های خود و ارائه تجربه کاربری بهتر برای مخاطبان جهانی به کار بگیرید. با ادامه بهبود پشتیبانی مرورگرها از فضاهای رنگی جدیدتر مانند OKLCH، این ابزارها برای توسعه وب مدرن بیش از پیش ضروری خواهند شد.