2017.11.06
コーディング
固定メニューがjsなしで簡単に実装できるposition:sticky
画面のスクロールに合わせて追従してくるタイプのグローバルメニューやサイドボタンをご覧になったことがあると思います。今までは追従し始めるタイミングを指定するためにjsでページトップからの高さや要素のidやclassを参照させていましたが、position:sticky
を使うとこの動きがcssだけで実装できます。今回はその使い方を紹介します。
縦方向の基準点を定めた場合
position:sticky
で指定された要素は、その親要素の範囲内でposition:fixed
されたときのように動作します。
動きの例を見たほうがわかりやすいと思うので下の例をご覧ください。
See the Pen YEqbvB by hoshu_t (@hoshu_t) on CodePen.
body
内のtop:10px
の位置にposition:sticky
で固定しています。
横方向の基準点を定めた場合
横方向の動作にも対応しています。基準点の指定をleft
やright
に指定するとそのように動作します。
left:0;
で実装した例を見てみましょう。
See the Pen gXrJJb by hoshu_t (@hoshu_t) on CodePen.
スクロールに追従してくるのがわかります。
ブラウザの対応状況
CanIuseを見てみるとEDGEにはVer16から対応していますがIE11には未対応なプロパティです。Stickyfillというおなじみのjsハックはあるようですがせっかくcss
のみで実装できる機能なので、これを期にIE11ユーザーにはEDGEや他ブラウザへの乗り換えを検討してもらいたいですね。