مرحلة التجربة والتقييم لواجهات برمجة التطبيقات القابلة للطي

يختبر Chrome واجهات برمجة تطبيقات Device Posture API وViewport Segments Enumeration API، وهما متاحتان في مرحلة التجربة والتقييم من Chrome 125. وتُعرف هذه الواجهات باسم "واجهات برمجة التطبيقات للأجهزة القابلة للطي"، وهي مصمّمة لمساعدة المطوّرين في استهداف الأجهزة القابلة للطي. تقدّم هذه المشاركة هذه الواجهات، وتوفر معلومات عن كيفية بدء اختبارها.

هناك نوعان رئيسيان من أشكال الأجهزة: الأجهزة التي تتضمّن شاشة واحدة مرنة (سلسة) والأجهزة التي تتضمّن شاشتَين (مع فاصل، وتُعرف أيضًا باسم الأجهزة المزودة بشاشتَين).

رسم تخطيطي لجهاز مزوّد بشاشة مرنة واحدة (سلسة) على اليسار، وجهاز مزوّد بشاشتَين (مزوّد بفاصل، ويُعرف أيضًا باسم الشاشة المزدوجة) على اليمين

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

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

Device Posture API

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

هناك وضعان للجهاز يمكن أن يكون فيهما:

  • folded: أوضاع الكمبيوتر المحمول أو الكتاب

رسم تخطيطي للأجهزة في وضع مسطّح أو وضع الجهاز اللوحي وشاشة منحنية سلسة

  • continuous: شاشات مسطّحة أو لوحية أو حتى شاشات منحنية سلسة

رسم تخطيطي للأجهزة في وضع الكمبيوتر المحمول أو الكتاب

CSS

تحدّد مواصفات Device Posture API سمة CSS جديدة، وهي media-feature—device-posture. تؤدي ميزة الوسائط هذه إلى مجموعة من المواقف الثابتة. تتكون هذه الوضعيات من عدد من القيم المحددة مسبقًا التي يشمل كل منها حالة مادية للجهاز.

تتطابق قيم سمة device-posture مع الوصف السابق ل الوضعيات المحتملة:

  • folded
  • continuous

يمكن إضافة أوضاع جديدة في المستقبل إذا تم طرح أجهزة جديدة في السوق.

أمثلة:

/* Using the device in a 'book' posture. */
@media (device-posture: folded) { ... }

/* Using the device in a 'flat' posture, or any typical device like a laptop or
desktop device. */
@media (device-posture: continuous) { ... }

JavaScript

لإجراء طلب بحث عن وضع جهاز، يتوفّر عنصر DevicePosture جديد.

const { type } = navigator.devicePosture;
console.log(`The current device is of type ${type}.`);

للتفاعل مع التغييرات في وضع الجهاز، مثل فتح المستخدم جهازًا بالكامل وبالتالي الانتقال من folded إلى continuous، يمكنك الاشتراك في أحداث change.

navigator.devicePosture.addEventListener('change', (e) => {
  console.log(`The device posture changed to type ${e.type}`);
});

Viewport Segments API

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

CSS

يتم عرض عدد التقسيمات المنطقية من خلال ميزتَي وسائط جديدتَين، يتم تحديدهما في مواصفات المستوى 5 من طلبات البحث عن الوسائط في CSS: vertical-viewport-segments وhorizontal-viewport-segments. ويتم حلّها لتصبح عدد الأقسام التي تم تقسيم مساحة العرض إلى أقسامها.

بالإضافة إلى ذلك، تمت إضافة متغيّرات بيئة جديدة لاستعلام سمات كل قسم منطقي. وهذه المتغيّرات هي:

  • env(viewport-segment-width x y)
  • env(viewport-segment-height x y)
  • env(viewport-segment-top x y)
  • env(viewport-segment-left x y)
  • env(viewport-segment-bottom x y)
  • env(viewport-segment-right x y)

يحتوي كل متغيّر على سمتَين، تمثلان موضعَي x وy على التوالي، في الشبكة ثنائية الأبعاد التي تم إنشاؤها بواسطة ميزات الأجهزة التي تفصل بين الشرائح.

مخطّط بياني يعرض الشرائح الأفقية والعمودية الجزء الأفقي الأول هو x 0 وy 0، والثاني x 1 وy 0. الجزء العمودي الأول هو x 0 وy 0، والثاني هو x 0 وy 1.
إنّ أول جزء أفقي هو س 0 وص 0، والثاني هو س 1 وص 0. الجزء العمودي الأول هو x 0 وy 0، والثاني هو x 0 وy 1.

مقتطف الرمز التالي هو مثال مبسط لإنشاء تجربة مستخدم مقسّمة حيث يكون لدينا قسمان للمحتوى (العمود 1 والعمود 2) على كل جانب من الجزء المرئي من الصفحة.

<style>
  /* Segments are laid out horizontally. */
  @media (horizontal-viewport-segments: 2) {
    #segment-css-container {
      flex-direction: row;
    }

    #col1 {
      display: flex;
      flex: 0 0 env(viewport-segment-right 0 0);
      background-color: steelblue;
    }

    #fold {
      width: calc(env(viewport-segment-left 1 0) - env(viewport-segment-right 0 0));
      background-color: black;
      height: 100%;
    }

    #col2 {
      display: flex;
      background-color: green;
    }
  }

  /* Segments are laid out vertically. */
  @media (vertical-viewport-segments: 2) {
    #segment-css-container {
      flex-direction: column;
    }

    #col1 {
      display: flex;
      flex: 0 0 env(viewport-segment-bottom 0 0);
      background-color: pink;
    }

    #fold {
      width: 100%;
      height: calc(env(viewport-segment-top 0 1) - env(viewport-segment-bottom 0 0));
      background-color: black;
    }

    #col2 {
      display: flex;
     background-color: seagreen;
    }
  }
</style>

<div id="segment-css-container">
   <div id="col1"></div>
   <div id="fold"></div>
   <div id="col2"></div>
 </div>

توضّح الصور التالية شكل التجربة على جهاز فعلي.

هاتف قابل للطي في وضع الكتاب العمودي

هاتف قابل للطي في وضع أفقي على شكل كتاب

جهاز لوحي قابل للطي في وضع الكتاب الأفقي

JavaScript

للحصول على عدد أقسام مساحة العرض، تحقّق من إدخال segments في visualViewport.

const segments = window.visualViewport.segments;
console.log('The viewport has the following segments:', segments);

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

تجربة واجهات برمجة التطبيقات المخصّصة للأجهزة القابلة للطي

تتوفّر واجهات برمجة التطبيقات Foldable API في مرحلة تجربة وتقييم من الإصدار 125 من Chrome إلى الإصدار 128. اطّلِع على مقالة بدء استخدام تجارب المصدر للحصول على معلومات أساسية عن تجارب المصدر.

للاختبار على الجهاز، يمكن تفعيل واجهات برمجة التطبيقات Foldable APIs باستخدام علامة ميزات الويب Platform التجريبية في ملف علامة التسمية chrome://flags/#enable-experimental-web-platform-features. ويمكن أيضًا تفعيلها من خلال تشغيل Chrome من سطر الأوامر باستخدام --enable-experimental-web-platform-features.

إصدارات تجريبية

للاطّلاع على العروض التوضيحية، يُرجى الاطّلاع على مستودع demos . إذا لم يكن لديك جهاز فعلي لإجراء الاختبار عليه، يمكنك اختيار جهاز المحاكاة Galaxy Z Fold 5 أو Asus Zenbook Fold في "أدوات مطوّري البرامج في Chrome" والتبديل بين الوضعين متواصل ومطوي. يمكنك أيضًا عرض مفصل الجهاز عند الضرورة.

أدوات مطوّري البرامج في Chrome تحاكي جهازًا قابلاً للطي