web関連
【css】「position:sticky;」でサイドバナーなど指定した要素をスクロール追従させる
「position:sticky;」を使うと親要素内でスクロールした時、子要素を追従させることができる。主にサイドバーを追従させる時などに使用し、CSSのみでスクロール追従のバナーを作成できたりする。
「position:sticky;」の使用例
まずは、「position:sticky;
」の使用例。
See the Pen
【css】「position:sticky;」で指定した要素をスクロールに追随させる by twotone (@twotone-me)
on CodePen.
書き方としては以下のように使用する。
<div class="wrap">
この中で.stickyがスクロールするとついてくる
<div class="sticky">
スクロールに合わせてついてくる
</div>
</div>
.sticky{
/*ベンダープレフィックス指定しとかないとスマホで動かんかった*/
position: -webkit-sticky;
position: sticky;
top: 20px;
}
以下、jQueryを使って再現してみた。
「position:sticky;」でパララックス表現
「position:sticky;
」を使ってCSSのみでパララックスを表現できる。
See the Pen
【css】「position:sticky;」で指定した要素をスクロールに追随させる(応用) by twotone (@twotone-me)
on CodePen.
以下、jQueryを使って再現してみた。
【注意】親要素に「overflow:hidden;」が指定してあると動かない
「position:sticky;
」が上手くいかない時、親要素に「overflow:hidden;
」が設定されていると正常に動作しないので、親要素を遡って確認する必要アリ。
どうしても、「overflow:hidden;
」を解除できない時は、jQueryを使っての実装する場合は以下リンク参考。
「ie11」で使う場合は「Polyfill」が必要
ie11
では「position:sticky;
」はサポートしていないのでieでも使いたいならCDNの「stickyfill.js
」を読み込む必要がある。
<script src="https://cdnjs.cloudflare.com/ajax/libs/stickyfill/2.1.0/stickyfill.js"></script>
<script>
var elem = document.querySelectorAll('.sticky');
Stickyfill.add(elem);
</script>