IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / javascript / はてなブログのサイドバーをウィンドウ下に粘着

はてなブログのサイドバーをウィンドウ下に粘着

2019/09/2 javascript, はてなブログ

ページをスクロールしていきますと、メニューやサイドバーが、あるところでぴたっとページのトップに固定され、今度は逆にスクロールしますと再び追従し始めるサイトを見ることがあります。それをはてなブログでやってみます。

  • position:sticky
  • サイドバーをウィンドウ上部に粘着
  • サイドバーをウィンドウ下に粘着

position:sticky

ウィンドウの上部に粘着させたい場合は、粘着させたい要素に position:sticky と top:0 を指定すれば、簡単に粘着させられます。たとえば、はてなブログの場合でブログタイトルを上部に粘着させる場合は、

#blog-title{
  position: sticky;
  top: 0;
  // 場合によって以下が必要(値は適宜)
  z-index: 9999;
  background-color: #ffffff;
}

を指定すれば望みどおりになります。

Can i use ? CSS position:sticky

ただし、IEは対応していないようです。Polyfill というものもあるようですが、レイアウトに決定的な問題が発生しない、たとえば今やろうとしているサイドバーを粘着なんていうのは、粘着しなくなるだけですので無視してもいいと思います。

サイドバーをウィンドウ上部に粘着

サイドバーを粘着させるのは2カラムの場合になりますが、サイドバーの(親)要素 box2 が display:flex や display:grid の指定で配置されていないとうまくいきません。高さがコンテンツ側の要素 wrapper と同じじゃないとダメということでしょう。float ではうまくいきません。

そのうえで、 box2-inner に上と同じように指定すればサイドバーをウィンドウ上部に粘着されられます。

ただ、これではサイドバーがウィンドウサイズよりも長い場合は途中で止まったまま下が見られなくなってしまいます。

サイドバーをウィンドウ下に粘着

で、サイドバーがウィンドウサイズよりも長い場合に、順次スクロールしていき、サイドバーの下がウィンドウの下にきた時に粘着させる方法です。

Javascript が必要になります。

※使用、改変は自由ですが、転載はしないでください。

window.addEventListener('load', function(){
    // レスポンシブのテーマでメディアクエリを 768px で切っている場合
    if(window.matchMedia( '(min-width: 768px)' ).matches){
        const ch = document.documentElement.clientHeight;
        const sideBar = document.getElementById('box2-inner');
        const sh = sideBar.offsetHeight;
        sideBar.style.position = 'sticky';
        sideBar.style.top = -(sh - ch) + 'px';
    }
}, false);

これで、サイドバーがウィンドウ下に粘着します。

load イベントを使っているのは、サイドバーに新着情報など動的に挿入するモジュールがある場合にコンテンツの読み終わりを待たないとサイドバーの正しい高さが取得できないからです。

また、メディアクエリの値で切り分けている部分は、それぞれテーマのメディアクエリの値によって変更してください。

マージンを取りたい場合は、適宜数値をプラスするように追加してください。

これで、本文が長い場合でもサイドバーが空白になることはなくなります。

AdSense 記事内広告が表示されないので自前で表示
はてなブログの ヘッダ>タイトル下 を有効に使う
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/01/26

WordPress:メニューのid,classを整理カスタマイズ

2023/01/19

WordPress:JSON-LD構造化データをプラグインなしで出力

2023/01/11

WordPress:OGPタグをプラグインなしで挿入する

2022/12/27

WordPress:canonicalタグをプラグインなしで制御する

2022/12/21

WordPress:robotsメタタグをプラグインなしで制御する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ214
  • WebTips108
  • javascript98
  • Joomla!88
  • Windows68
  • CSS63
  • Wordpress59
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Plamo33
  • Google32
  • はてなプラグイン25
  • php22
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • genesis6
  • ConoHa WING6
  • Git入門6
  • Python5
  • Android5
  • スマートフォン4
  • PC全般4
  • 静的サイトジェネレーター3
  • Firefox3
  • SSD3
  • Facebook3
  • Blankslate3
  • Docker3
  • Mactype2
  • GitHub2
  • youtube1
  • rails入門1
  • Twitter1
  • はてなブクマ1
  • 映画1
  • Xserver1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com