14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

flocssについてまとめてみた

Last updated at Posted at 2017-11-15

flocssについてまとめてみた

最近flocssを触っているのでいいタイミングだと思い今回まとめてみました。

flocssとは

cssの設計思想の一つで、OOCSS、SMACSS、BEMなどのコンセプトが取り入れられています。

cssでありがちなこと

基本原則

flocssでは次のようなレイヤーで構成されます。

- css/
    - foundation
    - layout
    - object
        - component
        - project
        - Utility

foundation

ブラウザのデフォルトスタイルの初期化(Reset.cssやNormalize.cssなど)や、プロジェクトにおける基本的なスタイルを定義をする場所。

layout

header,footer,メインコンテンツなどのページを構成する大枠の部分を指定する場所。
基本的にはページ内で唯一の存在になるのでIDを使用するのも可能だが、IDセレクタは高い詳細度を持つため、
接頭辞(l-◯◯など)をつけた命名規則を採用するか,[id="header"]のように属性セレクタを使用することが推奨されている。

object

OOCSSのコンセプトを元に、プロジェクトで繰り返されるビジュアルパターンをすべてObjectと定義します。

  • FLOCSSでのObjectは次のレイヤーに分けられます。

component

再利用できる小さな単位のモジュールを定義する場所。
※最低限の機能を持つものとして定義され、それ自体が固有の幅や色などを持つことは避けるべき。

project

プロジェクト固有のパターンで、いくつかのcomponentだったり、それに該当しない要素で構成されるもの定義する場所。

utility

projectやcomponentをむやみやたらに増やさないように
細かいスタイル調整の便利なクラスなどを定義する場所。

例えば、component間のmarginやpaddingの調整など。

命名規則

命名規則はBEMから派生したMindBEMdingを採用しています。
Block、Element、Modifierを略してBEMと言います。
Blockは大枠、Elementは大枠内のパーツ()、Modifierは大枠、または大枠内のパーツの状態が違うとき。
軽く説明するとこんな感じです。

component

接頭辞としてc-をつけます。

project

接頭辞としてp-をつけます。

utility

接頭辞としてu-をつけます。

カスケーディング

モジュール間の上書きや、他のモジュールを親とする上書きは原則禁止になっています。

.c-box {}
.c-button {}
.c-box .c-button {} //これはだめ
.p-mypage {}
.p-mypage .p-boxList {} //これはだめ

ただし、projectからcomponentモジュールは変更できます。

.c-button {}
.p-mypage .c-button {}

まとめ

bem周りは割と適当に書いてしまいましたが、別記事で書いてあるのでぜひ。↓
https://qiita.com/w-tdon/items/681d46e4b0d018ca54ff

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?