Chrome 行動網路中的版面/視覺視窗變更後,如何將標題保持在視覺視窗的頂部?
P粉833546953
P粉833546953 2024-03-28 00:24:35
0
1
322

我知道有多個與此相關的問題,但由於瀏覽器團隊自提出這些問題以來已經做出了更改,因此這些問題似乎都不再有效。我正在嘗試找到此問題的最新解決方案。

目標

我的願望是在使用行動網路瀏覽器時,特別是當使用者將焦點放在輸入欄位上並且顯示虛擬鍵盤時,將固定標題保持靜止在頂部,以獲得類似應用程式的體驗。

背景上下文

最近,Chrome 行動團隊更改了調整行動網路佈局和視覺視窗大小的方式,以便與 iOS 上的 Chrome 和 iOS 上的行動 Safari 保持一致。

這個來自David Fedor 文章的GIF 非常簡潔地展示了大多數(但不是全部)移動瀏覽器的當前狀態,即當屏幕鍵盤(OSK,又名虛擬鍵盤)時視覺視口“向上移動”當某個字段獲得焦點時顯示。

我面臨的最大問題是,當顯示 OSK 時,我無法讓標題元素在視覺上保持在頂部。當您的頂部應用程式列具有「儲存」等表單的主要操作時,這是一件大事。它使用戶體驗變得混亂,導致客戶沮喪地離開,所以在我看來這並不是一件小事。

我已經嘗試了Chrome 團隊推薦的VisualViewport API,引用了env(keyboard-inset-height) ,但這似乎不起作用,這讓我覺得我在佈局上做了一些奇怪的事情,例如ENV 未正確設定。

我的程式碼

沒什麼太瘋狂的,使用 CSS 網格來控制佈局。

HTML

<html>
<body>
  <div id="container">
    <header id="header">header</header>
    <main id="main">
      main
      <input type="text" />
    </main>
    <footer id="footer">footer</footer>
  </div>
</body>
</html>

CSS樣式

body {
  margin: 0;
}

#container {
  height: 100dvh;
  display: grid;
  grid-template:
    "header" 50px
    "main" 1fr
    "footer" 50px
    "keyboard" env(keyboard-inset-height, 0px); // does not seem to work?
}

#header {
  grid-area: header;
}

#main {
  grid-area: main;
  overflow-y: scroll;
}

#footer {
  grid-area: footer;
}

我得到的是以下兩張螢幕截圖,全頁一張是我想要的佈局,第二張是當您將遊標聚焦到底部附近的輸入時,它「推動」整個視覺視窗向上,使標題位於螢幕外。

全螢幕 以輸入為中心

目前有什麼方法可以確保標題始終保持在視覺視窗的頂部嗎?在最近的 Chrome 更新後,我目前找不到有效的解決方案。

P粉833546953
P粉833546953

全部回覆(1)
P粉573943755

對於Google Chrome 108 或更高版本,設定<meta name="viewport" content="width=device-width, initial-scale=1.0, Interactive-widget=resizes-content">
注意 viewport 元標記中的 interactive-widget# 屬性.

我找到了解決方案這裡
檢查了 Android 版 Chrome 的最新版本。

body {
  margin: 0;
}

#container {
  height: 100dvh;
  display: grid;
  grid-template:
    "header" 50px
    "main" 1fr
    "footer" 50px
  ;
}

#header {
  grid-area: header;
}

#main {
  grid-area: main;
  overflow-y: scroll;
}

#footer {
  grid-area: footer;
}


  Title
  


main 2

































footer
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!