はじめに
MUIのAppBarを固定させたい時、position を fixed にすることで実現できます。
しかし、fixed を使用すると、もともと relative で下にあった要素が上がり重なってしまいます。
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 のような挙動になります。