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