要素を一定範囲のみでスクロールさせるjs

サイドバーなどを追従させる時ヘッダーやフッターにかぶってしまうのを制御したかったのでやってみました。

完成デモ

まず基本的なhtmlとcss

 

まず最初にいろんな要素の高さとってヘッダーとフッターにかぶらないように(main部分のみ追従)できるようにしてみました。

になります。

デモ01

でもこれだと画面サイズがmin-widthよりも大きい時は問題ないんですが、画面サイズを小さくした時に途中からfixedになるんでスクロールすると飛び出てきてまたいなくなる。みたいな変なうごきになっちゃいます。
なのでちょっと修正…

デモ02

fixed部分をabsoluteにして横に固定!
んで毎回スクロールごとに高さとって動かす。みたいにしたんですが…
どうやらこれだとPCだとガタガタとしててスムーズにスクロールされないらしい!
SPだけだったらこれで問題ないみたいなんですがね…
なのでまたまたちょっと修正

横幅とmin-widthの幅も取得してそれmin-widthよりも小さくなったらabsoluteで固定してスクロール!min-widthよりも大きかったらfixedで動かす!
みたいな分岐もつけくわえて一応完成です。
もっといいやり方ありそうですが…とりあえずここまで。

完成デモ

そんな感じで終わりです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です