03/09

遅ればせのCSS入門

今までだましだまし書いてきたCSSにも限界を見せてきたのでここいらで一つ、真面目にCSSに入門してみようと思う。

という訳で現場のプロから学ぶ CSSコーディングバイブルの学習メモを書いておく

CSSって?

CSSとはカスケーディングスタイルシート(Cascading Style Sheet)の略。HTMLを装飾する役割を持つ。
CSS Working Groupのメンバーによって仕様が決められているらしい。

基本文法

HTMLにCSSを適応させるには3種類の方法を持つ。

  • HTMLのstyle属性に直接CSSを置く
  • HTMLのstyleタグでCSSを挟む
  • linkタグのhref属性にCSSファイルを読み込ませる ←主流

文法は単純(?)

.text {
  background :#ccc;
}

用語の説明

.text: セレクタ、装飾を適応したい箇所を指す
background:: プロパティ、MDNでは

CSS のプロパティは、関連付けられた値によりブラウザーがどのように要素を表示するかを定義する特性です。

1 とある。

#ccc;: 値、まあ説明は不要だろう

キー概念

CSSを考える上で4つの概念が重要とある。

  • カスケード
  • 継承
  • 優先度
  • 詳細度

CSSで言うCascading、つまり上から下へ流れる滝のように、指定したセレクタが複数ある場合は下の行で上書きされる。
htmlタグの値は親から子へ受け継がれ、親要素で指定されている要素は継承プロパティと呼ばれる。そして、上書きされない限り子へ引き継がれる。
親子関係の例

<h2 class="title">見出し<span>サブタイトル</span></h2>

では

.title(親) > span(子)

となる
CSSを書く上で重要なのがCSS優先度。まあどの値を優先するかを決めると考えればよいだろう。
具体的な優先度はこんな感じ
優先度高
style属性
IDセレクタ
クラスセレクタ、属性セレクタ、擬似クラスセレクタ
要素セレクタ、疑似要素セレクタ
優先度低
詳細度が高いほど優先される。

セレクタ

IDセレクタ、クラスセレクタ、要素セレクタはよく見るね

CSS設計

この辺りを読みたかった。CSSのコーディングスタイルには3つ代表的なものが存在する。

  • OOCSS
  • BEM
  • SMACSS

クラスにも代表的な指定方法が3つある。

マルチクラス、装飾や機能ごとにクラスを分ける
(Boostrapで使われる)

  • ここがイイ!
    再利用性が高い
  • ここがダメ!
    styleの適応範囲が分かりにくい

シングルクラス、使用する目的に合わせてクラスを作成

  • ここがイイ!
    styleの適応範囲が分かりやすい
  • ここがダメ!
    再利用性が低い

ユーティリティクラス(汎用クラス)
クラス名がCSSのプロパティを表しているクラス、(ちなみにこのブログのテーマであるkissはこのタイプを多用している。)

  • OOCSS
    オブジェクト指向型CSSコーディングを指す。ストラクチャ(構造)とスキン(装飾)の分離、コンテナ(場所)とコンテンツ(パーツ)
  • BEM
    クラスの命名に厳格なルールある。複数人作業する場合はオススメ
  • SMACSS
    CSSを5つのカテゴリーに分ける
  • Base
  • Layout
  • Module
  • State
  • Theme
    それぞれのディレクトリ名を使う

CSSの基本

CSSを学習上で必要な知識

  • セレクタ
  • カスケードと継承、詳細度
  • ボックスモデル
  • マージンの相殺
  • デフォルトスタイルシート、リセットCSS
    CSSを書く上で最初にすること
    テンプレート、レイアウト、コンポーネント、エレメントの定義。

とりあえずここまで。
うーんCSSは奥深いなあ

©2022 Liquid-system | github | misskey.io