الألوان والخلفيات في CSS
الألوان أول ما يلاحظه الزائر في أي موقع، وهي التي تعطيه شخصيته: موقع بنك يختار ألواناً هادئة توحي بالثقة، وموقع ألعاب يختار ألواناً حيوية. في هذا الدرس ستتعلم الطرق المختلفة لكتابة الألوان في CSS، وكيف تضع خلفيات ملونة وصوراً وتدرجات.
أين تُستخدم الألوان؟
Section titled “أين تُستخدم الألوان؟”أشهر خاصيتين:
h1 { color: navy; /* لون النص */ background-color: #ffe9a8; /* لون الخلفية */}وستجد الألوان أيضاً في خصائص أخرى مثل border-color لإطار العنصر.
الطريقة الأولى: أسماء الألوان
Section titled “الطريقة الأولى: أسماء الألوان”CSS تعرف حوالي 140 لوناً بأسمائها الإنجليزية: red و blue و green و orange و gray، وأخرى أطرف مثل tomato و skyblue و gold.
p { color: tomato;}سهلة للتجربة، لكنها محدودة: لا تستطيع بها اختيار درجة دقيقة مثل لون شعار شركتك.
الطريقة الثانية: Hex
Section titled “الطريقة الثانية: Hex”أشهر طريقة في المواقع الحقيقية. تبدأ بعلامة # ثم 6 خانات تمثل كمية الأحمر ثم الأخضر ثم الأزرق:
.brand { color: #5b5bf0;}- كل خانتين رقم بالنظام الست عشري، من
00(لا شيء) إلىff(أقصى قيمة). #000000أسود، و#ffffffأبيض، و#ff0000أحمر صافٍ.- يمكن اختصار اللون إذا تكررت الخانات:
#ffffffتُكتب#fff.
لا تحتاج إلى حفظ الأكواد! أدوات المطور في المتصفح ومحررات مثل VS Code فيها منتقي ألوان يعطيك الكود مباشرة.
الطريقة الثالثة: rgb
Section titled “الطريقة الثالثة: rgb”نفس فكرة hex، لكن بالأرقام العشرية من 0 إلى 255:
.box { background-color: rgb(91, 91, 240);}تخيّل أنك تخلط ثلاثة أضواء ملونة على مسرح: أحمر وأخضر وأزرق. كل رقم يحدد قوة ضوء واحد. كل الأضواء على أقصى قوة تعطيك أبيض، وكلها مطفأة تعطيك أسود.
الطريقة الرابعة: hsl
Section titled “الطريقة الرابعة: hsl”أسهل طريقة للتفكير في الألوان، لأنها قريبة من طريقة البشر:
.button { background-color: hsl(240, 83%, 65%);}- Hue (درجة اللون): رقم من 0 إلى 360 على دائرة الألوان. 0 أحمر، و 120 أخضر، و 240 أزرق.
- Saturation (التشبع): من
0%رمادي باهت إلى100%لون صارخ. - Lightness (الإضاءة): من
0%أسود إلى100%أبيض، و50%اللون الطبيعي.
ميزتها أنك تصنع درجات متناسقة بسهولة: غيّر الإضاءة فقط، فيصبح عندك لون أفتح للخلفية وأغمق للنص من نفس العائلة.
الشفافية
Section titled “الشفافية”أضف قيمة رابعة لتحديد درجة الشفافية، من 0 (شفاف تماماً) إلى 1 (معتم تماماً):
.overlay { background-color: rgb(0 0 0 / 0.5); /* أسود نصف شفاف */}الصيغة القديمة rgba(0, 0, 0, 0.5) تعطي نفس النتيجة وما زالت منتشرة. وهناك أيضاً الخاصية opacity التي تجعل العنصر كله شفافاً، بما فيه النص والصور داخله.
صور الخلفية
Section titled “صور الخلفية”يمكنك وضع صورة خلفية لأي عنصر:
.hero { background-image: url("images/sky.jpg"); background-size: cover; /* غطِّ العنصر كله */ background-position: center; /* ضع منتصف الصورة في المنتصف */ background-repeat: no-repeat;}background-size: cover: تكبّر الصورة لتغطي العنصر كله، حتى لو قُصّت أطرافها.background-size: contain: تظهر الصورة كاملة داخل العنصر، حتى لو بقيت مساحة فارغة.background-repeat: no-repeat: تمنع تكرار الصورة كالبلاط إذا كانت أصغر من العنصر.
التدرج اللوني
Section titled “التدرج اللوني”التدرج (Gradient) انتقال ناعم بين لونين أو أكثر، ويُكتب كأنه صورة خلفية:
.banner { background-image: linear-gradient(to left, #5b5bf0, #8e8ef7);}الكلمة to left تعني اتجاه التدرج: يبدأ باللون الأول ويتجه يساراً نحو الثاني. يمكنك أيضاً استخدام to bottom أو زاوية مثل 135deg.
جرّب بنفسك
Section titled “جرّب بنفسك”غيّر قيم الألوان، وجرّب contain بدل cover في صورة الخلفية، وغيّر اتجاه التدرج إلى to bottom:
الناتج
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان علامة # في hex:
color: 5b5bf0;لا تعمل. الصحيح#5b5bf0. - مسار خاطئ داخل url: المسار في ملف CSS خارجي يُحسب من مكان ملف CSS وليس من مكان صفحة HTML. إذا كان الملف داخل مجلد
cssفقد تحتاجurl("../images/sky.jpg"). - تباين ضعيف: لا تحكم بعينك فقط على شاشة ساطعة؛ افحص نسبة التباين.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
أي قيمة تمثل اللون الأبيض؟
#ffffff يعني أقصى أحمر وأخضر وأزرق معاً، أي أبيض. أما #000000 فهو أسود.
سؤال
تريد أن تغطي صورة الخلفية العنصر كله حتى لو قُص جزء منها. أي قيمة تستخدم؟
cover تملأ العنصر بالكامل، أما contain فتُظهر الصورة كاملة وقد تترك فراغاً.
الخلاصة
Section titled “الخلاصة”colorللنص، وbackground-colorللخلفية.- اكتب الألوان بالاسم أو
#hexأوrgb()أوhsl()، و hex الأشهر في المواقع. - الشفافية بقيمة رابعة مثل
rgb(0 0 0 / 0.5)، وopacityللعنصر كله. background-imageمعbackground-sizeوbackground-positionلصور الخلفية.linear-gradientللتدرجات، والتباين الواضح أهم من أي لون جميل.