MUIのAppBarでfixedを使用すると要素が重なり、stickyだと固定されないときに確認すること。

この記事は約2分で読めます。

スポンサーリンク

はじめに

MUIのAppBarを固定させたい時、positionをfixedにすることで実現することができます。
しかし、fixedを使用すると、元々reativeで下にあった要素が上がり重なってしまいます。

AppBarのheightはドキュメントにも記載があるので、その分、重なる要素にPaddingを設けるなどで対処できますが、MUIのver5より、stickyを使用することで、固定かつ重なる部分を自動的に空けられるようになりました。

実際使ってみると、AppBarが固定されませんでした。
私は後述する内容で解決したので、それを記します。

スポンサーリンク

対処法

AppBarを親要素にする。

const Header = () => { 
return ( 
<> 
 <Box>
   <AppBar position="sticky" />
  </Box>
</>
)}

上記のように、AppBarの親にBox等要素を置かず、下のように親要素にすることで解決しました。

const Header = () => { 
   return ( 
    <>
      <AppBar position="sticky" />
    </> 
)}

具体的には、AppBarの親要素のHeightに依存しています。
つまり、AppBarの親要素の高さの範囲内で固定され、
その高さを超えるとstaticのような挙動になります。

 

参考文献

https://qiita.com/Kanade874/items/8267b91ade288af3837c

[AppBar] position="sticky" still not working · Issue #31085 · mui/material-ui
Duplicates I have searched the existing issues Latest version I have tested the latest version Current behavior 😯 This bug is still alive and bugging me, any wo...

 

コメント

スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました