時祷書

遅ればせの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は奥深いなあ