الألوان في CSS
الألوان في CSS: الدليل الشامل (الخاصية color)
الألوان هي الروح التي تنبض في صفحات الويب. بدون الألوان، الإنترنت مجرد نصوص سوداء على خلفيات بيضاء مملة. في هذا الدرس الشامل، سنغطي كل ما يتعلق بالألوان في CSS. سنبدأ من الأساسيات: "كيف نأمر المتصفح بتغيير لون النص؟" (باستخدام خاصية color)، ثم ننتقل إلى الجزء الأكثر عمقاً واحترافية: "كيف نختار درجة اللون بدقة؟" باستخدام الأنظمة الرقمية المعقدة مثل HEX و RGB والنظام المحبوب للمصممين HSL.
سنغوص أيضاً في عالم الشفافية (Transparency)، وكيف تجعل الألوان نصف شفافة كالزجاج. استعد لرحلة طويلة ومفصلة ستنقلك من مبتدئ إلى محترف في التعامل مع ألوان الويب.
1. خاصية تلوين النصوص (The color Property)
أول شيء يجب أن نعرفه هو "أين نضع اللون؟". في CSS، الخاصية المسؤولة عن تغيير لون الكلام (النصوص) تسمى color فقط. وهذا يسبب ارتباكاً للمبتدئين الذين يتوقعون اسماً مثل text-color أو font-color.
لماذا اسمها color فقط؟
لأن هذه الخاصية تتحكم في "اللون الأمامي" (Foreground Color) للعنصر. هذا يعني أنها لا تلون النص فحسب، بل تلون أيضاً:
- النصوص (الأحرف والكلمات).
- الخطوط التي توضع تحت الكلام (Text Decoration) افتراضياً.
- حدود العنصر (Borders) إذا لم تحدد لوناً خاصاً لها.
/* هذا الكود سيجعل الفقرات تظهر باللون الأزرق */
p {
color: blue;
/* ملاحظة: لا نستخدم text-color أبداً */
}
h1 {
color: red;
}
تذكر دائماً: إذا أردت تلوين الخلفية نستخدم background-color، أما إذا أردت تلوين النص نستخدم color فقط.
2. طرق كتابة الألوان (Color Values)
الآن بعد أن عرفنا الخاصية color، كيف نحدد القيمة؟ هل نكتب "أحمر"؟ أم نكتب كوداً؟ هناك 4 طرق رئيسية لتعريف الألوان في الويب، وسنشرح كل واحدة بالتفصيل الممل.
أسماء الألوان (Named Colors)
أسهل طريقة، وهي كتابة اسم اللون بالإنجليزية. المتصفحات تدعم 140 اسماً معيارياً.
- أمثلة شائعة:
red,green,blue,black,white. - أمثلة مميزة:
gold(ذهبي),salmon(لون السلمون),crimson(قرمزي). - العيوب: محدودة جداً. لا يمكنك ضبط درجة اللون بدقة. هل تريد "أحمر فاتح قليلاً"؟ لا يوجد اسم لذلك، يجب استخدام الأكواد الرقمية.
3. نظام HEX (النظام الست عشري)
هذا هو النظام "الملك" في عالم البرمجة. ستجده في كل مكان، ويبدأ دائماً بعلامة الشباك (#).
كيف نقرأ كود الهيكس؟
يتكون الكود من 6 خانات: #RRGGBB.
- RR (Red): أول خانتين لدرجة الأحمر.
- GG (Green): الخانتين في الوسط لدرجة الأخضر.
- BB (Blue): آخر خانتين لدرجة الأزرق.
الأرقام المستخدمة ليست من 0-9 فقط، بل نستخدم الحروف أيضاً لتمثيل الأرقام الكبيرة:
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).
حيث 0 هو الأقل (بدون لون)، و F هو الأقصى (لون كامل).
أمثلة وفك الشفرة
#000000: (R=00, G=00, B=00) = لا يوجد ضوء = أسود.#FFFFFF: (R=MAX, G=MAX, B=MAX) = كل الأضواء = أبيض.#FF0000: (R=MAX, G=00, B=00) = أحمر فقط = أحمر صافي.
الاختصار (Shorthand): إذا تكررت الأرقام، يمكن اختصارها لـ 3 خانات.
#CC00AA تصبح #C0A.
4. نظام RGB (لغة الشاشات)
نظام RGB هو الترجمة الحرفية لكيفية عمل شاشة الكمبيوتر أو الموبايل. كل نقطة (Pixel) في شاشتك تتكون من 3 لمبات صغيرة جداً: حمراء وخضراء وزرقاء.
الصيغة والقيم
نكتب الكود هكذا: rgb(red, green, blue).
نضع رقم من 0 إلى 255 في كل خانة.
- 0: اللمبة مطفأة.
- 255: اللمبة مضاءة بأقصى قوة.
مثال للخلط: إذا خلطت الأحمر (255) مع الأخضر (255) بدون أزرق (0)، ستعطيك الشاشة لوناً أصفر rgb(255, 255, 0).
اختر - القيمة rgb(255, 255, 255) تمثل أي لون؟
(أ) الأسود. (ب) الأبيض. (ج) الرمادي. (د) الشفاف.
الإجابة: (ب) الأبيض. (لأننا أضأنا كل قنوات الألوان بأقصى طاقة).
5. نظام HSL (لغة الفنانين والمصممين)
نظاما HEX و RGB هما لغة "الآلة". لكن البشر لا يفكرون بهذه الطريقة. نحن نفكر: "أريد لوناً أزرق، لكن فاتح قليلاً، وباهت قليلاً". هنا يأتي دور نظام HSL العبقري.
مما يتكون HSL؟
الصيغة: hsl(Hue, Saturation, Lightness)
1. Hue (الصبغة) - عجلة الألوان
قيمة من 0 إلى 360 (مثل درجات الدائرة).
- 0 أو 360: أحمر.
- 120: أخضر.
- 240: أزرق.
2. Saturation (التشبع) - كثافة اللون
نسبة مئوية %.
- 0%: رمادي (اللون ميت).
- 100%: اللون كامل وحيوي (Full Color).
3. Lightness (الإضاءة) - السطوع
نسبة مئوية %.
- 0%: أسود (ظلام دامس).
- 50%: اللون الطبيعي.
- 100%: أبيض (سطوع كامل).
/* اللون الأساسي: أزرق */
.box-main {
background-color: hsl(240, 100%, 50%);
}
/* أريد نفس الأزرق لكن أغمق؟ فقط قلل الإضاءة */
.box-dark {
background-color: hsl(240, 100%, 30%);
}
/* أريد نفس الأزرق لكن فاتح جداً؟ زود الإضاءة */
.box-light {
background-color: hsl(240, 100%, 80%);
}
6. الشفافية وقناة ألفا (Alpha Channel)
في التصميم الحديث، نحتاج كثيراً لجعل العناصر شفافة ليرى المستخدم ما خلفها. هناك طريقتان لفعل ذلك، والفرق بينهما جوهري.
أ. استخدام RGBA أو HSLA
نضيف حرف A في النهاية، والذي يرمز لـ (Alpha). هذا الرقم يكون بين 0 (شفاف تماماً) و 1 (معتم تماماً).
rgba(255, 0, 0, 0.5): أحمر بنسبة شفافية 50%.hsla(240, 100%, 50%, 0.2): أزرق شفاف جداً (تظهر الخلفية بوضوح).- الميزة الهامة: الشفافية هنا تطبق على اللون فقط، ولا تؤثر على النصوص المكتوبة داخل العنصر. النص يظل واضحاً ومقروءاً.
ب. خاصية Opacity
هذه خاصية منفصلة في CSS: opacity: 0.5.
الخطر: هذه الخاصية تجعل العنصر بالكامل شفافاً، بما في ذلك النصوص والصور والأزرار الموجودة داخله. سيصبح كل شيء "شبحياً" وصعب القراءة.
/* الطريقة الصحيحة للخلفيات الشفافة */
.overlay {
/* لون أسود شفاف، النص بداخله سيظل أبيض ناصع */
background-color: rgba(0, 0, 0, 0.7);
color: white;
}
/* الطريقة التي تؤثر على المحتوى (استخدمها بحذر) */
.ghost-box {
background-color: black;
color: white;
/* النص سيصبح باهتاً أيضاً! */
opacity: 0.5;
}
7. الكلمة السحرية (currentColor)
هذه نصيحة للمحترفين. هناك قيمة لون خاصة جداً اسمها currentColor. عند استخدامها، فإنها تعني "استخدم نفس لون النص الحالي للعنصر".
إذا كان لديك زر نصه أزرق، وتريد أن يكون إطاره أزرق أيضاً، يمكنك كتابة border-color: currentColor. إذا غيرت لون النص لاحقاً للأحمر، سيتغير الإطار تلقائياً للأحمر!
جدول الألوان المرجعي (معاينة حية)
في هذا الجدول، جمعنا لك أشهر الألوان المستخدمة، مع أكوادها بجميع الأنظمة، ومربع ملون حقيقي لترى النتيجة بعينك.
| اللون (المعاينة) | الاسم (Name) | HEX Code | RGB Code | HSL Code |
|---|---|---|---|---|
| Red (أحمر) | #FF0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | |
| Lime (أخضر ساطع) | #00FF00 | rgb(0, 255, 0) | hsl(120, 100%, 50%) | |
| Blue (أزرق) | #0000FF | rgb(0, 0, 255) | hsl(240, 100%, 50%) | |
| Black (أسود) | #000000 | rgb(0, 0, 0) | hsl(0, 0%, 0%) | |
| White (أبيض) | #FFFFFF | rgb(255, 255, 255) | hsl(0, 0%, 100%) | |
| Peter River (أزرق سماوي) | #3498db | rgb(52, 152, 219) | hsl(204, 70%, 53%) | |
| Alizarin (أحمر ناعم) | #e74c3c | rgb(231, 76, 60) | hsl(6, 78%, 57%) | |
| Sunflower (أصفر شمسي) | #f1c40f | rgb(241, 196, 15) | hsl(48, 89%, 50%) | |
| Amethyst (أرجواني) | #9b59b6 | rgb(155, 89, 182) | hsl(282, 39%, 53%) | |
| Turquoise (فيروزي) | #1abc9c | rgb(26, 188, 156) | hsl(168, 76%, 42%) | |
| Wet Asphalt (كحلي غامق) | #34495e | rgb(52, 73, 94) | hsl(210, 29%, 29%) | |
| Concrete (رمادي خرساني) | #95a5a6 | rgb(149, 165, 166) | hsl(184, 9%, 62%) |
تحدي بسيط: جرب نسخ كود HSL للون "الأحمر الناعم" (Alizarin) وغير قيمة الإضاءة (الرقم الأخير) من 57% إلى 80%. ماذا تتوقع أن يحدث؟ سيصبح اللون وردياً فاتحاً جداً!