KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

Next.js Tutorial で作った blog サイトの見た目を自分好みにする計画

why

  • これを見て私もはてなや Qiita の記事を並べたくなった

現状

f:id:kei_s_lifehack:20201104065301p:plain

  • Nextjs-tutorial で作ったそのまま
  • 中身も入れてない。

purpose01-見た目-CSS

  • カード型で並べられる
  • 決まった画像がアイコンとして?並ぶ
  • 左上のロゴがある

  • 画像入れなくても綺麗に CSS 当てれば形になるかも

purpose02-便利機能-view

  • ページネーションが表示される
  • 検索ができる
  • 記事の文字数が表示される

CSS 編集

<section className={`${utilStyles.headingMd} ${utilStyles.padding1px}`}>
  <h2 className={utilStyles.headingLg}>Blog</h2>
  <ul className={utilStyles.list}>
    {allPostsData.map(({ id, date, title }) => (
      <li className={utilStyles.listItem} key={id}>
        <Link href={`/posts/${id}`}>
          <a>{title}</a>
        </Link>
        <br />
        <small className={utilStyles.lightText}>
          <Date dateString={date} />
        </small>
      </li>
    ))}
  </ul>
</section>
  • index.tsx の 記事データを map して html にしているのはここ
import utilStyles from '../styles/utils.module.css'
  • index.tsx が読み込んでるのは util
.heading2Xl {
  font-size: 2.5rem;
  line-height: 1.2;
  font-weight: 800;
  letter-spacing: -0.05rem;
  margin: 1rem 0;
}

.headingXl {
  font-size: 2rem;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: -0.05rem;
  margin: 1rem 0;
}

.headingLg {
  font-size: 1.5rem;
  line-height: 1.4;
  margin: 1rem 0;
}

.headingMd {
  font-size: 1.2rem;
  line-height: 1.5;
}

.borderCircle {
  border-radius: 9999px;
}

.colorInherit {
  color: inherit;
}

.padding1px {
  padding-top: 1px;
}

.list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.listItem {
  margin: 0 0 1.25rem;
}

.lightText {
  color: #999;
}
  • パーツごとに スタイルが決まっている
  • section 自体に影をつけて浮かせて行こうか...
  • そもそも横並びにするために Grid を全体に適用するか...

サンプルデータを実際のデータに

const name = '[Your Name]'
export const siteTitle = 'Next.js Sample Website'
  • index.tsx のここを変更
  • posts/ に Qiita の 3 記事と Hatena のいくつかの記事をおく
  • md の header に updatedAt, tags の配列もおく?