تاريخ الانتهاء من إعداد خدمة مقارنة الأسعار (CSS) لعام 2023

عنوان ملف CSS

CSS Wrapped: 2023

ممتاز. كان عام 2023 عامًا هامًا لخدمة CSS.

من #Interop2023 إلى العديد من الصفحات الجديدة في مجال CSS وواجهة المستخدم التي تتيح إمكانات كان المطوّرون يعتقدون في السابق أنّها مستحيلة على منصة الويب. يتيح الآن كل متصفّح حديث طلبات البحث عن الحاويات والشبكة الفرعية وعنصر الاختيار :has() ومجموعة كبيرة من مساحات الألوان والدوالّ الجديدة. تتوفّر في Chrome الرسوم المتحرّكة المستندة إلى الانتقال باستخدام CSS فقط، بالإضافة إلى الرسوم المتحرّكة بسلاسة بين طرق عرض الويب باستخدام عمليات انتقال العرض. بالإضافة إلى ذلك، هناك العديد من العناصر الأساسية الجديدة التي تم طرحها لتوفير تجارب أفضل للمطوّرين، مثل تداخل CSS والأنماط ذات النطاق.

يا له من عام! لذا، نودّ أن ننهي هذا العام المهم ونحتفل بالجهود الكبيرة التي بذلها مطوِّرو المتصفحات ومنتدى الويب لتحقيق كل هذه الجهود.

الأُسس المعمارية

لنبدأ بالتعديلات على لغة CSS الأساسية وإمكاناتها. هذه الميزات أساسية لطريقة إنشاء الأنماط وتنظيمها، وتمنح المطوّر إمكانيات كبيرة.

الدوال المثلّثية

توافق المتصفّح

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 108
  • Safari: الإصدار 15.4.

المصدر

أتاح الإصدار Chrome 111 استخدام الدوال المثلثية sin() وcos() وtan() وasin() وacos() وatan() وatan2()، ما يجعلها متاحة على جميع المحرّكات الرئيسية. تكون هذه الدوال مفيدة جدًا لأغراض الرسوم المتحركة والتنسيق. على سبيل المثال، أصبح من الأسهل الآن ترتيب العناصر في دائرة حول مركز محدّد.

الإصدار التجريبي للدوالّ المثلثية

مزيد من المعلومات عن الدوال المثلثية في CSS

اختيار معقد للعنصر n-*

توافق المتصفّح

  • Chrome: 111
  • Edge: 111.
  • Firefox: 113.
  • Safari: 9-

باستخدام محدد الفئة الزائفة :nth-child()، من الممكن اختيار عناصر في نموذج DOM حسب فهرسها. باستخدام البنية الدقيقة An+B، يمكنك التحكّم بشكل دقيق في العناصر التي تريد اختيارها.

تأخذ العناصر المصطنعة :nth-*() تلقائيًا جميع العناصر الفرعية في الاعتبار. اعتبارًا من الإصدار 111 من Chrome، يمكنك اختياريًا تمرير قائمة أدوات اختيار إلى :nth-child() و:nth-last-child(). وبهذه الطريقة، يمكنك تصفية قائمة الأطفال مسبقًا قبل أن تُجري An+B عملها.

في العرض التوضيحي التالي، يتم تطبيق منطق 3n+1 على الدمى الصغيرة فقط من خلال فلترتها مسبقًا باستخدام of .small. استخدِم القوائم المنسدلة لتغيير أداة الاختيار المستخدَمة ديناميكيًا.

عرض توضيحي لاختيار العنصر nth-* المعقد

مزيد من المعلومات حول عمليات الاختيار المعقدة من النوع nth-*

المستوى

توافق المتصفّح

  • Chrome: 118
  • Edge: 118
  • متصفّح Firefox: خلف علم
  • Safari: الإصدار 17.4.

المصدر

أضاف الإصدار 118 من Chrome دعمًا لـ @scope، وهي قاعدة تتيح لك مطابقة أداة اختيار النطاق مع شجرة فرعية معيّنة من المستند. باستخدام التصميم على نطاق واسع، يمكنك أن تكون محددًا للغاية بشأن العناصر التي تحددها دون الحاجة إلى كتابة محددات محددة للغاية أو ربطها بإحكام ببنية DOM.

يتم تحديد شجرة فرعية ذات نطاق من خلال جذر النطاق (الحدّ الأقصى) وحدّ نطاق اختياري (الحدّ الأدنى).

@scope (.card) {  } /* scoping root */
@scope (.card) to (.card__content) {  } /* scoping root + scoping limit*/

قواعد الأنماط التي يتم وضعها داخل مجموعة نطاق ستستهدف فقط العناصر ضمن الشجرة الفرعية المُقتطعة. على سبيل المثال، لا تستهدف قاعدة الأنماط على مستوى التطبيق التالية سوى عناصر <img> التي تقع بين عنصر .card وأي مكوّن مُدمَج يتطابق مع المحدّد [data-component].

@scope (.card) to ([data-component]) {
  img {  }
}

في العرض الترويجي التالي، لا تتم مطابقة عناصر <img> في عنصر لوحة العرض الدوّارة بسبب الحدّ الأقصى لتحديد النطاق الذي تم تطبيقه.

لقطة شاشة للعرض التوضيحي لنطاق الموافقة

لقطة شاشة مرجعية للعرض التوضيحي لـ @scope

عرض توضيحي مباشر لميزة "النطاق"

العرض التوضيحي لخدمة مقارنة الأسعار (CSS) @scope

يمكنك الاطّلاع على مزيد من المعلومات عن @scope في المقالة "كيفية استخدام @scope لتقييد مدى وصول أدوات الاختيار". ستتعرّف في هذه المقالة على أداة اختيار :scope وكيفية التعامل مع النوعية والنطاقات التي لا تحتوي على مقدمة ومدى تأثُّر التسلسل بـ@scope.

التداخل

دعم المتصفح

  • Chrome: 120
  • الحافة: 120
  • Firefox: 117
  • Safari: الإصدار 17.2.

المصدر

قبل التداخل، كان يجب تحديد كلّ أداة اختيار صراحةً، بشكل منفصل عن بعضها. وهذا يؤدي إلى التكرار، وتجميع أوراق الأنماط، وتجربة تأليف متفرقة. يمكن الآن مواصلة استخدام أدوات الاختيار مع قواعد الأنماط ذات الصلة التي يتم تجميعها معًا.

dl {
  /* dt styles */
  
  dt {
    /* dl dt styles */
  }

  dd {
    /* dl dd styles */
  }
}

/* same as */
dt {
  /* dt styles */
}

dl dt {
  /* dl dt styles */
}

dl dd {
  /* dl dd styles */
}

دمج التسجيل الرقمي للشاشة

عرض توضيحي لميزة "تداخل البث المباشر"

تغيير أداة اختيار التداخل المُرخي لتحديد الفائز في السباق

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

مزيد من المعلومات حول التداخل

شبكة فرعية

توافق المتصفّح

  • Chrome: 117
  • الحافة: 117.
  • Firefox: 71
  • ‫Safari: 16

المصدر

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

تسجيل رقمي للشاشة في شبكة فرعية

عرض توضيحي مباشر للشبكة الفرعية

تتم محاذاة الرؤوس والنص والتذييلات مع الأحجام الديناميكية للأشقاء.

تكون الشبكة الفرعية مفيدة بشكل خاص في محاذاة العناصر المتشابهة مع بعضها البعض في ما يخص المحتوى الديناميكي. ويُتيح ذلك لكاتبي النصوص وكتاب تجربة المستخدم والمترجمين عدم محاولة إنشاء نص مشروع "يناسب" التنسيق. باستخدام الشبكة الفرعية، يمكن تعديل التنسيق ليلائم المحتوى.

اطّلِع على مزيد من المعلومات عن الشبكة الفرعية.

فن الطباعة

شهدت الطباعة على الويب بعض التعديلات الرئيسية في عام 2023. من الأمثلة الرائعة على التحسين المتدرّج السمة text-wrap. تتيح هذه السمة تعديل التنسيق الطباعي، الذي يتم إنشاؤه في المتصفّح بدون الحاجة إلى نص برمجي إضافي. وداعًا لأطوال الأسطر المحرجة ومرحبًا بأسلوب الخط الذي يمكن التنبؤ به بشكل أكبر!

الحرف الأول من اسمك

توافق المتصفّح

  • Chrome: 110
  • الحافة: 110.
  • Firefox: غير متوافق
  • ‫Safari: 9

المصدر

تم طرح سمة initial-letter في بداية العام في الإصدار 110 من Chrome، وهي سمة صغيرة وفعّالة في CSS تضبط تنسيق موضع الأحرف الأولى. يمكنك وضع الأحرف في حالة مُسقطة أو مرتفعة. تقبل السمة مَعلمتَين: الأولى لتحديد عمق إسقاط الحرف في الفقرة المقابلة، والثانية لتحديد مقدار رفع الحرف فوقها. يمكنك أيضًا استخدام كليهما معًا، كما هو موضّح في العرض الترويجي التالي.

لقطة شاشة للحرف الأول

لقطة شاشة للعرض التوضيحي بالأحرف الأولى

عرض توضيحي للحرف الأول

غيِّر قيم initial-letter للعنصر النائب ::first-letter لمشاهدة عملية النقل.

اطّلِع على مزيد من المعلومات عن initial-letter.

text-wrap: balance and pretty

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

وهنا يظهر أسلوبان جديدان لإحاطة النص، إحداهما باسم balance والأخرى pretty. تهدف قيمة balance إلى إنشاء مجموعة متناسقة من النصوص، بينما تهدف قيمة pretty إلى منع ظهور كلمات يتيمة وضمان استخدام علامات تقسيم الكلمات بشكل سليم. كان يتم تنفيذ هاتين المهمتَين يدويًا في العادة، ومن الرائع أن يتم إنجازهما من خلال المتصفّح وأن يعملا مع أي لغة مترجَمة.

تسجيل رقمي للشاشة يتضمّن التفاف النص

عرض توضيحي مباشر لميزة "التفاف النص"

في العرض التقديمي التالي، يمكنك مقارنة تأثيرات balance وpretty على عنوان وبقرة من خلال سحب شريط التمرير. جرِّب ترجمة العرض التوضيحي إلى لغة أخرى.

تعرَّف على مزيد من المعلومات عن التفاف النص: الرصيد.

اللون

كان 2023 هو عام الألوان التي شهدتها منصة الويب. باستخدام مساحات الألوان والدوالّ الجديدة التي تتيح استخدام ألوان ديناميكية في المظاهر، يمكنك إنشاء المظاهر الزاهية والمبهرة التي يستحقها المستخدمون، ويمكنك أيضًا تخصيصها.

مساحات الألوان العالية الدقة (مستوى اللون 4)

دعم المتصفح

  • Chrome: 111
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

المصدر

توافق المتصفّح

  • Chrome: 111.
  • الحافة: 111.
  • Firefox: 113.
  • Safari: 15.

المصدر

بدءًا من الأجهزة ووصولاً إلى البرامج، ومن CSS إلى الأضواء الوامضة، قد تحتاج أجهزة الكمبيوتر إلى بذل الكثير من الجهد لمحاولة عرض الألوان بجودة تشبه تلك التي تراها أعيننا. في العام 2023، سنقدّم ألوانًا جديدة ومزيدًا من الألوان ومساحات ألوان جديدة ووظائف ألوان وإمكانات جديدة.

يمكن الآن لـ CSS والألوان تنفيذ ما يلي: - التحقّق مما إذا كانت أجهزة شاشة المستخدمين قادرة على عرض ألوان النطاق العالي الديناميكية (HDR) ذات النطاق الواسع. - تحقّق مما إذا كان متصفّح المستخدم يفهم بنية الألوان، مثل Oklch أو Display P3. - تحديد ألوان HDR في Oklab وOklch وHWB وDisplay P3 وRec.2020 وXYZ والمزيد - إنشاء تدرّجات باستخدام ألوان النطاق العالي الديناميكية (HDR) - إدراج تدرّجات في مساحات ألوان بديلة - مزج الألوان باستخدام color-mix() - إنشاء صيغ ألوان نسبية

التسجيل الرقمي للشاشة باللون 4

إصدار تجريبي من Color 4

في العرض الترويجي التالي، يمكنك مقارنة تأثيرات "التوازن" و"جميل" على عنوان وفقرة من خلال سحب شريط التمرير. جرِّب ترجمة العرض الترويجي إلى لغة أخرى.

مزيد من المعلومات حول Color 4 ومساحات الألوان

دالة مزج الألوان

توافق المتصفّح

  • Chrome: 111
  • الحافة: 111.
  • Firefox: 113.
  • Safari: الإصدار 16.2.

المصدر

إنّ مزج الألوان هو مهمة كلاسيكية، ويمكن أن تؤدي CSS هذه المهمة أيضًا في العام 2023. لا يمكنك مزج الأبيض أو الأسود مع لون معيّن فحسب، بل يمكنك أيضًا مزج الشفافية، ويمكنك إجراء كل ذلك في أيّ مساحة ألوان تختارها. وهي ميزة أساسية للألوان وميزة متقدّمة للألوان في الوقت نفسه.

تسجيل رقمي للشاشة حول دالة color-mix()

عرض توضيحي للدالة color-mix()

يتيح لك الخيار "عيّنة" اختيار لونَين باستخدام أداة اختيار الألوان، ومساحة الألوان، ومقدار كل لون يجب أن يكون مهيمنًا في المزيج.

يمكنك اعتبار color-mix() لحظة من تدرج أحد التدرجات الزمنية. في حين أنّ التدرّج اللوني يعرض جميع الخطوات التي يجب اتّخاذها للانتقال من الأزرق إلى الأبيض، يعرض color-mix() خطوة واحدة فقط. تتطور الأمور بمجرد أن تبدأ في أخذ مساحات الألوان في الاعتبار وتتعلم مدى اختلاف مساحة ألوان المزج عن النتائج.

تعرَّف على مزيد من المعلومات عن color-mix().

بنية الألوان النسبية

بنية الألوان النسبية (RCS) هي طريقة تكميلية color-mix() لإنشاء خيارات الألوان. إنها أكثر قوة قليلاً من color-mix() ولكنها أيضًا استراتيجية مختلفة للعمل مع الألوان. يمكن أن يمزج color-mix() اللون الأبيض لتفتيح اللون، حيث تتيح خدمات الاتصالات التفاعلية (RCS) الوصول الدقيق إلى قناة الإضاءة وإمكانية استخدام calc() على القناة لتقليل الإضاءة أو زيادتها آليًا.

تسجيل شاشة RCS

عرض توضيحي مباشر لخدمات الاتصالات التفاعلية (RCS)

تغيير اللون وتغيير المشاهد ويستخدم كلّ منهما بنية لون نسبية لإنشاء خيارات لونية مختلفة عن اللون الأساسي.

تتيح لك خدمات RCS إجراء عمليات معالجة نسبية مطلقة للألوان. التغيير النسبي هو التغيير الذي تأخذ فيه القيمة الحالية للتشبع أو السطوع وتُعدّلها باستخدام calc(). التغيير المطلق هو التغيير الذي تستبدل فيه قيمة قناة بقيمة جديدة تمامًا، مثل ضبط الشفافية على %50. تمنحك هذه البنية أدوات مفيدة لإنشاء المظاهر وأنواع الإعلانات التي تظهر في الوقت المناسب وغير ذلك.

اطّلِع على مزيد من المعلومات حول بنية الألوان النسبية.

التصميم السريع الاستجابة

تطوّر التصميم السريع الاستجابة في 2023. وفّر هذا العام الرائد ميزات جديدة غيّرت تمامًا طريقة إنشاء تجارب الويب السريعة الاستجابة، وأدّى إلى ظهور نموذج جديد للتصميم السريع الاستجابة المستنِد إلى المكوّنات. يتيح الجمع بين طلبات البحث عن الحاوية و:has() استخدام المكوّنات التي تمتلك تصميمًا منطقيًا وقابلًا للتجاوب استنادًا إلى حجم العنصر الرئيسي، بالإضافة إلى توفّر أيّ من العناصر الثانوية أو حالتها. وهذا يعني أنّه يمكنك أخيرًا فصل التنسيق على مستوى الصفحة عن التنسيق على مستوى المكوّن، وكتابة المنطق مرة واحدة لاستخدام المكوّن في كل مكان.

طلبات بحث حاوية الحجم

دعم المتصفح

  • Chrome: 105
  • ‫Edge: 105
  • Firefox: 110.
  • ‫Safari: 16

المصدر

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

لاستخدام هذه الميزة، عليك أولاً إعداد العناصر التي يتمّ طلب البحث عنها، ثمّ استخدام @container مع مَعلمات الحجم لتطبيق الأنماط، كما هو الحال في طلب البحث عن الوسائط. بالإضافة إلى طلبات البحث عن الحاويات، يمكنك الحصول على أحجام طلبات البحث عن الحاويات. في العرض التوضيحي التالي، يتم استخدام حجم طلب الحاوية cqi (الذي يمثّل حجم الحاوية المضمّنة) لتحديد حجم رأس البطاقة.

@container Screencast

@container Demo

اطّلِع على مزيد من المعلومات عن استخدام طلبات البحث عن الحاويات.

طلبات البحث عن حاويات الأنماط

دعم المتصفح

  • Chrome: 111
  • Edge: 111.
  • Firefox: غير مدعوم.
  • Safari: 18

المصدر

تم طرح طلبات البحث عن الأنماط مع تنفيذ جزئي في الإصدار 111 من Chrome. باستخدام طلبات البحث عن الأنماط حاليًا، يمكنك طلب البحث عن قيمة السمات المخصّصة في عنصر رئيسي عند استخدام @container style(). على سبيل المثال، يمكنك طلب البحث عن قيمة خاصية مخصّصة أو تم ضبطها على قيمة معيّنة، مثل @container style(--rain: true).

لقطة شاشة لطلب البحث عن النمط

لقطة شاشة توضيحية لطلبات حاويات الأنماط في بطاقات الطقس

عرض توضيحي لطلب باستخدام نمط

تغيير اللون وتغيير المشاهد ويستخدم كلّ منهما بنية ألوان نسبية لإنشاء خيارات لونية مختلفة عن اللون الأساسي.

على الرغم من أنّ هذا يبدو مشابهًا لاستخدام أسماء الفئات في CSS، إلا أنّ طلبات الأنماط لها بعض المزايا. أولاً، يمكنك تعديل القيمة في CSS حسب الحاجة للحالات الزائفة باستخدام طلبات البحث عن الأنماط. في الإصدارات المستقبلية من التنفيذ، ستتمكّن من الاستعلام عن نطاقات القيم لتحديد النمط المطبَّق، مثل style(60 <= --weather <= 70)، والنمط استنادًا إلى أزواج الخاصية والقيمة، مثل style(font-style: italic).

اطّلِع على مزيد من المعلومات عن استخدام طلبات الأنماط.

أداة الاختيار ‎:has()‎

توافق المتصفّح

  • Chrome: 105.
  • الحافة: 105.
  • Firefox: 121.
  • Safari: الإصدار 15.4.

المصدر

على مدار 20 عامًا تقريبًا، طلب المطوّرون "محدِّد العنصر الرئيسي" في CSS. أصبح هذا الإجراء ممكنًا الآن باستخدام أداة الاختيار :has() التي تم تضمينها في الإصدار 105 من Chrome. على سبيل المثال، سيؤدي استخدام .card:has(img.hero) إلى اختيار عناصر .card التي تحتوي على صورة رئيسية كعنصر فرعي.

لقطة شاشة للعرض التوضيحي للدالة ‎:has()

لقطة شاشة مرجعية للعرض التوضيحي لدالة :has()‎

:has() عرض توضيحي مباشر

عرض :has() لخدمة مقارنة الأسعار: بطاقة بدون صورة أو بصورة

بما أنّ :has() تقبل قائمة محدد نسبيًا كوسيطات لها، يمكنك اختيار أكثر بكثير من العنصر الرئيسي. باستخدام أدوات دمج CSS المختلفة، من الممكن الانتقال إلى أعلى شجرة DOM، ولكن أيضًا إجراء اختيارات جانبية. على سبيل المثال، سيؤدي النقر على li:has(+ li:hover) إلى اختيار العنصر <li> الذي يسبق العنصر <li> الذي تم تمرير مؤشر الماوس فوقه حاليًا.

‎:has() Screencast

عرض توضيحي للدالة :has()‎

فيديو توضيحي لخدمة مقارنة الأسعار :has(): تثبيت

مزيد من المعلومات حول أداة اختيار :has() في CSS

تعديل الاستعلام عن الوسائط

دعم المتصفح

  • Chrome: 113
  • الحافة: 113.
  • ‫Firefox: 102
  • ‫Safari: 17

المصدر

تمنحك طلب البحث عن الوسائط update طريقة لتكييف واجهة المستخدم مع معدّل تحديث الشاشة في الجهاز. يمكن أن تبلغ هذه الميزة القيمة fast أو slow أو none المرتبطة بإمكانيات الأجهزة المختلفة.

من المرجّح أن يكون معدّل التحديث سريعًا في معظم الأجهزة التي تصمّم لها التطبيقات. ويشمل ذلك أجهزة الكمبيوتر المكتبي ومعظم الأجهزة الجوّالة. وقد يكون معدّل التحديث بطيئًا في قارئ الكتب الإلكترونية والأجهزة، مثل أنظمة الدفع ذات الطاقة المنخفضة. يُرجى العِلم أنّ الجهاز لا يمكنه عرض الصور المتحركة أو إجراء تعديلات متكرّرة، ما يعني أنّه يمكنك توفير طاقة البطارية أو إيقاف تعديلات العرض غير الصالحة.

تعديل التسجيل الرقمي للشاشة

تحديث الإصدار التجريبي

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

مزيد من المعلومات عن@media (تعديل)

طلب الوسائط البرمجي

توافق المتصفّح

  • Chrome: 120
  • الحافة: 120
  • Firefox: 113.
  • ‫Safari: 17

المصدر

يمكن استخدام طلب البحث عن الوسائط البرمجي للتحقّق مما إذا كانت JavaScript متاحة أم لا. وهذا أمر رائع للتحسين التدريجي. قبل طلب بيانات الوسائط هذا، كانت استراتيجية رصد توفّر JavaScript هي وضع فئة nojs في لغة HTML وإزالتها باستخدام JavaScript. يمكن إزالة هذه النصوص البرمجية لأنّ CSS تتضمّن الآن طريقة لرصد JavaScript وإجراء التعديلات وفقًا لذلك.

كيفية تفعيل JavaScript وإيقافه على صفحة للاختبار من خلال "أدوات مطوّري البرامج في Chrome"

تسجيل رقمي للشاشة يتضمن تعليمات برمجية

عرض توضيحي لبرمجة النصوص البرمجية

لنفترض أنّه تم إجراء تبديل في المظهر على موقع إلكتروني، يمكن أن تساعد طلب البحث عن الوسائط البرمجي في إجراء التبديل على عكس الإعدادات المفضّلة للنظام بسبب عدم توفّر JavaScript. أو يمكنك استخدام مكوّن مفتاح تبديل. إذا كان JavaScript متاحًا، يمكن التمرير سريعًا على المفتاح التبديل باستخدام إيماءة بدلاً من تفعيله أو إيقافه فقط. هناك الكثير من الفرص الرائعة لتحسين تجربة المستخدم إذا كان نص البرمجة متوفرًا مع توفير تجربة أساسية مفيدة في حال إيقافه.

اطّلِع على مزيد من المعلومات عن النص البرمجي.

طلب الوسائط ذات الشفافية المنخفضة

توافق المتصفّح

  • Chrome: 118
  • Edge: 118
  • متصفّح Firefox: خلف علم
  • Safari: غير متوافق

المصدر

يمكن أن تتسبب الواجهات غير المعتمة في الصداع أو أن تصعِّب الرؤية لدى الأشخاص الذين يعانون من أنواع مختلفة من عيوب البصر. لهذا السبب، تتضمّن أنظمة التشغيل Windows وmacOS وiOS إعدادات مفضّلة للنظام يمكنها تقليل شفافية واجهة المستخدم أو إزالتها. يتوافق طلب البحث عن الوسائط هذا لـ prefers-reduced-transparency مع طلبات البحث عن الوسائط الأخرى المفضّلة، ما يتيح لك الإبداع مع إمكانية التعديل أيضًا بما يناسب المستخدمين.

تسجيل شاشة بدرجة شفافية منخفضة

الإصدار التجريبي المخفّض للشفافية

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

مزيد من المعلومات عن@media (prefers-reduced-transparency)

التفاعل

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

عرض الانتقالات

توافق المتصفّح

  • Chrome: 111
  • الحافة: 111.
  • Firefox: غير متوافق
  • Safari: 18-

المصدر

تؤثر عمليات انتقال العرض بشكل كبير في تجربة المستخدم للصفحة. باستخدام View Transitions API، ​​يمكنك إنشاء انتقالات مرئية بين حالتَي صفحة في تطبيقك المكوّن من صفحة واحدة. يمكن أن تكون هذه الانتقالات انتقالات صفحة كاملة، أو عناصر أصغر حجمًا على الصفحة، مثل إضافة عنصر جديد إلى قائمة أو إزالته منها.

تشكّل دالة document.startViewTranstion جوهر View Transitions API. نقْل دالة تعمل على تعديل DOM إلى الحالة الجديدة، وستتولى واجهة برمجة التطبيقات تنفيذ كل الإجراءات نيابةً عنك. ويتم ذلك من خلال التقاط لقطة ما قبل وبعد، ثم الانتقال بين الصورتَين. باستخدام CSS، يمكنك التحكّم في ما يتم تسجيله وتخصيص طريقة عرض اللقطات المتحركة هذه اختياريًا.

تسجيل رقمي للشاشة من VT

إصدار تجريبي من VT

عرض الإصدار التجريبي من ميزة "الانتقالات"

تم طرح واجهة برمجة التطبيقات View Transitions API لتطبيقات الصفحة الواحدة في الإصدار 111 من Chrome. اطّلِع على مزيد من المعلومات عن عمليات انتقال العرض.

دالة التخفيف الخطي

توافق المتصفّح

  • Chrome: 113
  • الحافة: 113.
  • ‫Firefox: 112
  • ‫Safari: 17.2

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

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

رسم بياني لمنحنى انحسار الارتداد مع إضافة عدة نقاط إليه
يتم تبسيط منحنى الارتداد الأصلي باللون الأزرق من خلال مجموعة من النقاط الرئيسية المعروضة باللون الأخضر. تستخدِم دالة linear() هذه النقاط وتتحقّق من التداخل بشكل خطي بينها.

تسجيل رقمي للشاشة يتضمّن انتقالات سلسة

عرض توضيحي للتأثير الخطي

العرض التوضيحي لخدمة مقارنة الأسعار linear()

اطّلِع على مزيد من المعلومات عن linear(). لإنشاء منحنيات linear()، استخدِم أداة إنشاء التحكّم السلس في السرعة.

نهاية التمرير

توافق المتصفّح

  • Chrome: 114
  • ‫Edge: 114
  • Firefox: 109
  • Safari: غير متاح.

المصدر

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

تسجيل رقمي للشاشة مزوّد بميزة التمرير

Scrollend Demo

كان من المهم أن يمتلك المتصفّح هذه الميزة لأنّ JavaScript لا يمكنه تتبُّع وجود الأصابع على الشاشة أثناء الانتقال للأعلى أو للأسفل، فالمعلومات غير متاحة ببساطة. يمكن الآن حذف أجزاء من الرمز البرمجي غير الدقيق لمحاولة إنهاء الانتقال إلى أسفل الصفحة واستبداله بحدث عالي الدقة يملكه المتصفّح.

اطّلِع على مزيد من المعلومات عن scrollend.

الصور المتحركة المستندة إلى الانتقال للأعلى أو للأسفل

توافق المتصفّح

  • Chrome: 115
  • الحافة: 115.
  • Firefox: خلف علامة
  • Safari: غير متوافق

المصدر

إنّ الرسوم المتحرّكة المستندة إلى الانتقال للأعلى أو للأسفل هي ميزة مثيرة للاهتمام تتوفّر في الإصدار 115 من Chrome. تتيح لك هذه العناصر استخدام صورة متحركة حالية من CSS أو صورة متحركة تم إنشاؤها باستخدام Web Animations API، وإقرانها بقيمة تمويه التمرير في شريط التمرير. أثناء التمرير للأعلى أو للأسفل أو لليمين أو لليسار في شريط التمرير الأفقي، سيتم تمرير الصورة المتحركة المرتبطة للأمام والخلف استجابةً مباشرةً.

باستخدام ScrollTimeline، يمكنك تتبُّع مستوى التقدّم العام لعنصر التمرير، كما هو موضّح في العرض التجريبي التالي. أثناء الانتقال إلى نهاية الصفحة، يظهر النص حرفًا تلو الآخر.

تسجيل شاشة SDA

عرض توضيحي لـ SDA

عرض توضيحي للصور المتحركة المستندة إلى التمرير في CSS: المخطط الزمني للتمرير

باستخدام ViewTimeline، يمكنك تتبُّع عنصر أثناء عبوره مساحة التمرير. يعمل ذلك بشكل مشابه لطريقة تتبُّع IntersectionObserver للعنصر. في العرض التوضيحي التالي، تظهر كل صورة من لحظة دخولها إلى مساحة التمرير إلى أن تصل إلى المركز.

فيديو توضيحي لميزة "الاستجابة السريعة للطوارئ"

عرض توضيحي مباشر لـ SDA

عرض توضيحي للصور المتحركة المستندة إلى التمرير في CSS: عرض المخطط الزمني

وبما أنّ الصور المتحركة المستندة إلى الانتقال للأعلى أو للأسفل تعمل مع الصور المتحركة في CSS وWeb Animations API، يمكنك الاستفادة من جميع المزايا التي تقدّمها واجهات برمجة التطبيقات هذه. ويشمل ذلك إمكانية تشغيل هذه الصور المتحركة خارج سلسلة التعليمات الرئيسية. يمكنك الآن إنشاء صور متحركة سلسة وسلسة، يتم تشغيلها من خلال الانتقال إلى الأسفل أو للأعلى، وتشغيلها من سلسلة التعليمات الرئيسية باستخدام بضعة أسطر من الرموز الإضافية فقط.

للاطّلاع على مزيد من المعلومات عن الرسوم المتحرّكة المستندة إلى الانتقال إلى الأسفل أو للأعلى، يمكنك الاطّلاع على هذه المقالة التي تتضمّن كل التفاصيل أو الانتقال إلى scroll-driven-animations.style الذي يتضمّن العديد من العروض التوضيحية.

مرفق الجدول الزمني المؤجّل

توافق المتصفّح

  • Chrome: 116.
  • ‫Edge: 116
  • Firefox: غير متوافق
  • Safari: غير متاح.

المصدر

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

للسماح للعنصر المتحرّك بالعثور على مخطط زمني مُعنوَن للانتقال غير المرتبط بعنصر أصلي، استخدِم السمة timeline-scope على عنصر أصلي مشترَك. يتيح ذلك إرفاق scroll-timeline أو view-timeline المحدّدَين بهذا الاسم به، ما يمنحه نطاقًا أوسع. بعد تنفيذ ذلك، يمكن لأي حساب فرعي من هذا الحساب الرئيسي المشترَك استخدام المخطط الزمني بهذا الاسم.

صورة توضيحية لشجرة فرعية في DOM مع نطاق مخطط زمني مستخدَم في عنصر رئيسي مشترَك
بعد الإعلان عن timeline-scope في العنصر الرئيسي المشترَك، يمكن العثور على scroll-timeline المُعلَن عنه في شريط التمرير من خلال العنصر الذي يستخدمه كanimation-timeline

تسجيل رقمي للشاشة للعرض التوضيحي

عرض توضيحي مباشر

عرض توضيحي للرسوم المتحرّكة المستندة إلى الانتقال في CSS: إرفاق مخطط زمني مؤجّل

اطّلِع على مزيد من المعلومات عن timeline-scope.

صور متحركة منفصلة للعناصر

تتوفّر في عام 2023 ميزة جديدة أخرى، وهي إمكانية إنشاء صور متحركة منفصلة، مثل إضافة تأثيرات متحركة من وإلى "display: none". اعتبارًا من الإصدار 116 من Chrome، يمكنك استخدام display وcontent-visibility في قواعد اللقطات الرئيسية. يمكنك أيضًا نقل أيّ موقع منفصل عند نقطة %50 بدلاً من نقطة %0. ويتم تحقيق ذلك باستخدام السمة transition-behavior مع الكلمة الرئيسية allow-discrete، أو في السمة transition كاختصار.

رسوم متحركة منفصلة التسجيل الرقمي للشاشة

رسوم متحركة منفصلة عرض توضيحي

اطّلِع على المزيد من المعلومات عن نقل الصور المتحركة المنفصلة.

@starting-style

توافق المتصفّح

  • Chrome: 117.
  • Edge:‏ 117
  • Firefox:‏ 129
  • ‫Safari: 17.5

المصدر

تستند قاعدة CSS الخاصة بـ @starting-style إلى إمكانات الويب الجديدة لإنشاء تأثيرات متحركة من display: none وإليه. توفّر هذه القاعدة طريقة لمنح عنصر أسلوب "قبل الفتح" يمكن للمتصفّح البحث عنه قبل فتح العنصر على الصفحة. وهذا مفيد جدًا للحركات المرسومة عند الدخول، وللتحريك في عناصر مثل النافذة المنبثقة أو مربّع الحوار. ويمكن أن يكون مفيدًا أيضًا في أي وقت تريد فيه إنشاء عنصر وتريد منحه إمكانية إضافة تأثيرات متحركة. خذ المثال التالي الذي يُنشئ تأثيرًا متحركًا لسمة popover (راجِع القسم التالي) في العرض وفي الطبقة العليا بسلاسة من خارج إطار العرض.

@starting-style Screencast

@starting-style Demo

اطّلِع على مزيد من المعلومات عن @starting-style والرسوم المتحركة الأخرى للعناصر.

المحتوى المركّب

توافق المتصفّح

  • Chrome: 117.
  • Edge:‏ 117
  • Firefox: غير متوافق
  • Safari: غير متوافق

المصدر

يمكن إضافة سمة CSS الجديدة overlay إلى الانتقال لتفعيل العناصر التي تتضمّن أنماط الطبقة العليا، مثل popover وdialog، لتحريكها بسلاسة خارج الطبقة العليا. إذا لم تُجري انتقالًا للعنصر المتراكب، سيعود العنصر على الفور إلى أن يكون مُقتطعًا ومُحوَّلًا ومُغطّى، ولن ترى عملية النقل تحدث. وبالمثل، تتيح السمة overlay لـ ::backdrop تحريك الصورة بسلاسة عند إضافتها إلى عنصر من الطبقة العليا.

التسجيل الرقمي للشاشة الذي يظهر فوق المحتوى

عرض توضيحي مباشر يظهر على سطح الفيديو

تعرّف على مزيد من المعلومات حول التراكب والرسوم المتحركة الأخرى للخروج.

المكوّنات

كان عام 2023 عامًا مهمًا في ما يتعلّق بتصميم عناصر HTML، حيث تمّ إطلاق popover وإنجاز الكثير من العمل حول موضع الربط ومستقبل تصميم القوائم المنسدلة. تسهِّل هذه المكوّنات إنشاء أنماط واجهة مستخدِم شائعة بدون الحاجة إلى الاعتماد على مكتبات إضافية أو إنشاء أنظمة إدارة الحالة الخاصة بك من الألف إلى الياء في كل مرة.

النافذة المنبثقة

توافق المتصفّح

  • Chrome: 114.
  • ‫Edge: 114
  • Firefox: 125.
  • ‫Safari: 17

المصدر

تساعدك واجهة برمجة التطبيقات Popover API في إنشاء عناصر تقع فوق بقية الصفحة. يمكن أن تتضمن القوائم والخيارات وتلميحات الأدوات. يمكنك إنشاء نافذة منبثقة بسيطة عن طريق إضافة السمة popover وid إلى العنصر المنبثق، وربط سمة id بزر تشغيل باستخدام popovertarget="my-popover". تتيح واجهة برمجة التطبيقات Popover API ما يلي:

  • الترقية إلى الطبقة العليا ستظهر النوافذ المنبثقة على طبقة منفصلة فوق بقية الصفحة، لذا لن تحتاج إلى تغيير مؤشر z.
  • وظيفة الإغلاق الخفيف: سيؤدي النقر خارج منطقة النافذة المنبثقة إلى إغلاقها وإعادة التركيز.
  • إدارة التركيز التلقائي: يؤدي فتح النافذة المنبثقة إلى توقف علامة التبويب التالية داخل النافذة المنبثقة.
  • أربطة لوحة مفاتيح يمكن الوصول إليها: سيؤدي الضغط على مفتاح esc أو التبديل المزدوج إلى إغلاق النافذة المنبثقة وإعادة التركيز.
  • عمليات ربط المكونات القابلة للوصول ربط عنصر النافذة المنبثقة بعامل تشغيل النافذة المنبثقة بشكل دلالي

تسجيل رقمي للشاشة في نافذة منبثقة

عرض توضيحي لـ Popover Live

القواعد الأفقية في أداة الاختيار

من التغييرات الصغيرة الأخرى التي تم إجراؤها على HTML في Chrome وSafari هذا العام هي إمكانية إضافة عناصر الخطوط الأفقية (علامات <hr>) إلى عناصر <select> للمساعدة في تقسيم المحتوى بشكل مرئي. في السابق، لم يكن من الممكن عرض علامة <hr> في عنصر اختيار. ومع ذلك، يوفّر كل من متصفّح Safari وChrome هذه الميزة هذا العام، ما يسمح بفصل المحتوى بشكل أفضل ضمن عناصر <select>.

اختيار لقطة شاشة

لقطة شاشة لساعة محددة مع المظهر الفاتح والداكن في Chrome

اختيار عرض توضيحي مباشر

مزيد من المعلومات عن استخدام hr في select

الفئات الزائفة :user-valid وinvalid

دعم المتصفح

  • Chrome: 119
  • الحافة: 119.
  • Firefox: 88.
  • Safari: الإصدار 16.5

المصدر

إنّ :user-valid و:user-invalid هما فئتان ثابتتان في جميع المتصفّحات هذا العام، وتتصرفان بشكل مشابه للفئات الزائفة :valid و:invalid، ولكنّهما لا تتطابقان مع عنصر تحكّم في النموذج إلا بعد تفاعل المستخدم بشكل كبير مع الإدخال. سيطابق عنصر تحكّم النموذج المطلوب الفارغ :invalid حتى إذا لم يبدأ المستخدم التفاعل مع الصفحة. لن يتطابق عنصر التحكّم نفسه مع :user-invalid إلى أن يغيّر المستخدم الإدخال ويتركه في حالة غير صالحة.

باستخدام هذه المحدّدات الجديدة، لم تعُد هناك حاجة إلى كتابة رمز برمجي يعتمد على الحالة لتتبُّع الإدخال الذي غيّره المستخدم.

‎:user-* Screencast

:user-* عرض توضيحي مباشر

اطّلِع على مزيد من المعلومات عن استخدام عناصر المحاكاة user-* لتحقق صحة النموذج.

Accordion حصري

توافق المتصفّح

  • Chrome: 120.
  • الحافة: 120
  • Firefox: 130
  • Safari: الإصدار 17.2.

نمط واجهة المستخدم الشائع على الويب هو مكون أكورديون. لتنفيذ هذا النمط، يمكنك دمج بعض عناصر <details>، وغالبًا ما يتم تجميعها بصريًا للإشارة إلى أنّها تنتمي إلى بعضها البعض.

من الميزات الجديدة في الإصدار 120 من Chrome إتاحة السمة name في عناصر <details>. عند استخدام هذه السمة، تشكل عناصر <details> متعددة لها قيمة name نفسها مجموعة دلالية. يمكن فتح عنصر واحد في المجموعة كحد أقصى في المرة الواحدة: عند فتح أحد العناصر <details> من المجموعة، سيتم إغلاق العنصر المفتوح سابقًا تلقائيًا. يُعرف هذا النوع من القوائم باسم قائمة حصرية.

الإصدار التجريبي الحصري للجدول ال accordion

لا يلزم أن تكون عناصر <details> التي تشكّل جزءًا من ملف أرشيف أقسام طيّة حصريًا عناصر متسلسلة. ويمكن أن تكون مبعثرة في المستند.

شهدت خدمة CSS نهضة كهذه في السنوات القليلة الماضية، لا سيما خلال العام 2023. إذا كنت مبتدئًا في استخدام CSS أو تريد تجديد معلوماتك عن الأساسيات، اطّلع على دورتنا التدريبية المجانية تعلم CSS بالإضافة إلى الدورات التدريبية المجانية الأخرى المتوفرة على web.dev.

نتمنّى لك موسم أعياد سعيدًا ونأمل أن تتمكن قريبًا من دمج بعض ميزات CSS وواجهة المستخدم الجديدة الرائعة هذه في أعمالك.

فريق العلاقات المطوّرين لواجهة مستخدم Chrome