VIDEO LESSON
CSS応用:カスタムプロパティ・部品設計・状態表現でスタイルを整理するの解説動画
再生時間 8:11動画を別のタブで開く ↗
動画の字幕・文字起こしを読む
再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。
- 0:00こんにちは。
- 0:00エイチティーエムエル、シーエスエス入門、第八回です。
- 0:04今回のテーマは、シーエスエスの応用です。
- 0:07これまで私たちは、練習のために、シーエスエスをファイルの末尾へ追加してきました。
- 0:12今回は、その積み重なったシーエスエスを整理して、完成サイトのスタイルへ置き換える回です。
- 0:19同じ色やボタンの指定を何度も書く状態から、変更する場所が分かりやすいシーエスエスへ進みます。
- 0:25使う道具は、カスタムプロパティ、共通部品、そして状態表現です。
- 0:29ジャバスクリプトで切り替える状態の見た目も、この段階で先に用意しておきます。
- 0:35元になる記事は、エスイーの部屋の、シーエスエス応用、です。
- 0:39最初の道具は、カスタムプロパティです。
- 0:42これは、色などの値に名前を付けて、定義しておける仕組みです。
- 0:46大切なのは、名前を用途で決めることです。
- 0:49たとえば、インクは文字の色、ペーパーはページの背景、サーフェスはカードや入力欄の面、
- 0:54ラインは境界線、という具合です。
- 0:58使う側は、バー、括弧の中に変数名、と書いて参照するだけです。
- 1:03もしブランドの色を変えたくなったら、定義した一か所を直せば、参照している全部に反映されます。
- 1:10色の値を何十か所も探して書き換える、という作業から解放されるのが、この仕組みの大きな利点です。
- 1:17変数を置く場所と、テーマの切り替え方を見ます。
- 1:21カスタムプロパティは、通常、子要素へ継承されます。
- 1:25そこで、基本値はルート、つまり文書の一番上の要素にまとめて置きます。
- 1:30暗いテーマにしたい場合は、エイチティーエムエルの要素に、データテーマ、イコール、
- 1:36ダーク、という属性が付いたときだけ、同じ変数名の値を差し替える指定を、もう一組用意します。
- 1:43ボタンやカードなどの部品側は、変数を参照する書き方のままで何も変えません。
- 1:49値の定義だけが入れ替わることで、サイト全体のテーマが切り替わる、という設計です。
- 1:55部品と配色を分けて考えられるのがポイントです。
- 1:59テーマを切り替えるときの注意点です。
- 2:02背景色だけを暗くすると、本文の文字や入力欄が背景に沈んで、読みにくくなります。
- 2:08確認すべきは、背景と文字の組み合わせだけではありません。
- 2:12リンクの色、カードなどの面の色、境界線の色まで、組み合わせ全体で読めるかを見ます。
- 2:19また、カラースキームという指定も出てきます。
- 2:22これは、フォームの部品など、ブラウザーが標準で用意する部品に対して、今は明るいテーマです、
- 2:28暗いテーマです、という意図を伝えるためのものです。
- 2:34ただし、これは自分の色設定の代わりにはなりません。
- 2:38自分の色は、変数の定義で責任を持って決める必要があります。
- 2:42では、完成版シーエスエスの最初、変数の定義部分を見てみましょう。
- 2:47上の塊が、通常の明るいテーマです。
- 2:49文字のインク、背景のペーパー、面のサーフェス、淡い色のティント、境界線のライン、
- 2:54強調色のアクセント、リンク、といった用途ごとの色が並んでいます。
- 2:59最後のカラースキーム、ライトは、標準部品への意図の伝達です。
- 3:03下の塊が、暗いテーマです。
- 3:05変数の名前はまったく同じで、値だけが暗い背景でも読める色に差し替わっています。
- 3:10カラースキームもダークになっています。
- 3:13名前が同じで値だけ違う。
- 3:15この対応表が、テーマ切り替えの正体です。
- 3:17なお、暗いテーマではアクセントが抜けています。
- 3:21これは、明るいテーマの強調色をそのまま流用する設計だからです。
- 3:25作業の方法自体も、これまでと違います。
- 3:28これまでの回では、スタイルズ ドット シーエスエスの末尾へコードを追加してきましたが、
- 3:31この回は違います。
- 3:35ファイル全体を、完成版の内容で置き換えます。
- 3:38理由は、学習のために重ねてきた重複した指定を、一度きれいに整理するためです。
- 3:43完成版の中の並び順にも決まりがあります。
- 3:46最初に変数、次に基本の要素、レイアウト、部品、最後にレスポンシブの調整、
- 3:49という順序です。
- 3:52順序が決まっていると、直したい指定がファイルのどのあたりにあるか、見当が付けやすくなります。
- 3:58なお、エイチティーエムエルは、第三回で作ったものを引き続きそのまま使います。
- 4:04変えるのはシーエスエスだけです。
- 4:06次に、共通部品のボタンです。
- 4:08ドット、ボタン、というクラスを作り、ボタンの見た目を一か所にまとめます。
- 4:14補助的な操作には、ドット、ボタン、セカンダリー、というクラスを組み合わせて、
- 4:18落ち着いた見た目に変えます。
- 4:22このボタンクラスは、ページ内を移動するリンクに付けることもできます。
- 4:27ただし、ここは大切な注意点です。
- 4:30見た目がボタンらしくなっても、そのエイチティーエムエル要素の役割はリンクのままです。
- 4:36別のページへ移動するのか、その場で動作するのか、という違いは、シーエスエスのクラス名ではなく、
- 4:41エイチティーエムエルの要素で決まります。
- 4:47見た目と役割を混同しないことが、部品設計の基本です。
- 4:51状態の表現を三つ、まとめて用意します。
- 4:53一つ目はフォーカスです。
- 4:55フォーカス、ビジブル、という指定で、キーボード操作で項目を移動したときに、
- 4:59輪郭線が見えるようにします。
- 5:02二つ目は、無効状態です。
- 5:04ディセーブルド、という指定で、押せないボタンを薄く表示します。
- 5:09ただし、意味を色だけで伝えてはいけません。
- 5:12なぜ押せないのかは、フォームの説明文にも残しておきます。
- 5:16三つ目は、非表示です。
- 5:17ヒドゥン属性のある要素は、必ず非表示になるよう、強い指定を置きます。
- 5:22フレックスボックスなどのディスプレイ指定が付いた部品でも、隠したつもりが表示されてしまう事故を防ぐためです。
- 5:30部品の中の間隔の整え方も見ておきましょう。
- 5:33カードの中身は、縦方向のフレックスボックスで並べます。
- 5:38そして、カードの中のリンクに、マージントップ、オートを指定します。
- 5:43これは、上側の余白が自動で伸びて、リンクを一番下へ押し下げる、という意味です。
- 5:49説明文の長さがカードごとに違っても、横に並んだカードのリンクの位置が、下端でそろうようになります。
- 5:57ここで注目してほしいのは、手法の組み合わせです。
- 6:01カード同士を並べるのはグリッド、カードの中を整えるのはフレックスボックス。
- 6:07外側と内側で、別のレイアウト手法を使い分けている好例です。
- 6:11動きへの配慮も、応用の一つです。
- 6:14プリファーズ、リデュースト、モーションは、利用者が、動きを減らす、という設定をしているかどうかを表す条件です。
- 6:25今回の完成版では、逆の条件、つまり、動きを減らす設定がないときだけ、ボタンに短い移動の効果を付けています。
- 6:35ボタンが少しだけ上に浮く、という小さな動きです。
- 6:40原則は、動きはあくまで補助的な装飾にとどめること。
- 6:44アニメーションがなくても、操作の意味がきちんと伝わるようにしておきます。
- 6:51また、暗いテーマの見た目は、今の段階では開発者ツールで確認します。
- 6:58エイチティーエムエル要素に、データテーマ、ダークを一時的に追加すれば、暗い配色を試せます。
- 7:06本物の切り替えは、次回、ジャバスクリプトで行います。
- 7:11最後に、練習と保守の考え方です。
- 7:14練習の一つ目は、変数のアクセントだけを変更して、ボタンの色へ一括で反映されるかを確認することです。
- 7:21二つ目は、カードの角丸を変えてみることです。
- 7:25どちらも、直す場所が一か所で済むことを体感するための練習です。
- 7:30共通化とは、何でも一つのクラスに詰め込むことではありません。
- 7:34同じ役割の指定を、同じ場所へ集めることが目的です。
- 7:38そして保守の心得として、シーエスエスを増やす前に、開発者ツールで、今どのルールが効いているかを調べる習慣を付けましょう。
- 7:48上書きを重ね続けると、効かない原因を追うのがどんどん難しくなります。
- 7:53まとめです。
- 7:54今回は、色をカスタムプロパティで管理し、共通部品と状態表現をそろえ、完成版シーエスエスへ置き換えました。
- 8:02次回は、このテーマ属性をジャバスクリプトで切り替えるなど、ページに操作を追加します。
- 8:09お疲れさまでした。
この動画で学べること
カスタムプロパティで配色を管理し、共通ボタン、フォーカス、無効状態、動きを減らす設定に対応。完成版CSSへ整理します。
解説記事・サンプルコードを読む:CSS応用:カスタムプロパティ・部品設計・状態表現でスタイルを整理する →