スクロールスパイを入れたかったので、入れてみた。
もともとvue-scrolltoを入れてスムーススクロールは実装していたのだが、共存させて見たら思いのほかうまく言ってかっこよくなったので記事に残す
こんな感じ
この記事とか見ごたえがあって良い
https://blog.utautattaro.com/post/qjnzkp7qa
スムーススクロール:vue-scrollto
https://www.npmjs.com/package/vue-scrollto
スクロールスパイ:v-b-scrollspy (bootstrap-vue)
https://bootstrap-vue.org/docs/directives/scrollspy
まずは普通にvue-scrollto
をyarn add
yarn add vue-scrollto
こちらはVueのライブラリなのでNuxtで使うためにPluginにするplugins
フォルダにvue-scrollto.js
を作成
import Vue from 'vue'
import VueScrollTo from 'vue-scrollto'
Vue.use(VueScrollTo, {
duration: 700,
easing: [0, 0, 0.1, 1],
offset: -200,
})
目次の作り方自体は過去の説明記事から
https://blog.utautattaro.com/post/kvawuzxju
vue-scrolltoはv-scroll-to
要素にidを挿入し、to
オプションを付与する必要があるのでハッシュリンクを以下のように修正
<b-list-group-item class="py-1 tablelist" v-bind:class="'t'+table.tag" v-scroll-to="table.id" v-for="table in tableofcontent" to v-bind:href="table.id" v-html="table.text"></b-list-group-item>
href
は何も入れなくても動くのだが後述するv-b-scrollspy
のために入れておく
入れてもスムーススクロールは問題なく動く
次にv-b-scrollspy
の設定。v-b-scrollspy
を実行するには以下の4つの条件が揃う必要がある
b-nav
かb-list-group
である必要があるposition: relative;
である必要があるoverflow-y:scroll;
を追加する必要があるhref
を有している必要があり、スパイ対象と同一でなければならない
今回は記事内をスパイしたかったが、記事単体にoverflow-y:scroll;
を設定していまうと不要なところにスクロールバーが出てしまうのでbody
をスパイ対象とした。
使い方は、スパイした結果を表示するDOMグループにv-b-scrollspy="250"
を要素として設定すればOK
引数に数値を指定することでそれがoffsetの値になる。vue-scrolltoと完全に一致しないので微調整済み
これでスパイが実行され、閲覧中のidをhref
に持ったポインタDOMがclassにactive
が追加される。
反Apple信者の私が移動用のメインマシンをiPad Pro(第5世代) 12.9インチに変えてからしばらく経ったので現在の構成を紹介
2022年8月9日(火) 15時27分41秒 | 841 viewついにURLのogp出力に対応した
2021年9月1日(水) 2時20分35秒 | 625 viewPlayCanvasのOrbit-cameraを制御して指定位置にカメラを移動させる
2023年2月27日(月) 10時7分43秒 | 272 viewWebサイトの変更を監視してLINEに即通知を行うシステムを開発・提供しています
2021年6月28日(月) 5時21分3秒 | 161 view目次を作りたい→作った
2020年10月29日(木) 11時1分28秒 | 36 view