成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端開發折疊屏應用新姿勢!

開發 前端
可折疊設備具備改變其姿態(即設備的物理狀態)的能力,從而允許開發者提供不同的用戶體驗。這些新的API確保網頁內容能夠靈活響應設備的各種折疊狀態。

Chrome 瀏覽器正在試驗兩個全新的 API:Device Posture API(設備姿態API)和 Viewport Segments Enumeration API(視口段枚舉API),這兩個 API 統稱為 Foldable APIs(可折疊API),它們從 Chrome 125 版本開始作為起源試驗功能提供。這些 API 旨在幫助開發者更好地針對可折疊設備進行開發和優化,本文就來看看這些 API 如何解鎖折疊屏應用開發新姿勢。

這些 API 是在過去幾年中,微軟、英特爾、三星和谷歌合作開發的。


可折疊設備

可折疊設備主要分為兩種物理形態:一種是只有單個柔性屏幕(無縫)的設備,另一種是擁有兩個屏幕(有縫,也稱為雙屏設備)的設備。

這些設備為內容的展示提供了多樣化的方式。例如,用戶可以像翻閱書籍一樣使用無縫設備,也可以像使用平板電腦一樣將其展開為平面屏幕。而雙屏設備因其兩塊屏幕之間存在物理接縫,需要開發者特別關注這一點。

這些新的 API 為開發者提供了改善這類設備用戶體驗的方法。每個 API 都通過CSS和JavaScript兩種途徑,向開發者開放了所需的 Web 平臺基礎功能。

Device Posture API

可折疊設備具備改變其姿態(即設備的物理狀態)的能力,從而允許開發者提供不同的用戶體驗。這些新的API確保網頁內容能夠靈活響應設備的各種折疊狀態。

設備可以呈現以下兩種姿態:

  • 折疊態:類似于筆記本電腦或書籍的姿態。

  • 連續態:平板模式,類似于無縫的平板及曲面顯示屏。

CSS

Device Posture API 規范引入了一個新的 CSS 媒體特性 device-posture,該特性能夠解析出設備的一組固定姿態。這些姿態由預定義的值組成,每個值都代表設備的物理狀態。

device-posture 特性支持的值與前面描述的設備姿態相匹配:

  • folded(折疊態)
  • continuous(連續態)

注意:如果未來有新的設備上市,可能會添加新的姿態。

示例:

/* 當設備處于“書籍”姿態時 */

@media (device-posture: folded) { ... } 

/* 當設備處于“平板”姿態時,或者像筆記本電腦或臺式電腦這樣的典型設備 */

@media (device-posture: continuous) { ... }

JavaScript

為了查詢設備的姿態,現在可以使用一個新的 DevicePosture 對象。

const currentPosture = navigator.devicePosture.type;  
console.log(`當前設備的姿態是:${currentPosture}`);

要監聽設備姿態的變化,并作出響應,可以注冊一個事件監聽器:

navigator.devicePosture.addEventListener('change', (event) => {  
  console.log(`設備的姿態已更改為:${event.type}`);  
  // 在這里可以根據新的姿態更新頁面的布局或內容  
});

Viewport Segments API

Viewport Segments 是CSS環境變量,用于定義視口中邏輯上獨立區域的位置和尺寸。當視口被硬件特性(如折疊處或獨立顯示器之間的鉸鏈)分割時,會形成視口段。這些段是開發者可以視為邏輯上不同的視口區域。

CSS

視口被分割成的段數通過兩個新的媒體特性來呈現,這些特性在CSS媒體查詢第5級規范中定義:vertical-viewport-segments(垂直視口段數)和horizontal-viewport-segments(水平視口段數)。這些特性會解析出視口被分割成的段數。

此外,還新增了環境變量來查詢每個邏輯分割的尺寸和位置。這些變量包括:

  • env(viewport-segment-width: x y):查詢指定(x, y)位置視口段的寬度。
  • env(viewport-segment-height: x y):查詢指定(x, y)位置視口段的高度。
  • env(viewport-segment-top: x y):查詢指定(x, y)位置視口段的上邊界位置。
  • env(viewport-segment-left: x y):查詢指定(x, y)位置視口段的左邊界位置。
  • env(viewport-segment-bottom: x y):查詢指定(x, y)位置視口段的下邊界位置。
  • env(viewport-segment-right: x y):查詢指定(x, y)位置視口段的右邊界位置。

每個變量中的(x, y)坐標代表了由硬件特性在視口中創建的二維網格中的位置。

在上圖中,第一個水平段的坐標是 x 0 和 y 0,第二個水平段的坐標是 x 1 和 y 0。第一個垂直段的坐標是 x 0 和 y 0,第二個垂直段的坐標是 x 0 和 y 1。

以下代碼片段是一個簡化的例子,展示了如何創建一個在折疊處兩側都有兩個內容區域(col1 和 col2)的分割 UX。

<style>
  /* 當視口水平分割為兩段時 */
  @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;
    }
  }

  /* 當視口垂直分割為兩段時 */
  @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

要獲取視口段的數量,可以檢查 visualViewport 對象中的 segments 屬性,它返回一個數組:

const segments = window.visualViewport.segments;  

console.log('視口具有以下段:', segments);

segments 數組中的每一項代表視口的一個邏輯段,這些邏輯段使用 DOMArray 來描述坐標和大小。segments 字段是查詢時給定狀態的快照,為了接收更新的值,需要監聽姿態變化(如屏幕旋轉)或調整大小事件,并重新查詢 segments 屬性。

簡單來說,這段代碼可以查看當前視口被邏輯分割成的段的信息。如果想要追蹤這些段如何隨著窗口大小變化或設備姿態變化而變化,需要設置事件監聽器來捕獲這些變化并重新獲取 segments 屬性的值。

嘗試 Foldable APIs

可折疊 API 已在 Chrome 125 到 Chrome 128 的版本中進行了原始試驗。

為了進行本地測試,可以通過訪問 chrome://flags/#enable-experimental-web-platform-features 來啟用可折疊 API。另外,還可以通過在命令行中運行 Chrome 并添加 --enable-experimental-web-platform-featues 參數來啟用這些功能。

責任編輯:姜華 來源: 前端充電寶
相關推薦

2024-10-28 07:10:00

scroll標記前端網格布局

2025-02-19 12:00:00

SpringBootDeepSeekAI

2018-02-25 11:24:02

APPiPhone手機

2025-04-21 03:30:00

2016-09-07 09:20:54

2025-02-17 11:41:14

2018-03-06 17:24:57

2024-03-20 08:13:10

程序開發App

2024-03-07 12:11:31

PoetryPython代碼

2021-05-26 08:21:43

@Autowired項目@Resouce

2024-01-18 15:17:56

谷歌云計算三星

2025-04-28 04:22:00

Spring動態SQL

2025-02-07 10:52:00

2019-02-27 09:08:20

Java 8StringJoineIDEA

2024-06-25 12:10:26

2023-07-18 09:00:00

ChatGPT文本轉語音

2020-09-04 15:38:19

Web前端開發項目

2022-10-17 14:16:20

OPPO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜资源| 久久日本 | 亚洲午夜三级 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 久久久久久免费观看 | 欧美成人a∨高清免费观看 91伊人 | 欧美在线视频a | 在线成人av | 美女激情av| 国产精品激情小视频 | 欧美一区二区三区在线 | 一级做a | 久久夜视频 | 国产精品一区二区三区久久久 | 精品在线观看一区 | 日韩在线看片 | 国产成人精品网站 | 三级欧美 | 亚洲精品乱码久久久久久9色 | 日韩国产中文字幕 | 久久的色| 91色视频在线观看 | 992人人草 | 亚洲狠狠| 中国一级特黄毛片大片 | 在线视频日韩 | 成人高清视频在线观看 | 黄色精品 | 永久免费av| 精品日韩在线 | 懂色中文一区二区三区在线视频 | 中文字幕av网 | 欧美6一10sex性hd | 精品日韩一区 | 亚洲精品在线看 | 亚洲在线看 | 日韩av成人 | 国产精品一区久久久 | 成人免费网站www网站高清 | 男女羞羞免费视频 | av中文字幕在线播放 |