3
2

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 5 years have passed since last update.

1日目 CSS設計の概念について(初学)

Last updated at Posted at 2019-06-20

1日目 css設計の概念についてざっくりまとめ

今日初めてcss設計について学んだので、
軽くまとめておきます。

1. CSS設計ってなんだ?

煩雑なcssにならない為に、決められた規則に則って記述する。

CSS設計のいいところ
・予測しやすい
・再利用しやすい
・拡張がしやすい
・保守がしやすい

逆に破綻しやすいコード(やってはいけないもの)

HTMLの記述に依存しているもの

h1 {
  background: #fff; /* h1がpタグに変更になったら,,? */
}

→場合にもよるが、クラス名を付与して管理する方が良い

スタイルを打ち消しているもの

<!-- HTML -->
<p class="box">四角</p>
<p class="box underline">下線だけ</p>
/*css*/
.box {
  background: #fff;      /*ホワイト*/
  border: 1px solid #ededed;
}
.underline {
  background: #000;    /*ブラック、上のホワイトをわざわざ打ち消している*/
}

無駄が多い。

③絶対値を多用する

.box {
   width: 368px;
   height: 200px;
   margin: 30px 60px;
}

パーセントなどの相対値を用いることで、
メンテナンスしやすくなる。

④指定がむやみに多い

div.box {               /*.boxで十分*/
   background: #fff; 
}

div.box dd p {          /* クラス名を付与する等で解決*/
   background: #fff;
}

詳細度をむやみにあげてしまい、
後から書いたコードがうまく効かなくなる。
下記のように、セレクトを限定的にかく方が、管理が容易になる。

.nav li {
   list-style: none;
}

.nav > li {
   list-style: none;   /*こちらの方がより限定的*/
}

CSS設計の考えを用いれば、より管理しやすくなる!
CSS設計はコンポーネント設計の考え方の一つ。
コンポーネント設計・・・一つ一つを部品化し、分離させる。

2.代表的なCSS

2-1. OOCSS

共通部分をまとめて記述し、それ以外の個別部分を別のクラスで管理する。
例えば同じ大きさの吹き出しで、背景が異なるものを二つ記述するとき、

.balloon01 {          /*共通部分*/
   height: 100px;
   width: 100px;
}

.color01 {          /*異なる部分を分けてかく*/
   background: #fff;    
}
.color02 {
   background: #eee;
}

→再利用はしやすいが、一つに多くのクラスを付与しないといけない場合がある。

2-2. BEM

Block Element Modifier の略。
この三つの概念に分けてCSSを記述していく。

Block
大枠。ナビリストや一つの吹き出し、ボタンリストなど。
例) .nav, .container


Element
Blockを構成する要素。
block名+アンダーコア二つ+エレメント名で記述する。
例).nav__comment

こうすることで、そのブロック外で使用してはいけないことを示すことができる。


Modifier
状態変化を表す。
block名__要素__modifier で表す。
例).nav__comment_alert


しかし、単にアンダースコアを命名したい場合、
どこまでがどの役割かがわからない!

MindBEMding

Elementをアンダースコア二つ、
Modifierをハイフン二つで区切る命名規則!
例).nav__comment--alert

欠点:クラス名が長くなりがち

2-3. FLOCSS

クラスを3つに分類する。

Foundation
デフォルトの初期化や基本的な全体設定など、ページの下地となるもの。

Layout
ページを構成する大枠の要素。
ヘッダーやサイドバー、コンテナーブロックなど。


Object
Objectはさらに三つに分類されている。

-component
使い回しのきく小さな単位のコンポーネント。
接頭辞に-cをつける。

-Project
そのページ独自で使用されているもの。
ページの多くの部分をしめる。
接頭辞に-pをつける。

-Utility
上記に合致しない、わずかな調節のためのお助けクラス。
接頭辞に-uをつける。


Modifierの考えがFLOCSSにもある!?
→接頭辞にis-をつける。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?