Katlanabilir API'ler için kaynak deneme

Chrome, Device Posture API ve Viewport Segmentleri olmak üzere iki API'yi deniyor Enumeration API, Chrome'dan kaynak denemesi olarak mevcuttur 125.) Bunlar, hep birlikte katlanabilir API'ler olarak bilinir ve geliştiriciler katlanabilir cihazları hedefliyor. Bu yayında söz konusu API'ler tanıtılmaktadır. bunları test etmeye nasıl başlayacağınız hakkında bilgi sağlar.

Temel olarak iki farklı fiziksel form faktörü vardır: tek bir esnek ekranlar (kusursuz) ve iki ekranlı (dikey yapılı, diğeri de bilinen) cihazlar çift ekranlı cihazlar olarak düşünebilirsiniz.

Sol tarafında tek bir esnek ekran (kusursuz) ve sağ tarafında iki ekranlı (dikey ekran olarak da bilinir) bir cihazın şematik çizimi.

Bu cihazlar, geliştiricilere bazı zorluklar ve fırsatlar sunar. Bu özellikler ek yöntemlerle görüntülenebiliyor. Örneğin, bir kullanıcının bir tablet gibi kullanmaya başlayabilirsiniz. düz ekran. İki ekranı olan cihazlarda, ekranlar arasında fiziksel bir bağlantı vardır gerekebilir.

Bu yeni API'ler, geliştiricilerin daha iyi kullanıcı deneyimleri sağlamaları için yöntemler sunar bu cihazlarda kullanılabilir. Her API, gerekli web platformu temel öğelerini iki dilde sunar yolları var.

Cihaz Posture API'si

Katlanabilir cihazların duruşlarını_değiştirmelerine olanak veren özellikleri vardır veya cihazın fiziksel durumu. Form faktörünü değiştirerek bir kullanıcı deneyimi sunmasını sağlıyor ve bu yeni API'ler web içeriğinin çeşitli katlama durumlarına tepki verebileceğinden emin olun.

Bir cihaz iki farklı duruşta olabilir:

  • folded: Dizüstü bilgisayar veya kitap duruşları.

Düz veya tablet duruşları olan cihazların şemasal çizimi ve kesintisiz kavisli bir ekran.

  • continuous: Düz, tablet veya hatta kesintisiz kavisli ekranlar.

Dizüstü bilgisayar veya kitap duruşlarındaki cihazların şematik çizimi.

CSS

Device Posture API spesifikasyonu yeni bir CSS tanımlıyor media-feature: device-posture. Bu medya özelliği, bir dizi sabit duruşa çözüm getirir. Bu duruşlar her biri o öğenin fiziksel durumunu kapsayan önceden tanımlı bir dizi değerden olanak tanır.

device-posture özelliğinin değerleri, olası duruşlar:

  • folded
  • continuous

İlerleyen zamanlarda piyasaya yeni cihazlar gelirse yeni duruşlar eklenebilir.

Örnekler:

/* 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

Cihazın duruşunu sorgulamak için yeni bir DevicePosture nesnesi kullanılabilir.

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

Cihazın duruş değişikliklerine tepki vermek için (kullanıcının cihazı tamamen açması ve bu nedenle folded - continuous / change etkinliklerine abone olun.

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

Görünüm Segmentleri API'si

Görüntü alanı segmentleri, konumu tanımlayan ve mantıksal olarak ayrı bir bölgesinin boyutlarını içerir. Görünüm segmentleri bir veya daha fazla donanım özelliğine (örneğin, bir menteşe kullanın. Segmentler komut satırı tarafından mantıksal olarak farklı şekilde değerlendirilebilecek görüntü alanı bölgeleri, yazar.

CSS

Mantıksal bölümlerin sayısı iki yeni medya özelliği aracılığıyla gösterilir: aşağıdaki CSS Medya Sorguları Düzey 5 spesifikasyonunda tanımlanmıştır: vertical-viewport-segments ve horizontal-viewport-segments. Böylelikle Görüntü alanının ayrıldığı segment sayısı.

Ayrıca, kullanıcı edinme ve veri paylaşımının bölümü anlamına gelir. Bu değişkenler şunlardır:

  • 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)

Her değişkenin, x ve y konumunu temsil eden iki boyutu vardır. donanım özelliklerinin oluşturduğu iki boyutlu ızgarada ve segmentleri ayırmanızı sağlar.

Yatay ve dikey segmentleri gösteren şema. İlk yatay segment x 0 ve y 0, ikinci x 1 ve y 0'dır. İlk dikey segment x 0 ve y 0, ikinci x 0 ve y 1'dir.
İlk yatay segment x 0 ve y 0, ikinci x 1 ve y'dir 0 İlk dikey segment x 0 ve y 0, ikinci x 0 ve y 1'dir.

Aşağıdaki kod snippet'i, kullanıcıların yalnızca bir kısmını içeren bir kullanıcı deneyimi oluşturmalarına Ekranın her iki yanında da iki içerik bölümü (col1 ve col2) var.

<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>

Aşağıdaki fotoğraflarda, deneyimin fiziksel bir cihazda nasıl göründüğü gösterilmektedir.

Dikey kitap duruşunda katlanabilir telefon.

Yatay kitap duruşunda katlanabilir telefon.

Yatay kitap duruşunda katlanabilir tablet.

JavaScript

Görüntü alanı segmentlerinin sayısını almak için segments girişini kontrol edin visualViewport.

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

segments dizisindeki her giriş, koordinatları ve boyutu açıklayan DOMArray ile görünüm. segments alanı, sorgu sırasında belirtilen durumun anlık görüntüsüdür. veya etkinlikleri yeniden boyutlandırmanız ve bu değişiklikleri segments mülk.

Katlanabilir API'leri deneyin

Katlanabilir API'ler kaynak denemesi Chrome 125'ten Chrome 128'e kadar her sürümde çalışır. Görüntüleyin Kaynak denemelerini kullanmaya başlama inceleyin.

Yerel test için, Katlanabilir API'ler Deneysel Web Platform özelliklerinin bayrağı chrome://flags/#enable-experimental-web-platform-features Ayrıca komut satırından Chrome'u çalıştırarak --enable-experimental-web-platform-features

Demolar

Demolar için demolara bakın depo. Bir test etmek için Galaxy Z Fold 5 veya Asus Chrome Geliştirici Araçları'nda Zenbook Fold emülasyonu ve geçiş yapma Kesintisiz ve Katlanmış. Ayrıca menteşeyi geçerlidir.

Chrome Geliştirici Araçları, katlanabilir bir cihazı taklit ediyor.