無限スクロール
毎日ブログを書いていると、ブログの設定もいじりたくなるということがわかった。先日のこの記事に書いたように、ページングしなくては。という気持ちが強まり、今日は朝からその設定をしていた。結局無限スクロールにしつつ、pushState
でページ移動がわかるようにもした。vanilla JSで書きたいというのもあり、割とてこずった。結果のコード変更点はこれ。
やったことの概要を以下に書く。
jekyll-paginate-v2を導入
まずは単純にペジネーションをする。1ページあたりの記事数が60と多いが、それはウィンドウの幅がどのサイズでも、ぴったり記事がおさまるようにしたかったからだ。
ペジネーションすると、page
が増えてしまい、その結果ヘッダにペジネーションしたページが並んでしまうので、indexおよび自動生成されたページは除外するようにした。
JavaScriptで指定されたページの中身をDOMに追加
UIは変更せずに、「指定されたページをfetchして、その内容をappendChildで追加」するコードを書き、開発者ツールから動作を確認した。
「もっと読む」ボタンを追加
fetchして追加のコードをリファクタしつつ、UIにボタンを追加した。
Window内でのページ位置を覚える
pushState
の準備として、どのへんにどのページがあるかをおぼえさせた。
途中ページが最初からロードされたら、その前のページを読み込む
page-10
とか指定されたら、それより前も順次読み込んでDOMに追加するようにした。
Scrollして、ページ移動したらpushStateする
スクロール位置によって、pushStateでURLを書き換える。
今後の課題
- 途中ページ読んだときに、前のページを一気に読みに行くのはあまり良くない。前ページだけ読んで、徐々に読む方が良いかもしれない。
- これはこれとして、画像のlazy loadがあった方が良い。
- カテゴリーページのペジネーションもできればやりたい。