AstroのBlogにモバイル表示用のタブバー(TabBar)を追加する
初稿:
- 6 min read -
記事概要
- 先日のBloggerからAstroへ移行した記事の別途詳細
※参考 - Blog移行記事
10年以上の期間お世話になったGoogle Bloggerに別れを告げ、この度AstroでBlogサイトを構築し移行した。Astroは静的サイトを手軽に開発できる軽量フレームワーク。無料のテンプレートをベースにカスタマイズを行った。それなりの作業ボリュームとなったので、詳細は別記事に分け、今回は移行作業全体をまとめる。
目的
- AstroのBlogサイトにモバイル表示用のタブバー(以降、TabBar)を追加する
- このBlogのモバイル表示時に使用しているものと同じ
- 今回、次の3つを配置する
- ホームへ戻る
- Topへ戻る
- 目次を表示する
- 一連の実装手順についてまとめる
用語説明
Astro とは?
Astroは、ブログやマーケティング、eコマースなど、コンテンツ駆動のウェブサイトを作成するためのウェブフレームワークです。Astroは、新しいフロントエンドアーキテクチャを開拓し、他のフレームワークと比較してJavaScriptのオーバーヘッドと複雑さを低減することで知られています。高速でSEOに優れたウェブサイトが必要なら、Astroが最適です。 — Astro公式Docs より引用をDeepLで翻訳
作業環境
- OS - Ubuntu-22.04LTS on WSL2
- Node.js - v20.14.0
- pnpm - v9.4.0
- Astro - v4.11.3
作業概要
- TabBar componentを実装する
- layout componentに、TabBar componentを組み込む
作業詳細
TabBar componentを実装する
仕様
- ファイル名はMobileFooter.astro
- componentに以下を実装する
- 目次用dialogのレンダリング
- TabBarのレンダリング
- ボタン操作追加javascript
MobileFooter component
- propsで受け取ったheadingsで目次を作成しdialogでレンダリングする
- dialogの次、fixed-footer-menuがTabBar
- fixed-footer-menuはmd以上で表示されるようcssで制御
- script内はボタン操作を実装
- ホームへ戻るはアンカータグ
- Topへ戻る、目次dialog表示はclickイベント
- cssはTailwind CSS、iconはTabler Iconsを使用
- dialog内で使用している目次componentは以下2つ
- h2とh3のみをターゲットに目次を作成している
TableOfContents.astro
TabletOfContentsHeading.astro
layout componentに、TabBar componentを組み込む
- Blog記事を表示するcomponent BlogPostに先ほど作成したMobileFooterをimport
- タグを追加しpropsにheadingsを渡す
以上