46

CSSにもオブジェクト指向を - OOCSSことはじめ

Embed Size (px)

DESCRIPTION

変更に強いフロントエンドをつくるにはどうすれば良いか? 従来のCSSの問題点を簡単な事例とともに、「オブジェクト指向CSS(OOCSS)」の導入例を紹介。 また、OOCSSをサポートする考え方やツールも簡単に紹介する。

Citation preview

Page 1: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 2: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 3: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 4: CSSにもオブジェクト指向を - OOCSSことはじめ

Twitter: @irration

Blog: http://kinokoru.jp/

Page 5: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 6: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 7: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 8: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 9: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 10: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 11: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 12: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 13: CSSにもオブジェクト指向を - OOCSSことはじめ

こういうクラスが仕様変更を重ねてCSSの随所で誕生。

.messagebox_bold {border-width: 2px;font-weight: bold;

}

.other_box_round_bold {border-radius: 5px;border-width: 2px;font-weight: bold;

}.another_box_round {border-width: 5px;

}

Page 14: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 15: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 16: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 17: CSSにもオブジェクト指向を - OOCSSことはじめ

ケース1: 「あ、サイトの随所にあるボックスの線の太さなんだけど、やっぱ3pxにしてくんない?」

.messagebox_bold {border-width: 2px;font-weight: bold;

}

. other_box_bold {border-radius: 5px;border-width: 2px;font-weight: bold;

}.another_box_round {border-radius: 5px;

}

Page 18: CSSにもオブジェクト指向を - OOCSSことはじめ

えっと…このクラスとこのクラスか…

.messagebox_bold {border-width: 2px;font-weight: bold;

}

.another_box_round {border-radius: 5px;

}

. other_box_bold {border-radius: 5px;border-width: 2px;font-weight: bold;

}

Page 19: CSSにもオブジェクト指向を - OOCSSことはじめ

ケース2:「随所にあるボックスの枠線の角なんだけど、丸みを3pxにしてほしいのね」

.messagebox_bold {border-width: 2px;font-weight: bold;

}

. other_box_bold {border-radius: 5px;border-width: 2px;font-weight: bold;

}.another_box_round {border-radius: 5px;

}

Page 20: CSSにもオブジェクト指向を - OOCSSことはじめ

今度はこことここか…

.messagebox_bold {border-width: 2px;font-weight: bold;

}

.another_box_round {border-radius: 5px;

}

. other_box_bold {border-radius: 5px;border-width: 2px;font-weight: bold;

}

Page 21: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 22: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 23: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 24: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 25: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 26: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 27: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 28: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 29: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 30: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 31: CSSにもオブジェクト指向を - OOCSSことはじめ

でも今度はこうなって、結局修正箇所が多いのは変わらないんじゃないの?

.messagebox.bold {border-width: 2px;

}

.another_box.bold {border-width: 2px;

}

. other_box.bold {border-width: 2px;

}

Page 32: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 33: CSSにもオブジェクト指向を - OOCSSことはじめ

ざっくり言うと前述のOOCSS記法に対して

さらに「モジュール化」という概念を加えたもの

Page 34: CSSにもオブジェクト指向を - OOCSSことはじめ

モジュールごとの管理でどこを修正すれば何が変わるのかわかりやすくなる。

./mod/messagebox.css

./mod/form.css

./mod/navigationlist.css:

./layout/header.css

./layout/navigationarea.css

./layout/content.css

./layout/three_column.css:

./main.css

Page 35: CSSにもオブジェクト指向を - OOCSSことはじめ

SMACSSの詳細

日本語・電子書籍版(有料$15)https://smacss.com/ja

英語・Web版(無料)http://smacss.com/

Page 36: CSSにもオブジェクト指向を - OOCSSことはじめ

モジュール化で修正は楽になるけど一々mainファイルに統合するの

面倒だよ!

Page 37: CSSにもオブジェクト指向を - OOCSSことはじめ
Page 38: CSSにもオブジェクト指向を - OOCSSことはじめ

Grunt ?

とにかく色んなものが自動化できるよ!

(例) JS の uglify, 複数ファイルの結合, ファイル変更の監視, …

Page 39: CSSにもオブジェクト指向を - OOCSSことはじめ

おまけ

Page 40: CSSにもオブジェクト指向を - OOCSSことはじめ

SaSS(SCSS) + Compass

CSSで変数使ったり、ネストできたり、

OOCSSと親和性が高い。Gruntでコンパイルの自動化可能。

Page 41: CSSにもオブジェクト指向を - OOCSSことはじめ

.box{

/* box スタイルの記述 */

.inner {/* .box .inner スタイルの記述 */

.deeper {/* .box .inner .deeper スタイルの記述*/

}

}

&.green {/* .box.green スタイルの記述 */

}

}

.box{/* box スタイルの記述 */

}

.box .inner {/* .box .inner スタイルの記述 */

}

.box .inner .deeper {/* .box .inner .deeper スタイルの記述 */

}

box.green {/* .box.green スタイルの記述 */

}

例えば・・・CSS SaSS(SCSS)

Page 42: CSSにもオブジェクト指向を - OOCSSことはじめ

$content_width: 960px;

.header_inner {width: $content_width;

}

.nav {width: $content_width;

}

.footer_inner {width: $content_width;

}

::

.header_inner {width: 960px;

}

.nav {width: 960px;

}

.footer_inner {width: 960px;

}

::

例えば・・・CSS SaSS(SCSS)

Page 43: CSSにもオブジェクト指向を - OOCSSことはじめ

修正が楽になる!修正漏れが減る!

Page 44: CSSにもオブジェクト指向を - OOCSSことはじめ

というわけで…

Page 45: CSSにもオブジェクト指向を - OOCSSことはじめ

OOCSSをはじめると良いことあるかも。

Page 46: CSSにもオブジェクト指向を - OOCSSことはじめ

ありがとうございました