FLOCSS(フロックス)

概要

「Foundation Layout Object CSS」の頭文字をとっている。OOCSSやSMACSS、BEM、SuitCSSのコンセプトを取り入れた、モジュラーなアプローチのためのCSS構成案。
FLOCSSは大きくは「Foundation」「Layout」「Object」の3つ。そして「Object」の中の「Component」「Project」「Utility」から成り立っている。
【参考】
https://haniwaman.com/template/
https://yumegori.com/flocss

クラス名のルール

FLOCSSのネーミングルールは、BEMがベースとなっている。
BEMとは異なるFLOCSS特有のルールとしては、プレフィックス(接頭辞)をつけるという点になる。「Component」には.c-、「Project」には.p-、「Utility」には.u-をそれぞれ付与する。
Modifierの命名の派生パターンとして、JavaScriptで操作されるような「状態」を表すようなModifierについては、SMACSSのStateパターンの命名を拝借し、is-*プレフィックスを付与し、.is-activeというようにすることもできる。

Foundation

要素の初期化やmixinなどのベースを設定。リセットCSSなど。サイト全体のデフォルトスタイルを管理。

  • animation:keyframesでアニメーションのパターンを指定
  • attr:独自に作成したHTML属性に関するCSSを指定
  • reset:ブラウザのデフォルトのスタイルをリセットするCSSを定義
  • base:サイトを構成する上で、デザインの基本の下地、土台となるスタイルを定義(※基本的にタグ自体にスタイルを定義すること。クラスなしの状態でも最低限の表示になることを心がける)
  • mixin:SASSで使いまわす関数を定義
  • variable:サイト全体で使える変数を定義

Layout

各ページを構成するサイト全体で共通したエリアを管理。ヘッダーやフッターなど大枠のレイアウトに関する定義。装飾はなく枠だけを用意しているイメージ。
ヘッダーやフッターの中身はp-で定義する。

  • .l-header:ヘッダー部分のレイアウト
  • .l-header–fixed:ヘッダー部分をposition:fixedで固定
  • .l-footer:フッター部分のレイアウト
  • .l-inner:サイトのインナー部分のレイアウト など

Component

再利用ができる最小限のパーツ。どの案件でも使える単位でのパーツ。(ボタンなど)
marginなど余白は定義しない。あくまでパーツとして扱う。

Project

サイト固有のまとまりを定義してパターン化するパーツ。案件に応じて追加していくパーツ。

Utility

ちょっとした調整のために使われる。余白の調整や非表示など。
すべての余白marginをUtilityクラスでつけることはしない。あくまで補助としての役割であること。

Theme

テーマによる色の切り替えなど、ページ単位の色違いとか。

External

外部リソースで読み込んだCSSを上書きするところ。
jQuery、IntersectionObserver、Lightbox、stickyfill、Swiper
など

ProjectとComponent

Componentは案件を超えて使い回せるもの。Projectはその案件だけで使えるもの。という認識。
ProjectからComponentを上書きすることはFLOCSSでは許可されている。
【参考】
https://www.ozlink.co.jp/lab/1050/

読み込む順番

正しい順番で読み込むことで破綻しにくいCSSとなる。
@use “foundation/”;
@use “layout/”;
@use “component/”;
@use “project/”;
@use “utility/**”;

FLOCSSをDart Sassで構成

@importを使ったファイルの読み込みが非推奨になるため、@useと@forwardを使ったDart Sassに切り替える必要がある。
【参考】
https://yumegori.com/dart-sass-method

  • @importは遅くとも2021年10月1日には非推奨
  • @importは遅くとも2022年10月1日にサポート終了
inserted by FC2 system