0
1

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.

はじめに

皆さんCSSを書くときに設計は取り入れていますでしょうか。
SMACSSやBEMなど様々あると思いますが自分は業務上FLOCSSを使う事が多くあるんですが今だに迷うことがあったりすることがあります。
そこで今回は(自分の為に)基本原則などを自分なりにまとめてみようと思います!

この記事は順次更新していきたいなと思っています。

まずFLOCSS is 何?

FLOCSSとは

いくつかある有名なCSS設計手法の中のひとつで、その有名どころのOOCSSやSMACSS、BEM、SuitCSSのコンセプトを取り入れたのがFLOCSSです。オブジェクト志向で設計されています。

上述した設計の良いところを取り入れて作られたのがFLOCSSという事ですね!

基本原則

FLOCSSは基本的に3つのレイヤーとObjectの子要素のレイヤーで構成されています。

1. Foundation

このレイヤーではサイトで使用するデフォルトスタイルを管理します。
そのプロジェクトで使用する基本的なスタイルの定義ですね。
base.scss
reset.scss
mixin.scss
...etc

2. Layout

ヘッダーやフッターなど大枠のレイアウトに関する定義をこちらのレイヤーで定義します。
l-header.scss
l-footer.scss
...etc

3. Object

サイト全体で利用ができるモジュールを管理する。
細かく以下の3つに分けられます。

3-1 Component

再利用が可能な最小単位のパーツ、基本的にどのページであっても使用出来るのが好ましいと思ってます。
c-btn
c-card
...etc

3-2 Project

サイト固有で使用するパーツ、Componentと他の要素が集まったものがProjectに当たります。
p-article
p-contact
...etc

3-3 Utility

Component, Projectのモディファイアで解決することができないスタイルをここに記述していきます。
要するに細かく見た目の調整を行うときにUtilityにスタイルを定義することが多いです
u-text
u-color
u-size
...etc

色々ここに書きましたがFLOCSS作者様がGithubに詳しく詳細を書いてくださっているのでご興味を持たれた方は是非こちらを参照してください

FLOCSS

ComponentとProjectの使い分け難しい問題

これは非常にわかります、僕自身今でも結構な頻度で「え、これどっち?」ってなっています。

上述しましたがComponentは最小単位のパーツを定義する部分なのでc-~で命名しようと思ったときにこれ以上細分化出来ないかどうかで判断するといいと思います。
例えばc-cardとした時にそのカード内はそれ以上細分化することは出来ないのかどうか。

出来ないのであればComponentが適切だと思いますが出来そうなのであればそれはProjectにしてしまった方がいいのでは?と個人的には思っています。
あくまでProjectはComponentの集まりだと思っているのでこのような考え方で命名していけば問題ないのかなと思います。

命名規則について

FLOCSSではMindBEMdingという命名規則が使われています。

MindBEMdingって?

MindBEMdingとはBlock, Element, Modifierで構成する命名規則。
・Block:構成の元となる要素、機能上独立したページの構成要素で、再利用できるもの
・Element:Blockの中に存在する子要素、構成要素、そして別Blockに移動すると使えないもの
・Modifier:BlockまたはElementが変化した状態の要素、見た目や状態、挙動を定義するもの

必ずBlockが一番先頭に来て、そのあとにElementやModifierが付く形となる。
Elementが付く場合はアンダースコア二つで区切り、Modifierが付く場合にはハイフンで区切る

  1. Block : 一番大きな塊 ElementとModifierの親に当たる p-footer 例)
  2. Element : __で繋げる、Blockの中で使われる部品 p-footer__label 例)
  3. Modifier : --で繋げる、BlockやElementと見た目が異なるもの(少し小さい、色が違うなど) p-footer__label--small 例)
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?