「CSS設計完全ガイド」から

投稿日

css設計はそうだが、そもそものクラス命名も勉強になった。(ctaやジャンボトロンなど)

芯のあるcssがかけるようになりそう。

鉄則

1,特性に応じてcssを分類する

サイト全体の下地 - ベースグループ

ヘッダー、フッター、コンテンツエリアのスタイリング - レイアウトグループ

モジュールに関わるcss - モジュールグループ

・モジュールそれ自体にはレイアウトに関わるスタイリングはしない

レイアウトに関わるスタイリングとは、width,margin,topなど

そういうのはレイアウトグループにする(.ly_ , .l-)

2,コンテンツとスタイリングが疎結合である

クラス名を使う、属性セレクターを使わない

3,影響範囲がみだりに広すぎない

spanとか > span で使う

4,特定のコンテキストにみだりに依存していない

#main .box とかしない

5,詳細度がみだりに高くない

クラス名を使う

6,クラス名から影響範囲が想像できる

.bl_module_item 的な

7,クラス名から見た目・機能・役割が想像できる

bl_service? .bl_media? bl_aboutService?

8,拡張しやすい

例えばボタンなら.btnに基本スタイリング、モディファイアとして.btn--warningなど

OOCSSとは

Object Oriented CSS(オブジェクト指向css)

CSS設計の基本ともいえる

・ストラクチャーとスキンの分離

↑のモディファイアの話のようなもの

ストラクチャー(構造)

width,height,padding,marginなど

スキン(あしらい)

color,font,bg,box-shadowなど

・コンテナとコンテンツの分離

モジュールを特定のコンテキストに依存させない

BEM

blockの中のblockはOK、ただしelementの中のelementはNO

命名規則

block__element_modifier

MindBEMdingでは

black-name__element-name--modifier-name

Mixとは

blockとblockの中のblockの要素があるとする。

その時

<div class="block">
  <div class="block__item anotherblock">
  </div>
</div>

上記の場合、anotherblockのレイアウトに関するスタイリングはblock__itemにすること

blockは今でゆうコンポーネント的役割かも

実践BEM

・背景色のやつ

.background-color-warning

・btnに右矢印のモディファイア

.btn .btn--arrow-right

・例えば同じボタンでも、3つ以上スタイルが異なる場合は他のブロックとしてつくる

.rounded-btn

・ボタン(ダウンロードアイコン付き)

.before-icon-btn(アイコン自体のスタイリング) .before-icon-btn--download

・見出し

.level1-headingとかつける

・テーブルとかは

.table だと広い

.horizonal-tableとかvertical-tableとかつける

雑に備忘録メモ

・div要素の閉じタグにはなるべくコメントをする。

<!-- -->のやつ

めんどくさいが、emmetで|cと書けば自動補完される

・自分がいままでユーティリティクラス的書き方といっていたもの=カスケーディング

・ホバーなどでボーダーを変化させる場合、border transparentしておく

・くの字の矢印はchevron(シェブロン)と呼ばれる 

WEBでは一般的らしい

・カテゴリ名やタグ名につかうやつ .label / .badge

タグとかつけてたな。。

・上に画像、下にテキストがつくモジュールをカードと言う。

それを3カラムのときのモジュールは

.cards

.cards__item .card

みたいに続く

・CTAは「Call To Action」という 検索窓の古い方の案内とかそうかも

・料金表

.price-boxes

・モジュールの粒度

最小モジュールと複合モジュールを意識する

・モジュール≒コンポーネント

・cssのbackground-imageで設定する背景画像はhtml側にstyle属性で書く

・buttonはデフォルトでtype=submitなので、フォーム送信以外のbutton要素にはtype=buttonをつける

なんか勘違いしておりずっと消していた

・posts CMSのポストの一覧のクラス名

.postsは単純すぎて今後の異なるスタイリングのモジュールの追加二対応できない

.staff-blog-postsとかだとスタッフブログ以外に使えない

.vertical-postsがよい

・箇条書きリストul = Bullet list(ビュレットリスト)。

.bullet-list

・順序有りリストol = .order-list

・リストは囲むulにlist、liにlist__item

いままでlists、listにしてた

・display inline-flexはdisplay inline flexと同じ

・scss percentage()