第3章まとめクイズ
第3章 総合まとめクイズ(12問)
次のCSSで、.nav の中にある a 要素すべてにスタイルを適用するセレクターはどれですか?
「+」セレクター(隣接兄弟セレクター)の動作として正しいのはどれですか?
h2 + p {
font-weight: bold;
} 擬似クラスセレクターの説明として正しくないものはどれですか?
CSSの詳細度(Specificity)が最も高いセレクターはどれですか?
以下のコードで、h1.title に実際に適用される文字色はどれですか?
h1 { color: blue; }
.title { color: red; }
h1.title { color: green; } !important についての説明として正しいものはどれですか?
.button {
color: white !important;
} 同じ詳細度のスタイルが複数ある場合、どれが適用されますか?
.text { color: red; }
.text { color: blue; } CSSの「継承」として正しい説明はどれですか?
次のうち、継承されるプロパティはどれですか?
inherit キーワードの説明として正しいものはどれですか?
.child {
border: inherit;
} BEM命名規則の説明として正しいものはどれですか?
保守しやすいCSSを書くための方針として、正しくないものはどれですか?
実践:ブログカードを作成しよう
実践ファイルのダウンロード
以下のリンクからファイルをダウンロードし、VS Codeで開いて内容を確認することもできます。
ただし、実際に自分でコードを書いてみることが最も効果的な学習方法なので、以下の手順を参考にぜひ自分で実装してみてください。
ファイルの作成手順
- VS Codeで「css-practice」フォルダーを開く
- 「ファイル」→「フォルダーを開く」でデスクトップの「css-practice」フォルダーを選択する
- 「chapter3」フォルダーを作成する
- サイドバーのフォルダーアイコンから「新しいフォルダー」を選び、名前を「chapter3」にする
- 「index.html」ファイルを作成する
- 「chapter3」フォルダーを右クリック →「新しいファイル」→「index.html」と入力する
- 「style.css」ファイルを作成する
- 同じく「chapter3」フォルダーに「style.css」を作成する
第3章で学んだ概念を全部使ったブログカード
プレビュー:
実装手順
- HTMLファイルの基本構造を作成する
- DOCTYPE宣言、
lang="ja"属性、head セクションで charset・viewport・title を設定する <link rel="stylesheet" href="style.css">で外部CSSを読み込む
- DOCTYPE宣言、
- ブログカードのHTML構造を作成する(BEM命名規則)
.containerで全体を包む div を作成する- Block:
.blog-cardでカード全体を囲む - Element:
.blog-card__header・.blog-card__body・.blog-card__footerの3つのエリアに分ける .blog-card__tagにはノーマルタグと Modifier.blog-card__tag--featuredの2種類を配置する.blog-card__titleの中に<a>要素でリンクを設置する
- CSSリセットを書く
- 全称セレクター
*で margin・padding を 0、box-sizing を border-box に設定する
- 全称セレクター
- 継承を活用して body にフォントを設定する
font-family・background-color・colorを body に一度だけ設定する(全子孫に継承される)
- Block:
.blog-cardの基本スタイルを設定する- 白背景、
border-radius、box-shadow、overflow: hiddenを設定する - 擬似クラス
.blog-card:hoverでtransform: translateY(-4px)とシャドウ強調を設定する(カスケード:後から書いたホバースタイルが上書き)
- 白背景、
- Element のスタイルを設定する(子孫セレクター活用)
.blog-card__tag:タグの共通スタイル(背景色・角丸・フォントサイズ)を設定する- Modifier
.blog-card__tag--featured:カスケードを利用して背景色と文字色を上書きする .blog-card__title a:子孫セレクターで title 内のリンクだけを対象にスタイルを設定する.blog-card__title a:hover:擬似クラスでホバー時の色変化を追加する
- フッターを設定する
.blog-card__footerにdisplay: flex・justify-content: space-betweenで日付とリンクを左右に配置するborder-topで区切り線を設定する(継承されないプロパティの代表例)
- ブラウザで動作を確認する
- ファイルを保存してブラウザで開き、ホバー効果・タグの色分け・リンクのスタイルが正しく動くか確認する
コーディング時の注意点
- BEM命名の __ と — の使い分け
.block__elementは二重アンダースコア、.block--modifierは二重ハイフン。混同しやすいので意識して書く - カスケードの順序
.blog-card__tagの基本スタイルを先に書き、.blog-card__tag--featuredの上書きスタイルを後に書く。順序が逆になると Modifier が効かなくなる - 子孫セレクターのスコープ
.blog-card__title aのように書くことで、他の a 要素には影響を与えずカードのタイトルリンクだけを対象にできる - 継承されるプロパティとされないプロパティ color・font-family は body から継承されるが、border・padding・margin は各要素に個別に設定が必要
- transition は変化前の要素に書く
:hover側ではなく.blog-card側にtransitionを設定することで、ホバー解除時もなめらかに戻る
使用するCSSの概念チェックリスト
- セレクター組み合わせ 子孫セレクター(
.blog-card__title a)、擬似クラス(:hover)を使っている - カスケード
.blog-card__tag→.blog-card__tag--featuredの順序で上書きが行われている - 継承 body に設定した
font-family・colorが子孫要素に自動的に引き継がれている - BEM命名規則 Block(
.blog-card)、Element(__header/__body/__footer/__tag/__titleなど)、Modifier(--featured)が正しく使われている - 擬似クラス
.blog-card:hover・.blog-card__title a:hover・.blog-card__link:hoverが設定されている - transition ホバー効果がなめらかに動作する
実装完了後のチェックリスト
- HTML基本構造 DOCTYPE宣言、
lang="ja"、charset・viewport・title が正しく設定されている - CSS外部ファイルリンク
link要素で style.css が正しく読み込まれている - リセットスタイル 全要素の margin・padding がリセットされている
- BEM命名 Block・Element・Modifier のクラス名が命名規則通りに書けている
- タグのスタイル featured タグだけ背景色と文字色が変わっている(Modifier が効いている)
- タイトルリンク 通常時は黒、ホバー時はグリーンに色が変わる
- ホバーエフェクト カード全体がホバーで数ピクセル浮き上がり、シャドウが強調される
- フッター 日付とリンクが左右に並んでいる(flexbox が効いている)
- 継承の確認 body のフォントがカード内のテキスト全体に適用されている
- ブラウザ表示確認 各要素が期待通りに表示されホバー効果が正常に動作している
まとめ
第3章で身につけたスキル
- セレクター応用 子孫・子・隣接兄弟・一般兄弟セレクター、擬似クラスを目的に応じて使い分けられる
- 詳細度の理解 全称・要素・クラス・IDの詳細度の順序を把握し、意図したスタイルを適用できる
- カスケードの活用 ソースオーダーを意識した上書きスタイルの設計ができる
- 継承の理解 継承されるプロパティとされないプロパティを把握し、効率的にスタイルを設定できる
- BEM命名規則 Block・Element・Modifier の命名ルールに従ってクラスを設計できる
- 保守性の高いCSS 詳細度を低く保ち、命名規則で意図が伝わるコードが書ける
- 実践力 学んだ概念を統合してブログカードコンポーネントを実装できる
第4章では、レスポンシブデザインとメディアクエリを学びます。スマートフォン・タブレット・PCなど様々な画面サイズに対応したレイアウトを実現できるようになりましょう。