Section 5
レイアウトに要素を注入する
Astroコンポーネントのスロットを使ってAstro Sarkaraレイアウトを拡張することができます。例えばサイドバーの上部に著者情報を表示したいときなど、用途に合わせた拡張が可能です。
Astro Sarkaraレイアウトのスロットの一覧
注入のためのスロット
top-of-head
:<head>
要素の最上位meta
:<meta>
要素の一覧の最下位bottom-of-head
:<head>
要素の最下位top-of-body
:<body>
要素の最上位jumbotron-header
: ジャンボトロンのタイトル上部jumbotron-footer
: ジャンボトロンのタイトル下部top-of-main
: メインコンテンツの最上位bottom-of-main
: メインコンテンツの最下位sidebar-top
: サイドバーの最上位sidebar-bottom
: サイドバーの最下位drawer-top
: ドロワー内部の最上位drawer-bottom
: ドロワー内部の最下位bottom-of-body
:<body>
要素の最下位
既存のレイアウトを上書きするためのスロット
seo
: 既存のSEOのための要素を置換header
: 既存のヘッダーを置換jumbotron
: 既存のジャンボトロンを置換sidebar
: 既存のサイドバーを置換footer
: 既存のフッターを置換fab
: 既存のFloating Action Buttonを置換drawer
: 既存のドロワーを置換
使い方
例えばサイドバーの最上部にコンテンツを配置する場合は、配置したい要素にslot="sidebar-top"
を与えます。
---
import { SarkaraLayout, Paper } from "@cieloazul310/astro-sarkara";
import { menu, siteMetadata } from "../data";
---
<SarkaraLayout menu={menu} siteMetadata={siteMetadata}>
<Content />
<Paper colorPalette="secondary" slot="sidebar-top">
<h2>Author</h2>
<p>Author description hoge hoge hoge...</p>
</Paper>
</SarkaraLayout>
Astro Sarkaraレイアウトの構成
<!doctype html>
<html>
<head>
<slot name="top-of-head" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="generator" content={Astro.generator} />
<title>{contentTitle}</title>
<slot name="seo">
<Seo>
<slot name="meta" />
</Seo>
</slot>
<slot name="bottom-of-head" />
</head>
<body>
<slot name="top-of-body" />
<slot name="header">
<Header />
</slot>
<main>
<article>
<slot name="jumbotron">
<Jumbotron>
<slot name="jumbotron-header" slot="jumbotron-header" />
<slot name="jumbotron-footer" slot="jumbotron-footer" />
</Jumbotron>
</slot>
<div>
{/* メインコンテンツ */}
<div>
<slot name="top-of-main" />
<slot />
<div>
<MenuList />
</div>
<PaperLink>
Top
</PaperLink>
<slot name="bottom-of-main" />
</div>
{/* メインコンテンツ */}
{/* サイドバー */}
<div>
<div>
<slot name="sidebar">
<slot name="sidebar-top" />
{Astro.slots.has("sidebar-top") && <Divider />}
<MenuList />
{Astro.slots.has("sidebar-bottom") && <Divider />}
<slot name="sidebar-bottom" />
</slot>
</div>
</div>
{/* サイドバー */}
</div>
</article>
</main>
<slot name="footer">
<Footer />
</slot>
<div>
<slot name="fab">
<Fab />
</slot>
</div>
<slot name="drawer">
<Drawer>
<slot name="drawer-top" slot="drawer-top" />
<MenuList />
<slot name="drawer-bottom" slot="drawer-bottom" />
</Drawer>
</slot>
<script />
<script />
<slot name="bottom-of-body" />
</body>
</html>
コンポーネント
docs.astro.build