中央揃えの練習

コーディング練習問題

概要

コードの「style.css」を編集し、適切なコーディングをして次のような見た目にしてください。
HTMLコードに必要なclassは追加してあるため、HTMLの修正は必要ありません。
style.css上でスタイル指定が必要なclassがある場合は、必要なセレクタを追記してください。

目的

文字・ブロック要素・親子要素で、中央揃えの指定を使い分けられるようにする
基本のflexboxを試す。

中央揃えは「何を中央にするか」で選びます

中央揃えが効かないときは、CSSを増やす前に「文字を中央にしたいのか」「幅のある箱そのものを中央にしたいのか」「親の中で子要素を上下左右の中央にしたいのか」を確認しましょう。

文字やリンクなどを横方向の中央にする

文字やインライン要素を中央にしたい場合は、対象を含む親要素にtext-align: center;を指定します。

.message {
  text-align: center;
}

幅のあるブロック要素を横方向の中央にする

カードやコンテンツ枠など、幅が親要素より小さいブロック要素にはmargin: 0 auto;を使います。widthまたはmax-widthがなく、要素が親幅いっぱいに広がっていると、左右の空きがないため中央へ動いたように見えません。

.card {
  max-width: 600px;
  margin: 0 auto;
}

親の中で子要素を上下左右の中央にする

Flexboxでは、中央に置きたい子要素ではなく、その直接の親要素に指定します。

.box {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 200px;
}

課題の進め方と確認方法

  1. 完成見本を見て、文字・箱・親子要素のどれを中央にするか決めます。
  2. 該当するclassをHTMLで確認し、style.cssにセレクタを書きます。
  3. text-align、margin、Flexboxのいずれかを一つだけ試します。
  4. ブラウザーを再読み込みし、ウィンドウ幅を変えても中央を保つか確認します。
  5. うまくいかない場合は、CSSの読み込み、class名、親子関係、要素の幅を順番に確認します。

よくある間違い

  • text-align: center;を、中央にしたい文字自身だけに指定している
  • margin: 0 auto;を指定した要素が親幅いっぱいで、左右の余白がない
  • justify-contentやalign-itemsを子要素に指定している
  • 横方向だけ中央にしたいのに、必要のないpositionを使っている
  • 複数の方法を同時に追加し、どの指定が効いたか分からなくなっている

先にmargin: 0 auto;で中央揃えする方法で箱の中央揃えを確認し、親子構造が分かりにくい場合はFlexレイアウト練習も参照してください。

公式資料

データ

使用ソフト

VisualStudioCode

答え(作業完了後にみてください。)

タイトルとURLをコピーしました