版本 @material-ui/core v5
在使用 React Material UI 時,版面上有設定了一個 fixed 的元素,但在打開 Modal 後,元素會跟著移動,畫面的移動讓使用者體驗不好
1 | const useStyles = makeStyles((theme) => ({ |
# 錯誤原因
一旦打開模態框,滾動就會被阻止,Material UI 自動在 body 的地方會自動加上 padding-right: 17px;
,讓畫面不隨著卷軸隱藏而移動
但 fixed 定位的元素沒辦法吃到此設定,因此會隨著卷軸隱藏而往右移動
# 如何解決
兩種方法可以避免這個問題
1. Dialog 設定 disableScrollLock
為了不讓 fixed 元素移動,我們不隱藏 Modal 的卷軸
1 | <Dialog |
在 Dialog 設定 disableScrollLock 之後,就不會隱藏卷軸,fixed 元素也就不會隨著移動了
2. fixed 元素加入類別 .mui-fixed
希望卷軸還是可以隱藏,防止與背景互動,也可以在 fixed 元素加上全域的類別 .mui-fixed
1 | <Box className={`${classes.fixedFilter} mui-fixed`}> |
可以發現 Material UI 自動在 fixed 元素上,幫我們再加上了 17px,變成 padding-right: 67px;
(原本已有 50px)
如此一來就大功告成囉!🎉🎉🎉
REFERENCE
Material UI - Why do the fixed positioned elements move when a modal is opened?
🚀實體工作坊分享
玩轉 Web頁面的前端技術(HTML/CSS/JS) 一日體驗課
最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!🚀線上課程分享
線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程想學習更多關於前後端的線上課程,可以參考看看。
Hahow
Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住六角學院
如果你是初學者,非常推薦六角學院哦!剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!
Udemy
Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!也是很多工程師推薦的線上課程網站。