Gatsby(GatsbyJS)でトップに戻る(Scroll to Top) | Gatsbyブログカスタマイズ
目次(Table of contents)を作成した際にreact-scrollを導入したので、利用してトップに戻るを実装します。
pagetop.jsの作成
src/components/pagetop.jsを新規作成します。
複雑なことはしていないので、非常にシンプルな記述です。
ポイントは、Gatsby(GatsbyJS)の書き方ではなく、Reactの書き方であるということ。
import React from "react"
import { animateScroll as scroll } from "react-scroll"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { faChevronUp } from "@fortawesome/free-solid-svg-icons"
class PageTop extends React.Component {
scrollToTop = () => {
scroll.scrollToTop()
}
render() {
return (
<div className="pagetop">
<button className="pagetop__btn" onClick={this.scrollToTop}><FontAwesomeIcon icon={faChevronUp} />トップへ戻る</button>
</div>
)
}
}
export default PageTop
pagetopの呼び出しとPageTopの呼び出し
いずれかのレイアウトにて作成したトップに戻る(Scroll to Top)を呼び出します。
Webサイト高速化のための 静的サイトジェネレーター活用入門のカスタマイズであれば、 src/components/layout.jsが良さそうです。
import PageTop from "../components/pagetop"
...
<PageTop />
スタイル調整
CSSでスタイルを調整します。
SCSSではありますが、参考までに以下に示します。
.pagetop {
display: flex;
justify-content: center;
&__btn {
background-color: #222;
border: none;
cursor: pointer;
padding: 0;
appearance: none;
padding: 0.75em 1em;
color: #fff;
.svg-inline--fa {
padding-right: 0.25em;
}
}
}