💻

GatsbyJSで作っているブログの記事一覧にもアイキャッチが付くようにしてデザインをいい感じにした

2020-08-11

モチベーション

ずっと手を付けられていなかった記事一覧のデザインをいい感じにしたかった

Before

before

After

after

やったこと

前回の記事で記事の頭にアイキャッチが付くようにしたので、その仕組みを応用して、記事一覧にもアイキャッチが表示されるようにした。

GatsbyJSで作っているブログでアイキャッチが自動でいい感じに付くようにした

各記事のリンクはPostというコンポーネントを作っていて、GraphQLで取得した記事のデータを渡せばいい感じに表示してくれるようにしている。

/src/components/post.js
import dayjs from "dayjs"
import { Link } from "gatsby"
import React from "react"
import Date from "./date"
import EyeCatch from "./eye_catch"
import styles from "./post.module.sass"
import TagLink from "./tag_link"

const Post = ({ slug, title, date, tags }) => (
  <Link to={slug} key={slug}>
    <div className={styles.wrapper}>
      <EyeCatch tags={tags} size="medium" />
      <div className={styles.content}>
        <h3 className={styles.title}>{title}</h3>
        <Date date={dayjs(date).format("YYYY-MM-DD")} />
        {tags.map((tag) => {
          return <TagLink>{tag}</TagLink>
        })}
      </div>
    </div>
  </Link>
)

export default Post

前回、EyeCatchというコンポーネントを作成していたのだが、そのコンポーネントに新たにsizeのオプションを渡せるようにして、記事トップで使う場合と記事一覧で使う場合との両方でタグに応じてアイコンや背景色を出し分ける部分を共通化できるようにした。

おわりに

デザインがいい感じになってきたので、他の細かい部分も整えていきたい。

キクナントカ

ソフトウェアエンジニアをしています。Flutter、Rails、GatsbyJSを主に触っています。趣味でボードゲームを制作したり、個人開発したりしています。詳しくはこちら