CSS設計について思うことをメモとして書いていく
基本はFLOCSS
をベースに拡張している。
Sassはdart-sassを使用する。
ファイル構成
- css-root
- component
- funndation
- layout
- _footer.scss
- _header.scss
- index.scss
- block
- pager.scss
- table.scss
- page
- company.scss
- contact.scss
- utility
layout
ディレクトリ以下にindex.scss
を用意し他のlayoutモジュールをimportする。
component
ディレクトリ以下のindex.scss
最終的に一つのCSSファイルに結合するディレクトリはlayout
ディレクトリとcomponent
ディレクトリのみ
page
ディレクトリとblock
ディレクトリが存在理由はFLOCSSでいうProject
の扱いが難しいと感じる場面が度々あったためである。
更にいうとクラス名などの命名で迷う場面と直面する。
使い回すことを考えると、クラス名の抽象度は高くなる。Project
内に配置されるクラス名はこの命名を考える際に結構な頻度でボトルネックになることがある。
その解決策として、FLOCSS
でいうProject
ディレクトリをpage
ディレクトリとblock
ディレクトリとして分離させた。
リファクタリングをする時に使い回す可能性のあるクラスをblock
ディレクトリ内に転記する。
// /layout/index.scss
@use 'footer';
@use 'header';
...
CSSにはTypeScriptのような型が無いためどうしても、「「「運用でカバー!」」」なところが出できてしまっている。
この悪しき風習を少しでも改善するためにCSS設計やルールは必要なことだと思う。