الخلفيات

بودكاست CSS - 053: الخلفية

الخلفيات

خلف كل مربع CSS هناك طبقة متخصصة تسمى طبقة الخلفية. توفر CSS مجموعة متنوعة من الطرق لإجراء تغييرات مفيدة عليها، بما في ذلك السماح بخلفيات متعددة.

تكون طبقات الخلفية أبعد عن المستخدم، ويتم عرضها خلف محتوى المربّع بدءًا من منطقة padding-box. ويعمل هذا على تمكين طبقة الخلفية من عدم تداخل الحدود مع الحدود على الإطلاق.

لون الخلفية

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 1-
  • Safari: 1-

المصدر

أحد أبسط التأثيرات التي يمكنك تطبيقها على طبقة الخلفية هو ضبط color. القيمة الأولية للسمة background-color هي transparent، ما يسمح بعرض محتوى أحد الوالدَين. يوجد لون صالح تم تعيينه على طبقة خلفية خلف أشياء أخرى مرسومة على ذلك العنصر.

صور الخلفية

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 1-
  • Safari: 1-

المصدر

في أعلى طبقة background-color، يمكنك إضافة صورة خلفية باستخدام السمة background-image. تقبل background-image ما يلي:

  • تمثّل هذه السمة عنوان URL لصورة أو عنوان URI للبيانات باستخدام دالة url CSS.
  • صورة تم إنشاؤها ديناميكيًا باستخدام دالة CSS متدرجة.

ضبط صورة خلفية باستخدام دالة url CSS

خلفيات متدرجة بتنسيق CSS

تتوفر العديد من دوال التدرج في CSS للسماح لك بإنشاء صورة خلفية عند تمرير لونين أو أكثر.

وبغض النظر عن دالة التدرج المستخدمة، فإن الصورة الناتجة تكون بحجم أساسي لمطابقة المساحة المتاحة.

عرض توضيحي يعرض مثالاً لتطبيق صورة خلفية باستخدام دوال التدرج:

صور الخلفية المتكرّرة

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 1-
  • Safari: 1-

المصدر

يتم تكرار صور الخلفية افتراضيًا وعموديًا لملء المساحة الكاملة لطبقة الخلفية.

يمكنك تغيير هذه القيمة باستخدام السمة background-repeat مع إحدى القيم التالية:

  • repeat: يتم تكرار الصورة ضمن المساحة المتاحة، ويتم اقتصاصها حسب الضرورة.
  • round: تتكرر الصورة أفقيًا وعموديًا لتلائم أكبر عدد ممكن من المثيلات في المساحة المتاحة. كلما زادت المساحة المتاحة من امتداد الصورة، وبعد تمديد نصف العرض الأصلي للصورة، يتم ضغطها لإضافة المزيد من مثيلات الصور.
  • space: يتم تكرار الصورة أفقيًا وعموديًا لتلائم أكبر عدد ممكن من الحالات ضمن المساحة المتاحة بدون اقتصاص، مع وضع مسافات بين نسخ الصورة حسب الحاجة. تلمس الصور المتكررة حواف المساحة التي تشغلها طبقة الخلفية، مع توزيع المساحة البيضاء بينها بالتساوي.

تسمح لك السمة background-repeat بضبط سلوك المحورين x وy بشكل مستقل. تحدد المعلمة الأولى سلوك التكرار الأفقي، وتحدد المعلمة الثانية سلوك التكرار الرأسي.

إذا استخدمت قيمة واحدة، سيتم تطبيقها على كل من التكرارات الأفقية والرأسية.

يحتوي الاختصار أيضًا على خيارات ملائمة من كلمة واحدة لتوضيح هدفك بشكل أوضح.

تكرّر القيمة repeat-x الصورة أفقيًا فقط. وهذا يعادل repeat no-repeat.

يوضّح العرض التوضيحي التالي هذه الإمكانات التي توفّرها السمة background-repeat:

موضع الخلفية

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 1-
  • Safari: 1-

المصدر

لعلك لاحظت أنّ بعض الصور على الويب مصمّمة ببيان background-repeat: no-repeat، يتم عرض هذه الصور في أعلى يسار حاويتها.

يكون الموضع الأولي لصور الخلفية في أعلى اليسار. تسمح لك السمة background-position بتغيير هذا السلوك من خلال معادلة موضع الصورة.

كما هي الحال في background-repeat، تسمح لك السمة background-position بوضع الصور على طول المحورَين x وy بشكل مستقلّ باستخدام قيمتَين تلقائيًا.

عند استخدام أطوال CSS والنسب المئوية، تتجاوب المَعلمة الأولى مع المحور الأفقي بينما تتجاوب المَعلمة الثانية مع المحور الرأسي.

عند استخدام الكلمات الرئيسية فقط، لا يهم ترتيب الكلمات الرئيسية:

الإجراءات الموصى بها
background-position: left 50%;
الإجراءات الموصى بها
background-position: top left;
الإجراءات الموصى بها
background-position: left top;

لا يُعدّ الترتيب مهمًا بالنسبة إلى الكلمات الرئيسية المرتبطة بمحاور موضع الإعلان المختلفة.

الإجراءات غير المُوصى بها
  background-position: 50% left;

عند استخدام قيم CSS إلى جانب الكلمات الرئيسية، يكون للترتيب عنصر مهم. تمثل القيمة الأولى المحور الأفقي والثانية المحور الرأسي.

الإجراءات غير المُوصى بها
  background-position: left right;

لا يمكنك استخدام كلمات رئيسية مرتبطة بالمحور نفسه في آنٍ واحد.

وتشتمل السمة background-position أيضًا على اختصار مناسب واحد للقيمة. تتم معالجة القيمة التي تم إسقاطها إلى 50%. في ما يلي مثال يوضّح ذلك باستخدام الكلمات الرئيسية التي تقبلها السمة background-position:

بالإضافة إلى نموذج المَعلمتَين التلقائيتَين ونموذج المَعلمة نفسه، وتقبل السمة background-position أيضًا ما يصل إلى أربع معلَمات،

عند استخدام ثلاث أو أربع مَعلمات، يجب أن يسبق طول صفحة CSS أو النسبة المئوية الكلمات الرئيسية top أو left أو right أو bottom كي يتمكّن المتصفّح من احتساب حافة مربّع CSS التي يجب أن تنشأ منها الإزاحة.

وعند استخدام ثلاث معلمات، يمكن أن يكون طول CSS أو القيمة هي المعلمة الثانية أو الثالثة والأخرى هي الكلمتان الرئيسيتان. فسيتم استخدام الكلمة الرئيسية التي نجحت العملية لتحديد الحافة التي يتوافق طول CSS أو قيمتها مع إزاحةها. تم ضبط إزاحة الكلمة الرئيسية الأخرى المحدّدة على 0.

الإجراءات الموصى بها
background-position: bottom 88% right;
الإجراءات الموصى بها
background-position: right bottom 88%;
الإجراءات غير المُوصى بها
background-position: 88% bottom right;
يجب أن تكون قيمة طول CSS مسبوقة بالكلمات الرئيسية top أو right أو bottom أو left عند استخدام ثلاث مَعلمات أو أكثر.
الإجراءات الموصى بها
background-position: bottom 88% right 33%;
الإجراءات الموصى بها
background-position: right 33% bottom 88%;
الإجراءات غير المُوصى بها
background-position: 88% 33% bottom left;
يجب أن تكون قيمة طول CSS مسبوقة بالكلمات الرئيسية top أو right أو bottom أو left عند استخدام ثلاث مَعلمات أو أكثر.

في حال تطبيق background-position: top left 20% على صورة خلفية CSS، يتم وضع الصورة في أعلى المربّع، ستمثّل القيمة 20% إزاحة بنسبة% 20 من يسار المربّع (على المحور x).

في حال تطبيق background-position: top 20% left على صورة خلفية CSS، تمثل القيمة 20% إزاحة بنسبة 20% من أعلى مربّع CSS (على المحور y) ويتم وضع الصورة إلى يسار المربّع.

وعند استخدام أربع مَعلمات، يتم إقران الكلمتَين الرئيسيتَين بقيمتَين تقابلان الإزاحة في أصول كل كلمة رئيسية محدّدة. في حال تطبيق background-position: bottom 20% right 30% على صورة خلفية، يتم ضبط موضع صورة الخلفية على بُعد 20% من الجزء السفلي و30% من يمين مربّع CSS.

يوضح العرض التوضيحي التالي هذا السلوك:

في ما يلي المزيد من الأمثلة على استخدام السمة background-position من خلال مزيج من قيم CSS وقيم الكلمات الرئيسية:

حجم الخلفية

دعم المتصفح

  • Chrome: 3-
  • الحافة: 12.
  • فَيَرفُكس: 4-
  • Safari: الإصدار 5-

المصدر

تضبط السمة background-size حجم صور الخلفية. يتم ضبط حجم صور الخلفية تلقائيًا على أساس عرضها (الفعلي) وارتفاعها ونسبة العرض إلى الارتفاع الخاصة بها.

تستخدم السمة background-size قيم طول CSS والنسبة المئوية أو كلمات رئيسية معيّنة. يقبل الموقع ما يصل إلى مَعلمتَين للسماح لك بتغيير عرض الخلفية وارتفاعها بشكلٍ مستقلّ.

تقبل السمة background-size الكلمات الرئيسية التالية:

  • auto: عند استخدام صورة الخلفية بشكل مستقل، يتم تحديد حجم صورة الخلفية استنادًا إلى عرضها وارتفاعها الأساسيين. عند استخدام auto مع قيمة CSS أخرى للعرض (المَعلمة الأولى) أو الارتفاع (المَعلمة الثانية)، يتم ضبط حجم السمة على auto حسب الحاجة للحفاظ على نسبة العرض إلى الارتفاع الطبيعية للصورة. وهذا هو السلوك التلقائي للسمة background-size.
  • cover: يغطي المنطقة الكاملة من طبقة الخلفية. قد يعني هذا أنّ الصورة تم تمديدها أو اقتصاصها.
  • contain: لتغيير حجم الصورة لملء المساحة بدون تكبير أو اقتصاص. ونتيجةً لذلك، قد تظل مساحة فارغة ستؤدّي إلى تكرار الصورة، ما لم يتم ضبط background-repeat على no-repeat.

تم تصميم الطريقتين الأخيرتين لاستخدامهما بطريقة مستقلة دون معلمة أخرى.

يوضح العرض التوضيحي التالي كيفية استخدام هذه الكلمات الرئيسية:

عرض توضيحي يشرح تطبيق هذه الكلمات الرئيسية على background-size:

مرفق خلفية

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 1-
  • Safari: 1-

المصدر

تتيح لك السمة background-attachment تعديل سلوك الموضع الثابت لصور الخلفية (الصور جزء من طبقة الخلفية) بعد ظهور الطبقة على الشاشة.

ويقبل 3 كلمات رئيسية: scroll، وfixed، وlocal.

السلوك التلقائي للسمة background-attachment هو القيمة الأولية للسمة scroll. عند الحاجة إلى مساحة إضافية، تتحرك الصور مع تلك المساحة داخل طبقة الخلفية التي يتم تحديدها من خلال حدود مربع CSS.

ويؤدي استخدام القيمة fixed إلى تثبيت موضع صور الخلفية في إطار العرض.

عندما تحتاج مساحة صور طبقة الخلفية في الأصل إلى التمرير (أو عرضها) خارج الشاشة، تظل الصور داخل طبقة الخلفية ثابتة في الموضع الأصلي، وقد مكنت طبقة الخلفية هذه المساحة إلى أن يتم تمرير الطبقة بالكامل خارج الشاشة بواسطة إطار العرض.

تتيح الكلمة الرئيسية local تثبيت موضع صور الخلفية بالنسبة إلى محتوى العنصر. تتحرك صور الخلفية الآن على طول المساحة التي تشغلها حيث يتم عرض هذه المساحة داخل حدود مربع CSS وخارجها (ترجع عادةً صور الخلفية إلى التمريرات أو عمليات التحويل ثنائية الأبعاد أو ثلاثية الأبعاد).

أصل الخلفية

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 4-
  • Safari: 3-

المصدر

تتيح لك السمة background-origin تعديل منطقة الخلفيات المرتبطة بمربّع معيّن. تتوافق القيم التي تقبلها السمة مع مناطق border-box وpadding-box وcontent-box في المربّع .

جرب هذه الخيارات باستخدام العرض التوضيحي التالي:

مقطع الخلفية

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 4-
  • Safari: الإصدار 5-

المصدر

تتحكّم السمة background-clip في ما يظهر مرئيًا من طبقة الخلفية بغض النظر عن الحدود التي تنشئها السمة background-origin.

مثل background-origin، المناطق التي يمكن تحديدها هي border-box وpadding-box وcontent-box حسب المكان الذي يمكن عرض طبقة خلفية CSS فيه. عند استخدام هذه الكلمات الرئيسية، سيتم اقتصاص أو اقتصاص أي عرض للخلفية تختلف عن المنطقة المحدّدة.

تقبل السمة background-clip أيضًا استخدام كلمة رئيسية text تقوم باقتصاص الخلفية بحيث لا يتجاوز النص داخل مربّع المحتوى. ولكي يكون هذا التأثير واضحًا في النص الفعلي داخل مربع CSS، يجب أن يكون النص شفافًا جزئيًا أو كليًا.

هي سمة جديدة نسبيًا في وقت كتابة هذا التقرير، ويتطلب Chrome ومعظم المتصفحات البادئة -webkit- لاستخدام هذه السمة.

دعم المتصفح

  • Chrome: 1-
  • الحافة: 12.
  • فَيَرفُكس: 4-
  • Safari: الإصدار 5-

المصدر

خلفيات متعددة

كما ذُكر في بداية الوحدة، تسمح طبقة الخلفية بتحديد طبقات فرعية متعددة. للإيجاز، سأشير إلى هذه الطبقات الفرعية باعتبارها خلفيات.

تم تحديد خلفيات متعددة من الأعلى إلى الأسفل. وتكون الخلفية الأولى هي الأقرب إلى المستخدم، بينما تكون الخلفية الأخيرة هي الأبعد عن المستخدم.

الخلفية الوحيدة المحددة أو الطبقة الأخيرة هي التي يحدِّدها المتصفِّح كطبقة الخلفية النهائية. يُسمح لهذه الطبقة فقط بتحديد background-color.

يمكن ضبط طبقات متعددة بشكل فردي باستخدام معظم خصائص CSS المتعلقة بالخلفية والمفصولة بفواصل، كما هو موضّح في مقتطف الرمز والعرض التوضيحي المباشر أدناه.

background-image: url("https://assets.codepen.io/7518/pngaaa.com-1272986.png"),
    url("https://assets.codepen.io/7518/blob.svg"),
    linear-gradient(hsl(191deg, 40%, 86%), hsla(191deg, 96%, 96%, 0.5));
  background-size: contain, cover, auto;
  background-repeat: no-repeat, no-repeat, no-repeat;
  background-position: 50% 50%, 10% 50%, 0% 0%;
  background-origin: padding-box, border-box, content-box;

اختصار الخلفية

لتسهيل تصميم طبقة الخلفية لمربع - خاصة عندما تكون طبقات الخلفية المتعددة مطلوبة - هناك اختصار يتبع النمط المحدد التالي:

background:
  <background-image>
  <background-position> / <background-size>?
  <background-repeat>
  <background-attachment>
  <background-origin>
  <background-clip>
  <background-color>?

الترتيب مهم في الشكل المختصر للإعلان عن خلفيات متعددة. يجب تقديم قيم موضع الإعلان وحجمه، مع الفصل بينهما بشرطة مائلة (/). يتيح لك تحديد سلوك المصدر والمقطع بالترتيب الصحيح الاستفادة من ضبط كلمات رئيسية صالحة لكليهما في الوقت نفسه.

يتضمن التعريف التالي الخلفية وينشئها من مربّع المحتوى:

background: url("https://assets.codepen.io/7518/blob.svg") 50%
      50% / contain no-repeat content-box;

مع وضع هذه الدلالات المختصرة في الاعتبار، يمكن إعادة كتابة التعريفات السابقة ذات الصلة بمقتطف الرمز على النحو التالي:

background: url("https://assets.codepen.io/7518/pngaaa.com-1272986.png") 50% 50%/contain no-repeat padding-box, url("https://assets.codepen.io/7518/blob.svg") 10% 50% / cover border-box, linear-gradient(hsl(191deg, 40%, 86%), hsla(191deg, 96%, 96%, 0.5) ) 0% 0% / cover no-repeat content-box ;

التحقق من فهمك

اختبر معلوماتك حول خلفيات CSS

يتم وضع صور الخلفية في أعلى يمين مربع CSS.

صحيح
إجابة صحيحة.
خطأ
واعتمادًا على حجمها الأساسي، قد تبدو الصورة غير موجودة في أعلى يمين مربع CSS، ويجب استخدام background-position بشكل صريح لتغيير الموضع التلقائي لصورة الخلفية.

في العادة، لا يتم تكرار الصور الخلفية بشكل تلقائي.

خطأ
يجب استخدام background-repeat: no-repeat صراحةً لعدم تكرار صورة خلفية. بالإضافة إلى ذلك، يمكن استخدام background-repeat: repeat-x وbackground-repeat: repeat-y لمنع التكرار في المحور المحدّد.
صحيح
إجابة صحيحة.

أيّ من نماذج تعريف "background-position" التالية صالحة؟

background-position: 50% left
عند استخدام قيم CSS مع الكلمات الرئيسية، يكون ترتيب القيم مهمًا.
background-position: top right 33%
يؤدي هذا إلى وضع صورة خلفية في أعلى المربّع وعلى بُعد 33% من الحافة اليمنى للمربّع.
background-position: right bottom
يؤدي هذا إلى وضع صورة خلفية في أقصى يمين وأسفل المربع. يمكن تسمية موضع المحاور المختلفة بأي ترتيب.
background-position: left
يؤدي هذا إلى وضع صورة خلفية في أقصى يسار المربع وتوسيطها عموديًا. عند توفير موضع واحد فقط للمحور، يتم توسيط صورة الخلفية في المحور المقابل.

لضبط صورة خلفية في إطار العرض الذي تستخدمه:

background-position: fixed
"هذه قيمة غير صالحة للسمة background-position".
background-fixed-to-viewport: true
لم يتم توفير background-fixed-to-viewport في خدمة مقارنة الأسعار (CSS) بعد.
background-attachment: fixed
يحدّد background-attachment: fixed بشكل واضح صورة الخلفية لكي يتم إصلاحها داخل إطار العرض الحالي.
background-attachment: scroll
إنّ "background-attachment" هي السمة التي يتم استخدامها لضبط صورة خلفية في إطار العرض. ولكن scroll هي القيمة التلقائية للسمة التي تعمل على إصلاح صورة الخلفية بشكل تلقائي في المربّع بدون التأثير في المحتوى داخل هذا المربّع.

يكون أصل الخلفية التلقائي للخلفية داخل مربّع CSS هو:

content-box
إنّ القيمة صالحة لـ background-origin، ولكنّها ليست القيمة التلقائية.
border-box
قيمة صالحة لـ background-origin والحدود المرتبة مسبقًا يمكن رسمها فوق الخلفيات، ولكنها ليست القيمة التلقائية.
padding-box
القيمة التلقائية لـ background-origin. يسمح بعرض الخلفية خارج حدود المحتوى وحتى حدود المربّع.
margin-box
على الرغم من أنّ المنطقة المعروفة لمربّع CSS هي قيمة غير صالحة للسمة background-origin.