2017.11.06

コーディング

固定メニューがjsなしで簡単に実装できるposition:sticky

固定メニューが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で固定しています。

横方向の基準点を定めた場合

横方向の動作にも対応しています。基準点の指定をleftrightに指定するとそのように動作します。
left:0;で実装した例を見てみましょう。

See the Pen gXrJJb by hoshu_t (@hoshu_t) on CodePen.

スクロールに追従してくるのがわかります。

ブラウザの対応状況

CanIuseを見てみるとEDGEにはVer16から対応していますがIE11には未対応なプロパティです。Stickyfillというおなじみのjsハックはあるようですがせっかくcssのみで実装できる機能なので、これを期にIE11ユーザーにはEDGEや他ブラウザへの乗り換えを検討してもらいたいですね。

SHARE

この記事の筆者

Web&Soundクリエイター 田村 培修

Web&Soundクリエイター 田村 培修

楽器とパソコンのキーボードを使い分ける当社のマルチクリエイター。e-sportsに興味津々であれこれ情報を収集中。

WEBSITE DESIGN REQUEST

ホームページ制作・リニューアルの
ご相談はお気軽に

TEL 06-6537-9941 平日 9:00〜19:00

〒550-0012 大阪府大阪市西区立売堀2-5−41

ホームページ制作を相談する