A GOOD CSSAND SASS ARCHITECTURE
#main-nav ul li ul { }
#content article h1:first-child { }
#sidebar > div > h3 + p { }
50.
A GOOD CSSAND SASS ARCHITECTURE
.widget {
position: absolute;
top: 20px;
left: 20px;
background-color: red;
font-size: 1.5em;
text-transform: uppercase;
}
51.
A GOOD CSSAND SASS ARCHITECTURE
.widget {}
.widget .title {}
.widget .content {}
.widget .action {}
52.
A GOOD CSSAND SASS ARCHITECTURE
<div class="widget">
<h3 class="title">...</h3>
<div class="content">
Lorem ipsum dolor sit amet,
adipiscing elit.
In condimentum justo et est dapibus sit
amet euismod ligula ornare.
Vivamus elementum accumsan dignissim.
<button class="action">Click Me!</button>
</div>
</div>
53.
A GOOD CSSAND SASS ARCHITECTURE
.widget .title {
background-color: green;
color: #FFFFFF;
}
.widget .title
54.
A GOOD CSSAND SASS ARCHITECTURE
.title {
border-left: 10px solid black;
padding: 5px 10px;
font-size: 24px;
}
.title
A GOOD CSSAND SASS ARCHITECTURE
/* High risk */
.widget { }
.widget .title { }
/* Low risk */
.widget { }
.widget-title { }
69.
A GOOD CSSAND SASS ARCHITECTURE
<div class="widget">
<h3 class="widget-title">...</h3>
<div class="widget-content">
Lorem ipsum dolor sit amet,
adipiscing elit.
In condimentum justo et est dapibus sit
amet euismod ligula ornare.
Vivamus elementum accumsan dignissim.
<button class="widget-action">Click Me!</
button>
</div>
</div>
A GOOD CSSAND SASS ARCHITECTURE
.widget { }
.widget-sidebar { }
.widget-title { }
73.
A GOOD CSSAND SASS ARCHITECTURE
.widget { } .widget
.widget-sidebar
.widget
.widget-title
.widget-sidebar { }
.widget-title { }
74.
A GOOD CSSAND SASS ARCHITECTURE
.widget { } .widget
.widget-sidebar
.widget
.widget-title
.widget-sidebar { }
.widget-title { }
Modifier
Sub-Component
75.
A GOOD CSSAND SASS ARCHITECTURE
.widget-sidebar { }
.widget { }
76.
A GOOD CSSAND SASS ARCHITECTURE
.widget-sidebar { }
.widget { }
Modifier OR Sub-Component ?
77.
A GOOD CSSAND SASS ARCHITECTURE
.widget-sidebar { }
.widget { }
Modifier OR Sub-Component ?
.widget-sidebar .widget
.widget-sidebar
78.
A GOOD CSSAND SASS ARCHITECTURE
Yandex - BEM
http://bem.info/
79.
A GOOD CSSAND SASS ARCHITECTURE
Block Element Modifier
80.
A GOOD CSSAND SASS ARCHITECTURE
.block__element_modifier {}
the BEM SYSTEM
81.
A GOOD CSSAND SASS ARCHITECTURE
Influenced by the BEM SYSTEM
.component-name--modifier {}
.component-name__sub-component {}
Nicolas Gallagher - About HTML semantics and front-end architecture
http://nicolasgallagher.com/about-html-semantics-front-end-architecture
http://enja.studiomohawk.com/2012/03/20/about-html-semantics-and-front-end-architecture/
82.
A GOOD CSSAND SASS ARCHITECTURE
/* Modifier */
.widget--sidebar { }
/* Sub-Component */
.widget__title { }
83.
A GOOD CSSAND SASS ARCHITECTURE
“
class名が決まれば
我々の仕事の
90%は終わったも同然
@CSS Radar
http://twitter.com/cssradar
84.
A GOOD CSSAND SASS ARCHITECTURE
ARCHITECTURE
A GOOD CSS
FOR MUCH BETTER CODING
AND SASS
A GOOD CSSAND SASS ARCHITECTURE
.clearfix:after,.btn_type2_A:after,.bnavi
ul:after,.box_3col:after,.userData
dl:after,.likeTool:after,.likeUser ul:after,.commentUser
ul:after,.userData:after,.circleList li
a:after,.time_count:after,.paging
ul:after,.myData:after,.status:after,.bar:after,.month:after,.mo
nth2:after,.about:after,.sort:after,.mainList
ul:after,.mainList2 li
ul:after,.bnr_2col:after,.likeTool_lp:after,.flow:after,.radio:a
fter,.btn_entry_2col:after,.sort2:after,ul#popup_message:after,.
sort3:after,.f_circleList:after,.f_circleList a:after,.mainList3
dl:after,.mainList3 ul:after,.box_2col:after,.frame_desc
dl:after {
content: "";
display: block;
clear: both;
height: 0;
}
CSS
120.
A GOOD CSSAND SASS ARCHITECTURE
セマンティック = コンテンツ派生?
121.
A GOOD CSSAND SASS ARCHITECTURE
“
Nicolas Gallagher - About HTML semantics and front-end architecture
http://nicolasgallagher.com/about-html-semantics-front-end-architecture
http://enja.studiomohawk.com/2012/03/20/about-html-semantics-and-front-end-architecture/
どんな名前が使われようと
意味があり目的がある。
Not all semantics need to be content-derived. Class names cannot be
“unsemantic”. Whatever names are being used: they have meaning, they
have purpose.
122.
A GOOD CSSAND SASS ARCHITECTURE
ARCHITECTURE
A GOOD CSS
FOR MUCH BETTER CODING
AND SASS
123.
A GOOD CSSAND SASS ARCHITECTURE
不要な子孫セレクタを減らす
タグ+ID,クラスセレクタを無くす
カテゴリに分類する
HTMLに構造に依存したセレクタを見直す
再利用しやすいクラスセレクタに置き換える
繰り返すルールセットをモジュールにする
プロパティの継承を利用する
不要な!importantを減らす
プロパティの順番をそろえる
124.
A GOOD CSSAND SASS ARCHITECTURE
不要な子孫セレクタを減らす
タグ+ID,クラスセレクタを無くす
カテゴリに分類する
HTMLに構造に依存したセレクタを見直す
再利用しやすいクラスセレクタに置き換える
繰り返すルールセットをモジュールにする
プロパティの継承を利用する
不要な!importantを減らす
プロパティの順番をそろえる
125.
A GOOD CSSAND SASS ARCHITECTURE
div.header ul.list {}
.widget ul li a {}
126.
A GOOD CSSAND SASS ARCHITECTURE
div.header ul.list {}
.widget ul li a {}
.header .list {}
.widget li > a {}
127.
A GOOD CSSAND SASS ARCHITECTURE
不要な子孫セレクタを減らす
タグ+ID,クラスセレクタを無くす
カテゴリに分類する
HTMLに構造に依存したセレクタを見直す
再利用しやすいクラスセレクタに置き換える
繰り返すルールセットをモジュールにする
プロパティの継承を利用する
不要な!importantを減らす
プロパティの順番をそろえる
128.
A GOOD CSSAND SASS ARCHITECTURE
不要な子孫セレクタを減らす
タグ+ID,クラスセレクタを無くす
カテゴリに分類する
HTMLに構造に依存したセレクタを見直す
再利用しやすいクラスセレクタに置き換える
繰り返すルールセットをモジュールにする
プロパティの継承を利用する
不要な!importantを減らす
プロパティの順番をそろえる
129.
A GOOD CSSAND SASS ARCHITECTURE
不要な子孫セレクタを減らす
タグ+ID,クラスセレクタを無くす
HTMLに構造に依存したセレクタを見直す
再利用しやすいクラスセレクタに置き換える
繰り返すルールセットをモジュールにする
プロパティの継承を利用する
不要な!importantを減らす
プロパティの順番をそろえる
カテゴリに分類する
A GOOD CSSAND SASS ARCHITECTURE
// master.scss
// Base
@import "base"; // _base.scss
// Layout
@import "layout"// _layout.scss
// Module
@import "module"; // _module.scss
// State
@import "state"; // _state.scss
// Theme
@import "theme"; // _theme.scss
139.
A GOOD CSSAND SASS ARCHITECTURE
sass/
_base.scss
_layout.scss
_module.scss
_state.scss
_theme.scss
master.scss
140.
A GOOD CSSAND SASS ARCHITECTURE
sass/
_base.scss
_layout.scss
module/
_state.scss
_theme.scss
master.scss
_navigation.scss
_message.scss
_button.scss
141.
A GOOD CSSAND SASS ARCHITECTURE
// master.scss
// Base
@import "base";
// Layout
@import "layout"
// Module
@import "module/button";
@import "module/navigation";
@import "module/message";
// State
@import "state";
// Theme
@import "theme";
142.
A GOOD CSSAND SASS ARCHITECTURE
カテゴリに分類する
HTMLに構造に依存したセレクタを見直す
再利用しやすいクラスセレクタに置き換える
繰り返すルールセットをモジュールにする
不要な子孫セレクタを減らす
タグ+ID,クラスセレクタを無くす
プロパティの継承を利用する
不要な!importantを減らす
プロパティの順番をそろえる
143.
A GOOD CSSAND SASS ARCHITECTURE
“
時期尚早な最適化は
すべての悪の根源である
Programmers waste enormous amounts of time thinking about, or
worrying about, the speed of noncritical parts of their programs, and
these attempts at efficiency actually have a strong negative impact when
debugging and maintenance are considered. We should forget about
small efficiencies, say about 97% of the time: premature optimization is
the root of all evil. Yet we should not pass up our opportunities in that
critical 3%.
Donald E, Knuth - Structured Programming With Go To Statements
http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
144.
A GOOD CSSAND SASS ARCHITECTURE
Refactoring: Improving the Design of Existing Code
http://www.amazon.com/dp/0201485672/
A GOOD CSSAND SASS ARCHITECTURE
StyleDocco
http://jacobrask.github.io/styledocco/
156.
A GOOD CSSAND SASS ARCHITECTURE
ステキなCSSスタイルガイドを生成する「styleDocco」の導
入とgrunt.jsでの自動化のメモ
http://mnemoniqs.com/web/styledocco/
StyleDoccoによるCSSスタイルガイドの導入
http://ameblo.jp/ca-1pixel/entry-11453624925.html
157.
A GOOD CSSAND SASS ARCHITECTURE
ARCHITECTURE
A GOOD CSS AND SASS
FOR MUCH BETTER CODING
158.
A GOOD CSSAND SASS ARCHITECTURE
THANK YOU!
twitter.com/hiloki
github.com/hiloki
inkdesign.jp
159.
A GOOD CSSAND SASS ARCHITECTURE
CREDIT
http://www.flickr.com/photos/26026745@N00/5378467111/
http://www.flickr.com/photos/bdesham/2432400623/
http://www.flickr.com/photos/franksvalli/7572634222/
http://www.flickr.com/photos/franksvalli/5173283924/
http://www.flickr.com/photos/darice/8526800143/
http://www.flickr.com/photos/hfiguiere/4802869688/