オークニズム

はてなブログでのカスタマイズやブログ運営ノウハウをメインに、オークニが気になったモノ、コトをシェアするブログ。

オークニズム

オークニのイズム満載ブログカスタマイズ

CSSだけでサイドバーを固定/追従/解除する方法が超簡単!しかも軽くて滑らか!

CSSだけでサイドバーを固定/追従/解除する方法が超簡単!しかも軽くて滑らか! アイキャッチ

なんで皆やってないんだろうって不思議なくらい、この方法はおすすめです。

今までのサイドバーの固定というと、jQueryを使って実装するのが当たり前でした。私もそれしか無理だろと思っていました。

だがしかし

まさかのCSSだけで実装出来る日が…ついに来ちゃいました。最高かよ。

しかも超簡単。しかも超軽快。挙動も一切のカクつきなく超ヌルヌル。控えめに言っても、jQueryより100%おすすめ

これは使わない手はないぜ!!ってことで、さっそくシェアしちゃいましょう!

jQueryでサイドバーを固定した時の難点

重くなる

とにかくこれです。いちいちjQueryを読み込んで、挙動に合わせて内部的に計測したり、classを付与したり、なんせjQueryを使ったカスタマイズはサイトが重たくなる一方です。

その結果、SEO的にもマイナス、ユーザー体験的にもマイナス。

つまり、カスです。

昔はガチでjQueryを使わないとできない挙動がたくさんあって、jQueryマジ神かよ😭 みたいな風潮もあったのですが、今は逆です

今時のブログカスタマイズ系の記事で、jQueryウェーイみたいな書き方してる人いれば、即通報ですね😂

だいたいカクつく

だいたいです。僕ははてなブロガー(?)なので多くははてなブログを覗きます。そしてサイドバーを固定しているほぼ全員がjQueryです。

そしてその多くが、スクロールの途中で突然ガンッ!って固定されます。しかも、その直前のモジュールに被るカタチで。

あるいは、いったんサイドバーをスクロールしきって空白になった後に、突然思い出したかの如く、ガンッ!ってやってきますw

もはや固定ではなく乱入です。

フッター串刺し

これは、jQueryが悪いわけではない。テキトーなカスタマイズ野郎がテキトーなjQueryでレクチャーした結果、それを真似た多くのはてなブロガーがダサいことなってるだけです。

そもそもはてなブログにてフッターを用意してる人自体少ないが、せっかくフッターを用意していても、サイドバー固定の末フッターに串刺しにしてるようじゃあきまへん😂

たとえjQueryでもキチンとやればこれは回避できます。

CSSでサイドバーを固定するとどうなるか?

以上、散々jQueryを(jQuery以外にも?)ディスって参りましたが、「だったらCSSのサイドバー固定がナンボのもんじゃい!」とお思いでしょう。

百聞は一見に如かず。さっそく、デモをご覧ください。

デモ

See the Pen position: sticky by miso (@misodtm) on CodePen.

こちらのブログにあった公開コードペンをパクってきました。
【CSS】position: stickyでスクロールに追従する要素を作る | misoblog

どうです?スクロールしましたか?

ヌルヌルでしょ?!

フッターで止まったでしょ?!

ちなみに、僕のサイドバーにも関連記事を同様の方法で固定しています。ぜひヌルヌルさせてみてください。

コピペでOK!CSSでサイドバーの固定方法

はてなブログでの実装方法です。それ以外の人もノリは同じなので各自応用してくださいませm(_ _)m

CSS

貼り付ける場所

管理画面より、「デザイン」→「カスタマイズ」→「デザインCSS」。

これだけですw

めっちゃ簡単ですね!

ただし注意点も・・・

ブラウザ問題

これは、最先端なやり方なので、”最先端じゃない”ブラウザには対応しておりません。

具体的には、IEです。。。

1年前までは、IEとEdgeともにNGだったのですが

f:id:a24o92:20180208195922j:plain

それが最新の対応状況を見ると

f:id:a24o92:20180208200001j:plain

Edgeはちゃんと対応してくれてますね!

それ以外のChrome、Safari、Firefox等のイケてるブラウザでは完璧に対応しております。

かといって、IEでは表示がバグるのかと言うと、全くそんなことありません。ガチのwebデザイナーは昔からIEに怯えてなかなか新しいものにGOサインを出しませんが、僕はGOですw

各自アナリティクスでユーザーのブラウザ状況を確認しながら判断すれば良いかと!(ちなみにオークニズムの場合はIEユーザーは2%でした!)

overflow: hidden;干渉問題

実はこのposition: sticky;という技は、その固定する要素の親や先祖にoverflow: hidden;が使われていると、反応しない仕様になっております。

つまり、はてなブログのテーマによっては、上記のせいで反応しないことがあり得ます。ちなみに、僕が使ってる「ZENO-TEAL」であれば普通に使えることはこのブログで実証済みです!

もし実際に試してみて、反応しないんだがぁぁぁ😭 みたいなことがありましたら、Twitterで直接僕に連絡ください。なるたけ即レスで確認させていただきますm(_ _)m

まとめ

これは本当に便利な方法で、今回のサイドバーの固定だけに限らず、最近よく見る記事内の見出しがスクロールしてもTOPで固定されているやつとかもこれです。

また、テーブル内でExcelみたいに上固定、端固定とかもこれでできます!

上記のIE問題と親要素のoverflow: hidden;を考慮しても、十分に試してみる価値はあると思うので、是非みなさんも活用してみてくださいませ〜(゚∀゚)

- 特に人気のカスタマイズ -