【30DAYトライアル】2nd DAY10. 横並びカードのコーディングを9枚の画像で解説します【コードもあるよ】

前回に続き東京フリーランスさんの「30DAYSトライアル」の解説をしていきます。

今回は「カードの横並び」です。わたしは初めて見たときに全くコードが思い浮かびませんでした。

カードの横並びなんてやったことないし、コードもまったく思い浮かばない。これど〜やるの??

わたしも初見ではコードがまったく浮かびませんでした。

ではどうやって乗り越えたかというと、ちょうど欲しかった本にカードの横並びのやり方が書いてあったんです。
すぐ買いに行きました(笑)
具体的には「CSSグリッド」を使います。これでなんとかこの課題を乗り越えることができました。

そこで今回は「カードの横並びレイアウト」でハマっていた過去の自分に向けて、そして学習のアウトプットとして考え方について書いていきたいと思います。

この記事のポイント
  1. カードの横並びの方法がわかる
  2. 「CSSグリッド」の使い方がわかる
  3. 画像下の隙間の埋め方がわかる

それでは早速、やっていきましょう!

【30DAYトライアル】横並びカードの完成イメージ

これですね。ざっくりですがわたしが初見で疑問に思ったポイントは4つほどです。

  1. タイトルの下の青い線
  2. カードの作り方
  3. カードの配置
  4. レスポンシブ

まずはコードです

HTML

CSS

【CSSグリッド】がお手軽で便利です

配置についてですがわたしは「CSSグリッド」を使いました。配置の仕方がやりやすいです。
しかもレスポンシブもいけちゃいます!

CSSグリッドは「Webクリエイターボックス」さんの記事がとてもわかりやすいので、ぜひのぞいてみてください。

参考 CSS Gridを使ったレスポンシブ対応の基本レイアウトWebクリエイターボックス

この課題の考え方はこちらです。

  1. 「card」の下の青い線をやっつける
  2. カードを作る
  3. カードを横並びにする
  4. レスポンシブ化する

順番に解説します

STEP.1
HTMLを作成

 

まずHTMLだけ書いたところです。画像が下に長いので途中で切ってます。カードの部分はブログ記事を想定していまして、「クリックしたら個別ページに飛ぶ」みたいな想像で作りました。なので全体を「aタグ」で囲っています。

  1. カード全体を「div」で囲う
  2. クリックを想定して「a」で囲う
  3. 上から「img」「h2」「p」タグを書きます

これをカードの枚数分コピーです。

 

 

STEP.2
背景色とページタイトルの設定

見やすいように先に背景色を変えます。それから「ページタイトル」まわりのCSSを書いていきます。
次で説明しますが、準備として「.page-title」に「position: relative;」を設定します。

 

 

STEP.3
ページタイトル下の青い線の設定

ここで「ページタイトル」下の青い線を書いていきます。
考え方としては、線ではなく「線みたいな細い要素」を作ってちょうどいい位置に配置します。
順番に「まずは線を引く」次に「線を配置する」と2つに分けて考えるとわかりやすいです。
「left: 50%;」で真ん中付近に配置しますが少しずれます。「transform: translateX(-50%);」を書くことでずれた分を相殺できます。

 

 

STEP.4

「ページタイトル」の見た目をまわりの余白も含めて整えます。

 

 

STEP.5
カードの外枠の設定

ここからカードのCSSを書いていきます。
まずは一番そと側です。背景色をつけて、「padding」で余白の設定をします。
カードっぽくなってきました。

 

 

STEP.6
imgタグの設定

画像の設定ですが、Chromeのデベロッパー・ツールで見ると画像の下に少しだけ隙間があると思います。
これは「vertical-align: bottom;」で消すことができます。

 

 

STEP.7
h2タグの設定

カードタイトルを整えます。特に難しいところはないのでコードを見ていただければOKです。

 

 

STEP.8
pタグの設定

カードの本文ですがこちらもコードを見ていただければOKです。

 

 

STEP.9
「display:grid;」で位置調整

最後に「display: grid;」で配置します。「grid-template-columns」で細かい設定ができます。
まず「auto-fit」で親要素の幅を見ながら要素を並べてくれます。
次に「minmax」で要素の幅の最小と最大を設定できます。(最小、最大)です。今回は最小のみ設定。
そして、「repeat」と「1fr」はminmaxで設定した要素を幅に合わせて並べてくれます。
カード同士の余白は「gap」で設定できます。
これで完成です。お疲れさまでした!

 

 

XDの数字と若干違うところもありますが「PerfectPixel」でチェックして微調整しています。

この課題で参考になった書籍の紹介

わたしはこの課題を最初見たときにコードがまったく思いつきませんでした。
そこでたまたま見つけた本に突破口が書いてあり、うまいこと課題をクリアすることができました。
今でも「あれってどうやるんだっけ?」って感じで読み返すときがあるくらい使えます。
もし気になる方がいらっしゃったらチェックしてみてください。



さて、いかがだったでしょうか。

これが正解という訳ではありませんが一つのやり方としてお役に立てれば幸いです。
コーディング学習はハマると辛いですが、諦めなければ勝てると思っていますので一緒に頑張りましょう!

最後まで読んでいただきありがとうございました。

それではまた!ごきげんよ〜♪