螢幕設定

回應式網頁設計與手機之間有許多反應。在智慧型手機問世之前,幾乎沒有人認真思考手持裝置應如何呈現網站外觀及風格。隨著手機內建網路瀏覽器的高峰期改變,這項變革也隨之改變。

回應式網頁設計吸引了提出假設的心態。以往,一般會假設網站只能透過電腦瀏覽,現在則是為手機和平板電腦設計相同的網站。事實上,網頁的行動裝置使用率如今已超越桌機

這種回應式思維對未來很有幫助。我們完全無法想像,有人有機會用這兩種裝置瀏覽您的網站。而且,這個思維模式也延伸超過螢幕。如今,使用者手上沒有螢幕的裝置也能輕鬆存取您的內容。如果您使用強大的語意 HTML 基礎,語音助理就能使用您的網站。

你也可以對畫面做實驗現今市面上有許多裝置配備折疊式螢幕。這也會造成設計上的一些挑戰。

不同配置的折疊式手機圖片。

雙螢幕

折疊式裝置的使用者可選擇讓網路瀏覽器只佔一個螢幕,或是橫跨兩個螢幕。如果瀏覽器橫跨兩個畫面,則顯示的網站會以兩個畫面之間的轉軸細分。看起來不太美。

橫跨兩個螢幕的網站。文字的水平流動受到畫面之間的轉軸幹擾。

可視區域區隔

你目前有一項實驗性的媒體功能,可偵測你的網站是否顯示在雙螢幕裝置上。建議的媒體功能名稱為 viewport-segments。共分為兩種:horizontal-viewport-segmentsvertical-viewport-segments

如果 horizontal-viewport-segments 媒體功能回報的值為 2,而 vertical-viewport-segments 回報值為 1,表示裝置轉軸由上往下執行,將內容分割成兩個並排的面板。

@media (horizontal-viewport-segments: 2) and (vertical-viewport-segments: 1) {
  // Styles for side-by-side screens.
}

如果 vertical-viewport-segments 媒體功能回報 2 值,而 horizontal-viewport-segments 回報的值為 1,則轉軸會左右搖攝,將內容分成兩個面板,一個面板重疊。

@media (vertical-viewport-segments: 2) and (horizontal-viewport-segments: 1) {
  // Styles for stacked screens.
}
展示可視區域區隔的圖表。
Microsoft Edge Explainers 圖表

如果 vertical-viewport-segmentshorizontal-viewport-segments 都回報值為 1,表示即使裝置有多個螢幕,網站只會顯示在一個畫面中。這等同於不使用任何媒體查詢。

環境變數

viewport-segments 媒體功能本身無法協助您設計令人不悅的轉軸。您需要知道轉軸的大小。這時 environment 變數就可以派上用場。

CSS 中的環境變數可讓您將不肖人士入侵裝置的因素納入考量。舉例來說,您可以使用 safe-area-inset-topsafe-area-inset-rightsafe-area-inset-bottomsafe-area-inset-left 環境值來設計 iPhone X 上的「凹槽」。這些關鍵字會納入 env() 函式中。

body {
  padding-top: env(safe-area-inset-top);
  padding-right: env(safe-area-inset-right);
  padding-bottom: env(safe-area-inset-bottom);
  padding-left: env(safe-area-inset-left);
}

環境變數的運作方式與自訂屬性類似。也就是說,您可以將備用選項傳入備用選項,以防環境變數不存在。

body {
  padding-top: env(safe-area-inset-top, 1em);
  padding-right: env(safe-area-inset-right, 1em);
  padding-bottom: env(safe-area-inset-bottom, 1em);
  padding-left: env(safe-area-inset-left, 1em);
}

如要讓這些環境變數在 iPhone X 上運作,請更新指定 viewport 資訊的 meta 元素:

<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">

現在,網頁版面配置會佔據整個可視區域,並以裝置提供的插邊值安全為文件增加內容。

對於折疊式螢幕,提議新增六個環境變數:viewport-segment-widthviewport-segment-heightviewport-segment-topviewport-segment-leftviewport-segment-bottomviewport-segment-right

這張圖表顯示雙螢幕的環境變數。
Microsoft Edge Explainers 圖表

以下示範包含兩個欄的版面配置範例,其中一個欄寬。

@media (min-width: 45em) {
  main {
    display: flex;
    flex-direction: row;
  }
  main article {
    flex: 2;
  }
  main aside {
    flex: 1;
  }
}

版面配置分割為兩個畫面,轉軸會中斷較寬的資料欄。

如果是具有垂直轉軸的雙螢幕,請將第一欄設定為第一個畫面的寬度,並將第二欄設定為第二個螢幕的寬度。

@media (horizontal-viewport-segments: 2) and (vertical-viewport-segments: 1) {
  main article {
    flex: 1 1 env(viewport-segment-width 0 0);
  }
  main aside {
    flex: 1;
  }
}

版面配置會平均分配給兩個畫面,不會造成任何可見幹擾。

將雙螢幕視為商機。也許有一個螢幕可以顯示可捲動的文字內容,而另一個畫面則顯示固定元素,例如圖片或地圖。

這張圖表說明定位服務分成兩個畫面,一個畫面中顯示地圖,另一畫面為路線指引。
Microsoft Edge Explainers 圖表

日後規劃

折疊式裝置螢幕會成為下一個重要項目嗎?說不定,沒有人預料到行動裝置會多受歡迎,所以不妨對未來的板型規格抱持開放的態度。

最重要的是,請確保網站能因應未來可能帶來的影響。回應式設計可帶給您莫大的幫助,並非只是諸多實用技巧,也掌握了這些心態,隨著您打造未來的網路形象。

隨堂測驗

測試螢幕設定相關知識

下列哪一項媒體查詢指定了處於分割橫向模式的折疊式裝置?

@media (horizontal-viewport-segments: 2) and (vertical-viewport-segments: 1)
螢幕設定 2 欄和 1 列,水平分割。
@media (vertical-viewport-segments: 2) and (horizontal-viewport-segments: 1)
2 列和 1 欄,分割直向。
@media (vertical-viewport-segments: 2) and (horizontal-viewport-segments: 2)
2 列和 2 欄,分割 4 種方式。
@media (vertical-viewport-segments: 1) and (horizontal-viewport-segments: 1)
單一儲存格,不得分割。

什麼是環境變數?例如:env(safe-area-inset-top)

關於使用者所在天氣的變數。
環境有誤,這些 CSS 變數與使用者的實際環境無關。
自訂建構時間變數。
雖然建構時間和編譯方式,但變數非常實用,但與指定的環境變數不同。
變數包含瀏覽器專屬屬性,可用於將網站調整為瀏覽器和裝置。
透過這種方式,瀏覽器和作者可以合作處理不同的可視區域內容,或是影響屬性的瀏覽器。
變為綠色且對環境較安全的變數。
CSS 和這種變數對全球局勢的影響不大。