一覧ページのデザインを変更しました

@goran_nasai
こんにちは。GORAN
です。今日も弊ブログについての話です。
改めてですが、弊ブログはオープンになっております。
リポにあるUpdate ProgressというProject
から取り組んでいるアップデート事項を確認することができます。
今回は記事が増えてきたこともあり、一覧ページの見せ方についてのアップデートに取り組みました。
仕様
- 最新1記事は目立たせたい
- 6記事まではカードにしたい
- 7記事以降はリストで縦幅詰めたい
方針
実はこれまでも最新1記事だけはダークモードにするというプチアプデがありました。しかしこれはCSSで:first-child
を使っただけの突貫工事でした。
今回は上記の仕様を踏襲するために、全記事の配列(allMarkdownRemark.edges
)をslice
で区切って
src/pages/index.js
const postLatest = data.allMarkdownRemark.edges[0];
const postsNew = data.allMarkdownRemark.edges.slice(1,6);
const postsMore = data.allMarkdownRemark.edges.slice(7);
それぞれに対してグループごとのセレクタを付与していますので、
src/pages/index.js
<h2>最新</h2>
<PostCard key={postLatest.node.fields.slug} node={postLatest.node} classProp={`latest`} />
<h2>新着</h2>
<NewFlex>
{postsNew.map(({ node }) => {
return <PostCard key={node.fields.slug} node={node} classProp={`new`} />;
})}
</NewFlex>
<h2>その他</h2>
{postsMore.map(({ node }) => {
return <PostCard key={node.fields.slug} node={node} classProp={`more`} />;
})}
あとはCSSでどうにでもできます。
おわりに
一覧ページがトップにもなっているので、ちょっとだけ手を加えました。カテゴリページも増えてきたら同じ仕様にしようかなと思ってます。この次はページネーションが待ってるわけですが、果たして1ページあたり何記事が良いのか。調べときます。