الصور المتجاوبة مع مختلف الأجهزة واتجاه الرسومات

يتم غالبًا تنفيذ الصور المتجاوبة مع مختلف الأجهزة باستخدام السمة srcset. السمة srcset هي قائمة مفصولة بفواصل تتضمّن أسماء ملفات الصور وأدوات وصف العرض أو الكثافة الخاصة بها.

لمنع متغيّرات التصميم، اضبط السمتَين width وheight على علامتَي <img> و<source> اللتَين تستخدمان srcset.

أدوات وصف الكثافة

لإنشاء صور سريعة الاستجابة تستخدِم واصفات الكثافة:

  • يجب أن تكون لجميع الصور المدرَجة في السمتَين src وsrcset نسبة العرض إلى الارتفاع نفسها.
  • يجب ضبط السمتَين width وheight لمطابقة أبعاد صورة 1x.
  • يجب أن تشير السمة src إلى صورة 1x.

أدوات وصف العرض

لإنشاء صور سريعة الاستجابة تستخدم أدوات وصف العرض:

  • يجب أن تكون جميع الصور المُدرَجة في src وsrcset لها نسبة العرض إلى الارتفاع نفسها.
  • يجب أن تتطابق السمتان width وheight مع أبعاد الصورة الاحتياطية.
  • عدِّل تصميم الصورة حسب الحاجة. بدون CSS، في حال ضبط width وheight على صورة سريعة الاستجابة تتضمّن أدوات وصف للعرض، سيتم عرض الصورة دائمًا بهذا الحجم المحدَّد. وينطبق ذلك حتى عندما تكون أبعاد الصور الواردة في srcset متفاوتة. قد لا يكون هذا السلوك هو ما تريده. يمكنك إضافة width: 100%; height: auto; أو width: 100vw; height: auto; إلى نمط الصورة للحصول على المظهر المرئي الذي تريده.

عناصر الصورة

لإنشاء عناصر <picture> متجاوبة:

  • اضبط السمتَين width وheight لكل علامات <source>. وتعتمد القيم المناسبة لهذه السمة على كيفية استخدام العلامة <source> للسمة srcset.
  • يمكنك تعديل الصورة من خلال تصميم علامة <img> المقابلة لها. تُعدّ العلامة <source> عنصرًا فارغًا، وبالتالي ليس للنمط أي تأثير.
  • اضبط السمتَين width وheight في العلامة <img>. ويجب أن تتطابق هذه القيم مع الحجم الأساسي للصورة الاحتياطية.

أمثلة

HTML

<!-- Using density descriptors -->
<img width="480" height="330"
    srcset="cat-1x.jpg, cat-2x.jpg 2x, cat-3x.jpg 3x"
    src="cat-1x.jpg"
    alt="Photo of a cat on a green background">
<!-- Using width descriptors -->    
<img width="256" height="128"
    srcset="dog-256w.jpg 256w, dog-512w.jpg 512w, dog-1028w.jpg 1028w"
    src="dog-256w.jpg"
    alt="Photo of a dog on a orange background">
<!-- Picture tag -->
<picture>
    <source media="(max-width: 720px)" width="600" height="300" srcset="newyork-rectangle.jpg" />
    <source media="(min-width: 721px)" width="600" height="600" srcset="newyork-square-1x.jpg, newyork-square-2x.jpg 2x, newyork-square-3x.jpg 3x" />
    <img src="newyork-rectangle.jpg" width="600" height="300" alt="Photo of the Empire State Building">
</picture>