本文首發於微信公眾號:大遷世界, 我的微信:qq449245884,我會第一時間和你分享前端行業趨勢,學習途徑等等。
更多開源作品請看 GitHub https://github.com/qq449245884/xiaozhi ,包含一線大廠面試完整考點、資料以及我的系列文章。
一般來說,我們使用 height:100vh
進行全屏佈局,這是一種很方便的響應式方法。
.content {
height: 100vh;
}
但當在實際裝置上測試我們的設計時,我們遇到了幾個問題。
- 大部分移動端的Chrome和Firefox瀏覽器在頂部都有一個UI(位址列等)。
- 在Safari瀏覽器上,位址列在底部,這就變得更加棘手了。
- 不同的瀏覽器有不同大小的視口
- 移動裝置計算瀏覽器視口為(頂欄+文件+底欄)=100vh
- 整個文件使用 100vh 填充到頁面中
問題
谷歌
已檢測到捲軸問題。糟糕的使用者滾動和難以瀏覽的內容。
注意:在Safari上測試了這個問題,它更加糟糕。
解決方案
透過JS檢測應用程式的高度
const documentHeight = () => {
const doc = document.documentElement
doc.style.setProperty('--doc-height', `${window.innerHeight}px`)
}
window.addEventListener(‘resize’, documentHeight)
documentHeight()
使用 css 變數
:root {
--doc-height: 100%;
}
html,
body {
padding: 0;
margin: 0;
height: 100vh; /* fallback for Js load */
height: var(--doc-height);
}
最後結果
現在沒有任何額外的垂直捲軸出現,Safari也沒有問題,這樣的使用者體驗得到很大的提升。
程式碼部署後可能存在的BUG沒法實時知道,事後為了解決這些BUG,花了大量的時間進行log 除錯,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug。
作者:nirazanbasnet 譯者:前端小智 來源:dev
原文:https://dev.to/nirazanbasnet/...
交流
有夢想,有乾貨,微信搜尋 【大遷世界】 關注這個在凌晨還在刷碗的刷碗智。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。