اذهب إلى المحتوى

تنسيق الخلفيات (Backgrounds) في CSS


زائر

تُمكنك CSS من وضع ألوان، أو تدرجات لونية، أو صور كخلفيات للعناصر، والتحكم في حجمها، وموضعها، وعدد مرات تكرارها.

إضافة الألوان كخلفيات للعناصر

تُستعمل الخاصية background-color لإضافة خلفية بلون معين للعنصر، وتقبل القيم transparent، و inherit، و initial أيضًا، ويمكن تطبيقها على العناصر و العناصر الزائفة first-letter:: و first-line::.

  • transparent: تجعل خلفية العنصر شفافة، وهي القيمة الافتراضية للخاصية.
  • inherit: تَرِث قيمة الخاصية من العنصر الأب.
  • initial: تُرجع القيمة الإبتدائية للخاصية.

تُعرَّف الألوان في CSS بعدد من الطُرق وهي:

الكلمات المحجوزة للألوان

<style>
    div {
        background-color: red;
    }
</style>

<div>This will have a red background</div>

القيم الست عشرية للألوان

تُستعمل القيم الست عشرية لتمثيل مكونات الألوان (أو ما يُعرف بترميز RGB) بالنظام الست عشري. فمثلًا يكون اللون ff0000# هو اللون الأحمر، حيث يُمثل بالحرفين (ff) اللذان يمثلان المقابل الست عشري للرقم 256.

يُمكن تقسم الترميز الست عشري للألوان إلى ثلاثة أقسام، كل منها يتكون من حرفين ويُمثل أحد الألوان الأحمر أو الأخضر أو الأزرق (على الترتيب من اليسار إلى اليمين)، وفي حال كانت الحروف الممثلة لكل لون متشابهه، يمكن إختصار الترميز الست عشري إلى ثلاث أحرف، فعلى سبيل المثال يُمكن اختصار اللون ‎#ff0000 إلى f00#.

ملاحظة: الترميز الست عشري غير حساس لحالة الأحرف.

body {
    background-color: #de1205; /* red */
}

.main {
    background-color: #00f; /* blue */
}

ترميز RGB و RGBa

ترمُز RGB إلى الألوان الأحمر والأخضر والأزرق (على الترتيب من اليسار إلى اليمين)، وتستخدم ثلاث قيم تُمثَّل كل منها القيمة العشرية لأحد الألوان الثلاثة، وتتراوح هذه القيم بين صفر و 255.

يُمكِّن ترميز RGBa من إضافة مُعامل أخير يُسمى معامل ألفا، ويُحدد درجة تعتيم/شفافية العنصر، وتتراوح قيمته بين 0.0 و 1.0.

header {
    background-color: rgba(0, 0, 0); /* black */
}

footer {
    background-color: rgba(0, 0, 0, 0.5); /* black with 50% opacity */
}

ترميز HSL و HSLa

ترمز hsl للكلمات صبغة (hue) وتستعمل لتحديد اللون، إشباع (saturation) وتستعمل لتحديد تركيز اللون، إضاءة (lightness) وتستعمل لتحديد كمية اللون الأبيض في اللون.

تحدد قيمة الصبغة بزاوية بين صفر و 360 درجة، بينما تحدد قيم الإشباع والإضاءة بنسب مئوية.

يُمكِّن ترميز HSLa من إضافة مُعامل أخير يُسمى معامل ألفا، ويُحدد درجة تعتيم/شفافية العنصر، وتتراوح قيمته بين 0.0 و 1.0.

li a {
    background-color: hsl(120, 100%, 50%); /* green */
}

#p1 {
    background-color: hsla(120, 100%, 50%, 0.3); /* green with 30% opacity */
}

استخدام التدرجات اللونية كخلفيات للعناصر

أُضيفت التدرجات اللونية كإحدى أنواع الصور في CSS3، ويُمكن استعمالها كقيمة للخاصية background-image أو الخاصية المُختزلة background. ويوجد نوعين من التدرجات اللونية هما التدرجات الخطية (linear) و التدرجات الدائرية (radial)، وكلٌّ منهما يمكن أن يكون متكرر أو غير متكرر.

  • linear-gradient()‎
  • repeating-linear-gradient()‎
  • radial-gradient()‎
  • repeating-radial-gradient()‎

التدرج الخطي: الدالة linear-gradient()‎

الصيغة العامة

background: linear-gradient(<direction>?, <color-stop-1>, <color-stop-2>, ...);
القيمة الوصف
<direction> يُمكن أن يأخذ قيم مثل to top، أو to bottom، أو to right، أو to left، أو تأخذ زاوية تبدأ من الأعلى وتدور في اتجاه عقارب الساعة، وتُقاس بالوحدات deg، أو grad، أو rad، أو turn. وإذا لم تُحدد هذه القيمة يكون التدرج من أعلى لأسفل.
<color-stop-list> تُحدد قائمة من الألوان، ويُمكن إتباع كل لون بنسبة مئوية أو مسافة تُحدد الموضع الذي سيُعرض فيه اللون (إختاري)، مثل:
yellow 10% rgba(0,0,0, 0.5) 40px, #fff 100%

مثال

إنشاء تدرج لوني يتجه من اليمين إلى اليسار ويتدرج بين اللونين الأحمر والأزرق

.linear-gradient {
    background-color: linear-gradient(to left, red, blue); /* you can also use 270deg */
}

إنشاء تدرج لوني يتجه من أسفل اليمين إلى أعلى اليسار

.diagonal-linear-gradient {
    background-color: linear-gradient(to left top, red, yellow 10%);
}

يُمكنك تحديد أي عدد من النقاط اللونية في التدرج اللوني والفصل بينها بفاصلة، كما هو موضح في المثال التالي

.linear-gradient-rainbow {
    background-color: linear-gradient(to left, red, orange, yellow, green ,blue, indigo, violet);
}

التدرج الدائري: الدالة radial-gradient()‎

.radial-gradient-simple {
    background: radial-gradient(red, blue);
}

.radial-gradient {
    background: radial-gradient(circle farthest-corner at top left, red, blue);
}
القيمة الوصف
circle شكل التدرج اللوني، ويمكن أن تكون circle، أو ellipse وهي القيمة الإفتراضية.
farthest-corner كلمة محجوزة تُحدد حجم الشكل النهائي، ويمكن أن تكون closest-side، أو farthest-side، أو closest-corner، أو farthest-corner.
top left تُحدد موضع مركز التدرج اللوني.

التدرجات المُتكررة (Repeating Gradients)

تأخذ التدرجات اللونية المتكررة نفس معاملات التدرجات اللونية العادية، ولكنها تُكرر التدرج اللوني على خلفية العنصر.

.bullseye {
    background: repeating-radial-gradient(red, red 10%, white 10%, white 20%);
}

.warning {
    background: repeating-linear-gradient(-45deg, yellow, yellow 10%, black 10%, black 20%);
}
القيمة الوصف
-45deg زاوية تبدأ من الأعلى وتدور في اتجاه عقارب الساعة، وتُقاس بالوحدات deg، أو grad، أو rad، أو turn.
to left إتجاه التدرج اللوني، وتُكتب بالصيغة: [x-axis(left Or right)][y-axis(top OR bottom)]
yellow 10% قائمة الألوان، ويُمكن إتباع كل لون بنسبة مئوية أو مسافة تُحدد الموضع الذي سيُعرض فيه اللون (إختاري).

استخدام الصور كخلفيات للعناصر

تُستخدم الخاصية background-image لوضع صورة كخلفية للعنصر المُحدد.

.myClass {
    background-image: url('/path/to/image.jpg');
}

ويُمكن تحديد عدد من الصور والفصل بينها بفاصلة، وتكون النتيجة أن تظهر الصور مترادفة حسب ترتيب كتابتها في الشيفرة.

.myClass {
    background-image: url('/path/to/image.jpg'),
                      url('/path/to/image2.jpg');
}
القيمة الوصف
url(...)‎ تُحدد مسار الصورة المُراد استخدامها.
none تحذف صورة الخلفية.
initial تُرجع القيمة الإفتراضية للخاصية.
inherit تَرِث قيمة الخاصية من العنصر الأب.

بعض الخصائص التي تُستخدم مع الخاصية background-image

background-size: xpx ypx | x% y%;
background-repeat: no-repeat | repeat | repeat-x | repeat-y;
background-position: left offset (px/%) right offset (px/%) | center center | left top | right bottom;

حجم الخلفية (Background Size)

تُستخدم الخاصية background-size للتحكم في تكبير وتصغير صورة الخلفية، وتأخذ قيمة واحدة تُحدد التكبير أو التصغير في الاتجاهين الأفقي والرأسي، أو تأخذ قيمتين تحددان التكبير أو التصغير في كل اتجاه على حدة.

تُحافظ القيمة auto للخاصية background-size على نسبة أبعاد الصورة (نسبة الإرتفاع إلى العرض)، فعلى سبيل المثال إذا كان لدينا صورة بحجم 256px * 256px، فإن جميع القواعد أدناه متكافئة وتؤدي لعرض الصورة بارتفاع وعرض 50 بكسل.

background-size: 50px;
background-size: 50px auto;
background-size: auto 50px;
background-size: 50px 50px;

الصورة الإبتدائية

Htt64.png

النتيجة

0Bay0.png

ويُمكن أيضًا استعمال نسب مئوية لتحديد التكبير أو التصغير للصورة.

#withbackground {
    background-image: url('to/some/background.png');
    background-size: 100% 66%;
    width: 200px;
    height: 200px;
    padding: 0;
    margin: 0;
}

النتيجة

VYOt6.png

ملاحظة: يعتمد سلوك الخاصية background-size على الخاصية background-origin.

المحافظة على نسبة أبعاد الصورة

للمحافظة على نسبة أبعاد الصورة عند استخدامها لتغطية عنصر أو وضعها داخله يجب استخدام القيم cover أو contain للخاصية background-size.

gray-bg.PNG

افترض أن المساحة البيضاء في الصورة أعلاه تُمثل شاشة العرض الخاصة بك، استخدام القيمة contain للخاصية background-size سيؤدي إلى تكبير أو تصغير الصورة بحيث يُطابق أحد أبعادها أحد بُعدي الصندوق مع المحافظة على نسبة أبعاد الصورة.

contain.PNG

أما القيمة cover فستؤدي إلى تكبير الصورة بحيث تطابق أبعادها أبعاد الصندوق، مع قص الأجزاء الزائدة عن مساحة الصندوق للمحافظة على نسبة أبعاد الصورة.

cover.PNG

مثال

  • ملف CSS
  div > div {
      background-image: url(http://i.stack.imgur.com/r5CAq.jpg);
      background-repeat: no-repeat;
      background-position: center center;
      background-color: #ccc;
      border: 1px solid;
      width: 20em;
      height: 10em;
  }
  div.contain {
      background-size: contain;
  }
  div.cover {
      background-size: cover;
  }

  /********************************************
  Additional styles for the explanation boxes
  *********************************************/

  div > div {
      margin: 0 1ex 1ex 0;
      float: left;
  }
  div + div {
      clear: both;
      border-top: 1px dashed silver;
      padding-top:1ex;
  }
  div > div::after {
      background-color: #000;
      color: #fefefe
      margin: 1ex;
      padding: 1ex;
      opacity: 0.8;
      display: block;
      width: 10ex;
      font-size: 0.7em;
      content: attr(class);
  }
  • ملف HTML
  <div>
      <div class="contain"></div>
      <p>Note the grey background. The image does not cover the whole region, but it's fully
      <em>contained</em>.
      </p>
  </div>

  <div>
      <div class="cover"></div>
      <p>Note the ducks/geese at the bottom of the image. Most of the water is cut, as well as a part
      of the sky. You don't see the complete image anymore, but neither do you see any background color;
      the image <em>covers</em> all of the <code><div></code>.</p>
  </div>

النتيجة

Gxfig.png

نقوش الصور (Image Sprites)

نقوش الصور هي مجموعة من الصور مُخزَّنة في صورة واحدة، ويمكن استعمال كل صوره منها على حدة.

مثال

XuyVW.png

الصورة أعلاه تحتوي على عدد من الصور، ويمكن استعمال كل واحدة منها منفردة كما هو موضح في الشيفرة التالية:

  • ملف HTML
  <div class="icon icon1"></div>
  <div class="icon icon2"></div>
  <div class="icon icon3"></div>
  • ملف CSS
  .icon {
      background: url(“icons-sprite.png”);
      display: inline-block;
      height: 20px;
      width: 20px;
  }
  .icon1 {
      background-position: 0px 0px;
  }
  .icon2 {
      background-position: -20px 0px;
  }
  .icon3 {
      background-position: -40px 0px;
  }

تُفصل الصور عن طريق تحديد مواقعها بالخاصية background-position.

موضع الخلفية (Background Position)

تُستخدم الخاصية background-position لتحديد نقطة بداية الخلفية سواء كانت صورة أو تدرج لوني.

.myClass {
    background-image: url('path/to/image.jpg');
    background-position: 50% 50%;
}
الوحدة الوصف
value% value% تُحدد الإزاحة الأفقية لصورة الخلفية كنسبة من عرض الصورة، والإزاحة الرأسية كنسبة من ارتفاعها.
valuepx valuepx تُحدد الإزاحات الأفقية والرأسية بالبكسلات، وتُقاس المسافة من أعلى ويسار الصورة.

بالإضافة للخاصية المختزلة background-position والتي تُحدد الإزاحتان الأفقية والرأسية معًا، يُمكن استخدام الخاصية background-position-x لتحديد الإزاحة الأفقية، والخاصية background-position-y لتحديد الإزاحة الرأسية.

الخاصية background-origin

تُحدد الخاصية background-origin موضع صورة الخلفية، وفي حال كانت قيمة الخاصية background-attachment هي fixed فلن يكون لهذه الخاصية أي تأثير، والقيمة الإفتراضية لها هي padding-box.

القيمة الوصف
padding-box يُحدد الموضع نسبةً لصندوق الحواشي.
border-box يُحدد الموضع نسبةً لصندوق الإطارات.
context-box يُحدد الموضع نسبةّ لصندوق المحتوى.
initial تُرجع القيمة الإبتدائية للخاصية.
inherit ترث قيمة الخاصية من العنصر الأب.

مثال

  • ملف HTML
  <p>No background-origin (padding-box is default):</p>
  <div class="example example1">
      <h2>Lorem Ipsum Dolor</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
      <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</p>
  </div>

  <p>background-origin: border-box:</p>
  <div class="example example2">
      <h2>Lorem Ipsum Dolor</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
      <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</p>
  </div>

  <p>background-origin: content-box:</p>
  <div class="example example3">
      <h2>Lorem Ipsum Dolor</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
      <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</p>
  </div>
  • ملف CSS
  .example {
      width: 300px;
      border: 20px solid black;
      padding: 50px;
      background: url(https://static.pexels.com/photos/6440/magazines-desk-work-workspace-medium.jpg);
      background-repeat: no-repeat;
  }
  .example1 {}
  .example2 { background-origin: border-box; }
  .example3 { background-origin: content-box; }

النتيجة

ycz1z.png

مصادر إضافية

إضافة صور مُتعددة للخلفية

يُمكن إضافة عدد من الصور كخلفيات للعنصر، وتوضع الصور فوق بعضها البعض بنفس ترتيب ظهورها في الشيفرة كما هو موضح في المثال أدناه

#mydiv {
    background-image: url(img_1.png), /* top image */
                      url(img_2.png), /* middle image */
                      url(img_3.png); /* bottom image */
    background-position: right bottom,
                         left top,
                         right top;
    background-repeat: no-repeat,
                       repeat,
                       no-repeat;
}

ومن الممكن أيضًا استخدام الصياغة المختزلة للخاصية كما هو موضح في المثال التالي

#mydiv {
    background: url(img_1.ong) right bottom no-repeat,
                url(img_2.png) left top repeat,
                url(img_3.png) right top no-repeat;
}

يُمكنك أيضًا إضافة تدرج لوني مع الصورة

#mydiv {
    background: url(image.png) right bottom no-repeat,
                linear-gradient(to bottom, #fff 0%, #000 100%);
}

اطَّلع على تجربة حية لهذه الأمثله على JSFiddle.

الخاصية background-attachment

تُحدد الخاصية background-attachment ما إذا كانت صورة الخلفية ثابتة (fixed) أم انها تتحرك مع بقية الصفحة.

body {
    background-image: url('img.jpg');
    background-attachment: fixed;
}
القيمة الوصف
scroll تتحرك صورة الخلفية مع العنصر.
fixed صورة الخلفية ثابتة بالنسبة لشاشة العرض.
local تتحرك صورة الخلفية مع محتوى العنصر.
initial تُرجع القيمة الإبتدائية للخاصية.
inherit ترث قيمة الخاصية من العنصر الأب.

أمثلة

  • background-attachment: scroll
  body {
      background-image: url('image.jpg');
      background-attachment: scroll;
  }
  • background-attachment: fixed
  body {
      background-image: url('image.jpg');
      background-attachment: fixed;
  }
  • background-attachment: local
  div {
      background-image: url('image.jpg');
      background-attachment: local;
  }

الخاصية background-clip

تُحدد الخاصية background-clip أين ستتوقف خلفية العنصر على حدود العنصر، سواءً كانت الخلفية لونًا <color> أو صورةً <image>.

القيمة الوصف
border-box ستمتد الخلفية إلى الحافة الخارجية للإطار (border)، لكنها ستقع تحته.
padding-box ستمتد الخلفية إلى الحافة الخارجية لمنطقة الحواشي (padding)، ولن تُرسَم الخلفية تحت الإطار.
content-box ستكون حدود الخلفية هي صندوق المحتوى (content box).
inherit ترث قيمة الخاصية من العنصر الأب.

مثال

  • ملف HTML
  <p>No background-origin (padding-box is default):</p>
  <div class="example example1">
      <h2>Lorem Ipsum Dolor</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
      <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</p>
  </div>

  <p>background-origin: border-box:</p>
  <div class="example example2">
      <h2>Lorem Ipsum Dolor</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
      <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</p>
  </div>

  <p>background-origin: content-box:</p>
  <div class="example example3">
      <h2>Lorem Ipsum Dolor</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
      <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</p>
  </div>
  • ملف CSS
  .example {
      width: 300px;
      border: 20px solid black;
      padding: 50px;
      background: url(https://static.pexels.com/photos/6440/magazines-desk-work-workspace-medium.jpg);
      background-repeat: no-repeat;
  }
  .example1 {}
  .example2 { background-origin: border-box; }
  .example3 { background-origin: content-box; }

الخاصية background-repeat

تُحدد الخاصية background-repeat كيف ستتكرر صورة الخلفية؛ إذ يمكن أن تتكرر صورة الخلفية على المحور الأفقي، أو على المحور الرأسي، أو على كلا المحوري، ويمكن ألّا تتكرر أبدًا.

مثال: تكرار الخلفية على المحور الرأسي

div {
    background-image: url("image.jpg");
    background-repeat: repeat-y;
}

النتيجة

37rSv.png

الخاصية background-blend-mode

تُحدد الخاصية background-blend-mode كيف تمتزج صور الخلفية مع بعضها بعضًا ومع لون الخلفية المُحدَّد للعنصر.

.my-div {
    width: 300px;
    height: 200px;
    background-size: 100%;
    background-repeat: no-repeat;
    background-image: linear-gradient(to right, black 0%,white 100%),
    url('https://static.pexels.com/photos/54624/strawberry-fruit-red-sweet-54624-medium.jpeg');
    background-blend-mode:saturation;
}

اطّلع على تجربة حيَّة لهذا المثال على JSFiddle.

لمزيد من المعلومات حول الخاصية background-blend-mode انظر موسوعة حسوب.

إضافة تأثير الشفافية على خلفية العنصر

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

/* Fallback for web browsers that don't support RGBa */
background-color: rgb(0, 0, 0);

/* RGBa with 0.6 opacity */
background-color: rgba(0, 0, 0, 0.6);

/* For IE 5.5 - 7*/
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);

/* For IE 8*/
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,
endColorstr=#99000000)"

الخاصية المختزلة background

يُمكن استخدام الخاصية المُختزلة background لتحديد خاصية واحدة أو عدد من الخصائص المرتبطة بالخلفيات.

الخاصية الوصف إصدار CSS
background-image الصورة المُراد استخدامها كخلفية. +1
background-color اللون المُراد استخدامه كخلفية. +1
background-position موضع الخلفية. +1
background-size حجم صورة الخلفية. +3
background-repeat كيفية تكرار صورة الخلفية. +1
background-origin مركز الخلفية. +3
background-clip تحدد كيف ستعرض الخلفية نسبةً لصندوق المحتوى أو صندوق الإطارات أو صندوق الحواشي. +3
background-attachment تُحدد ما إذا كانت الخلفية ستتحرك مع العنصر الحاوي لها، أم أنها ثابتة. +1
initial تُرجع القيمة الإبتدائية للخاصية. +3
inherit ترث قيمة الخاصية من العنصر الأب +2

الصيغة العامة

background: [<background-image>] [<background-color>] [<background-position>]/[<background-size>]
[<background-repeat>] [<background-origin>] [<background-clip>] [<background-attachment>]
[<initial|inherit>];

ملاحظة: جميع الخواص اختيارية، والترتيب غير مهم.

أمثلة

إضافة خلفية بلون أحمر للعنصر

background: red;

استعمال الخاصية background-clip

background: border-box red;

تحديد تكرار ومركز الخلفية

background: no-repeat center url('somepng.png');

إضافة أكثر من خلفية للعنصر

background: url('pattern.png') green;
background: #000 url(picture.png) top left / 00px auto no-repeat;

ترجمة -وبتصرف- للفصل Backgrounds من كتاب CSS Notes for Professionals


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...