Q. position: stickyが効かない
position: stickyが効かないという質問を受けたことが度々あったので、その原因と解決策についてまとめた。
Table of Contents
position: sticky
が効かないという質問を受けることが年に数回はある。
以前はtheadなどの要素に対してposition: sticky
が効かないという問題があったが、現在はほとんどのブラウザで対応されている。
https://issues.chromium.org/issues/40511425
この質問が発生する場合、position: sticky
が粘着できる対象が分かっていないことが多い。
position: sticky
が粘着する要素
overflow
がvisible
以外の直近の祖先要素に対してposition: sticky
が指定されている要素は粘着する。
<div style="overflow: auto;">
<div style="position: sticky; top: 0;">
<!-- 粘着する -->
</div>
</div>
該当する要素が存在しない場合、position: sticky
はviewportに対して粘着する。
また、position: sticky
の要素はスクロールが発生する軸方向に対応したtop
やright
などの指定も必要である。
これらの指定がない場合、position: relative
と同様の挙動をする。