Movatterモバイル変換


[0]ホーム

URL:


Mayu Kimura, profile picture
Uploaded byMayu Kimura
76,066 views

今必要なCSSアーキテクチャ

下記勉強会の発表資料です。---------------------------------------------------------使いたくなる UI をつくる! フロントエンド 勉強会 : ATNDhttp://atnd.org/events/42371---------------------------------------------------------

Embed presentation

Downloaded 145 times
今必要なCSSアーキテクチャ株式会社オープンストリーム木村茉由1photo:  h(p://www.flickr.com/photos/22439010@N04/7864852790
アジェンダ•  自己紹介•  なぜ今CSSアーキテクチャなのか•  OOCSSの紹介•  SMACSSの紹介•  OOCSS、SMACSSへの素朴な疑問•  まとめ2
自己紹介はじめましての方が多いかと思いますので…。3
自己紹介•  株式会社オープンストリーム所属•  フロントエンドアーキテクト•  好きなものはJavaScriptとおうどんです•  最近翻訳にハマってます(InfoQ)•  主催者側の人間なのに、一番勉強会のテーマからズレててすみません…。•  Twitter:@kimura_m_29 4
なぜ今CSSアーキテクチャなのかそんな大げさな…と思われた方へ5
6CSSにアーキテクチャとかあるの?
7CSSなんてコピペでどうにかなるよね
8…
9本当にそれで大丈夫?
なぜ今CSSアーキテクチャなのか→そもそも、CSSはカオスになりやすい10
なぜ今CSSアーキテクチャなのか1.  すべての定義がグローバル→影響範囲が甚大※<style>タグのscoped属性親要素およびその子孫要素に対してのみ、スタイルを適用する2.  HTMLの構造に依存しがち=壊れやすい#main  .news  .topics  ul  li  ul  li  {          color:  black;            font-­‐size:  0.8em;  }  11HTMLの構造が変わったら  適用されなくなる><Firefox 21.0〜のみ対応
なぜ今CSSアーキテクチャなのか3.  スタイル定義の表現が自由すぎる1.  用途不明のスタイル定義がある2.  セレクタがえらく長い4.  スタイルの優先度の決定方法1.  セレクタの優先度を上げる1.  詳細にする→HTMLの構造への依存度UP!2.  最後の切り札『!important』.blue  {  color:  blue;  }  .main,  .menu  ul  li,  .comments,  .infos,  .sidebar  .component  .?tle  {  …  }  12どこにも使ってないものが混ざっていたり…。※CSSの優先度について↓!important だらけの CSS にお別れを | WWW WATCH
なぜ今CSSアーキテクチャなのかそんなCSSですが…。•  リッチUIな大規模Webアプリケーション•  モバイル向けのHTML/CSS/JavaScript– モバイル向けサイト、アプリ(PhoneGap等)→CSSの運用・保守性、パフォーマンス大事!(モバイルの場合、よりシビア)13CSSのファイルサイズをなるべく小さく!
14でも、どうすれば良いのか…!photo:  h(p://www.flickr.com/photos/59489479@N08/9269503551
OOCSSの紹介  オーオーシーエスエスと読みます15
OOCSSの紹介•  2009年にNicole Sullivanが提唱したCSSの設計方法–  Object Oriented CSS•  目的より良いCSSを書くことで以下を実現する1.  再利用しやすく2.  拡張しやすく3.  メンテナンスしやすく4.  ファイルサイズ小さく5.  パフォーマンス向上 etc...16“WE  WANT  A  LOT!”  by  Nicole  Sullivan  
17“Components are like legos”Object Oriented CSShttp://www.slideshare.net/stubbornella/object-oriented-cssphoto:  h(p://www.flickr.com/photos/48763139@N00/2432400623
OOCSSの2つの原則1.  Separate Structure and Skin(構造と見た目の分離)コンポーネントに対するスタイルの種類ごとに、別々のセレクタにスタイルを定義する1.  レイアウトを定義するスタイル1.  ポジション、サイズ等2.  見た目を定義するスタイル1.  ボーダーやフォントカラー等1.  バリエーションが増えやすい18
OOCSSの2つの原則:具体例1          19.widget-­‐basic  {          width:  15em;          height:  15em;          background-­‐color:  white;          color:  black;  }  .widget-­‐primary  {          width:  15em;          height:  15em;          background-­‐color:  blue;          color:  white;  }  CSS  .widget  {          width:  15em;          height:  15em;  }  .basic  {          background-­‐color:  white;          color:  black;  }  .primary  {          background-­‐color:  blue;          color:  white;  }  CSS  <div  class=“widget-­‐basic”></div>  <div  class=“widget-­‐primary”></div>  HTML  <div  class=“widget  basic”></div>  <div  class=“widget  primary”></div>  HTML  レイアウト見た目パターンが増えたら…?
OOCSSの2つの原則2.  Separate Container and Content(コンテナとコンテンツの分離)ページを構成する主要なコンテナと、その子要素であるコンテンツとの間に依存関係を持たせない20
OOCSSの2つの原則:具体例2          21.menu  {          (共通スタイル)  }  .sub-­‐menu  {          (拡張スタイル)  }  CSS  .main  ul,  .sub  ul  {          (共通スタイル)  }  .sub  ul  {          (拡張スタイル)  }  CSS  <div  class=“main”>          <ul>...</ul>  </div>  <div  class=“sub”>          <ul>...</ul>  </div>  HTML  <div  class=“main”>          <ul  class=“menu”>...</ul>  </div>  <div  class=“sub”>          <ul  class=“menu  sub-­‐menu”>                  ...          </ul>  </div>  HTML  適用したい要素が増えたら…?マルチクラスパターン
OOCSSのその他のプラクティス•  Avoid singletons(IDセレクタの利用を避ける)– id属性値は同一ページ内でユニークでなくてはならないため、再利用できない– セレクタの優先順位が高いため、もしもの時のスタイル上書きは『!important』を使うしかない22#widget  {  …  }  #footer  a  {  …  }  
SMACSSの紹介  スマックスと読みます23
SMACSSの紹介•  2012年にWebデザイナーのJonathan  Snookが提唱したCSSの設計方法– Scalable  and  Modular  Architecture  for  CSS  – Ebook(日本語版)  •  OOCSSの流れをくんでいる  24
SMACSSの5つのカテゴリSMACSSでは、CSSのスタイル定義を下記のカテゴリに分類して行うことを推奨している    1.  ベース  2.  レイアウト  3.  モジュール  4.  状態(ステート)  5.  テーマ    それぞれを別ファイルに分けて管理する  →スタイル定義の複雑さをなくす25
1. ベース26
1. ベース•  その名の通り、ベースとなるスタイルを定義  •  基本的に要素セレクタを用い、クラスやIDセレクタは使わない  •  ブラウザのデフォルトスタイルをクリアするリセットCSSはここで定義する27html,  body  {          margin:  0;          padding:  0;  }  a:hover  {          color:  #039;  }  
2. レイアウト28
2. レイアウト•  主要なコンポーネント(ページヘッダやサイドメニュー、メイン記事等)のスタイルを定義  •  伝統的にIDセレクタが使われることが多い  •  主要コンポーネント間で共通化できるスタイルはクラスセレクタを用いる  29#header,  #ar?cle,  #footer  {          width:  960px;          margin:  auto;  }  
3. モジュール30
3. モジュール•  主要なコンポーネントに含まれる、小さなコンポーネント(入力フォームやモーダル等)のスタイルを定義  •  モジュールはそれ単体でスタイルが独立していて、配置場所が変わってもスタイルが崩れないようにする  •  クラスセレクタを使用する(再利用が前提)  31.module  >  h2  {          padding:  5px;  }  
3. モジュールカテゴリのプラクティス•  要素セレクタを避ける  32/*  フォルダーモジュール  */  .fld  li  {          padding-­‐le_:  20px;          background:  url(folder.png);  }  CSS  <div  class=“fld”>          <ul>                  <li>Aフォルダ</li>                  <li>bbb.txt</li>   ←  NEW!          </ul>  </div>  HTML  <div  class=“fld”>          <ul>                  <li  class=“fld-­‐name”>Aフォルダ</li>                  <li  class=“fld-­‐item”>bbb.txt</li>          </ul>  </div>  HTML  ファイル名の横にも  フォルダアイコンが…!/*  フォルダーモジュール  */  .fld-­‐name  {          background:  url(folder.png);  }  CSS  
4. 状態(ステート)33
4. 状態(ステート)•  活性・非活性、表示・非表示、成功・失敗などの状態をあらわすスタイルを定義    •  主にJavaScriptのコードから主要コンポーネントやモジュールに付与する  34.is-­‐ac?ve  {        font-­‐weight:  bold  !important;  }  $(‘.tab’).on(‘click’,  func?on  ()  {          //  クリックされたタブに活性化スタイルを付与          $(this).addClass(‘is-­‐ac?ve’);  });  ※他のタブの活性化スタイル除去は割愛既存スタイルを上書きすることが多いので、『!important』解禁!  (※ご利用は計画的に)
5. テーマ35
5. テーマ•  テーマ切り替え用のスタイルを定義  •  あまり活躍する場面はないかも…。  36/*  theme-­‐purple.cssで定義  */  .theme-­‐border  {          border-­‐color:  purple;  }  
OOCSS、SMACSSへの素朴な疑問私はこういうところに引っかかりました37
class属性値の数が多くなりそう><•  はい、多くなります!  – HTMLをシンプルに保つ=CSSが頑張る  •  CSSの頑張りは、HTMLの構造への依存を高めてしまう  •  HTMLの構造変更に影響を受けやすくなる  38<div  id=“snsArea”>          <bufon>                  Twiferでつぶやく          </bufon>  </div>  HTML  <div  id=“snsArea”>          <bufon  class=“btn  btn-­‐sns”>                  Twiferでつぶやく          </bufon>  </div>  HTML  
classが全然セマンティックじゃない気が…?•  はい、その通りです!  – そもそも、セマンティックである必要があるのか  •  たしかに、HTML5の仕様に書いてあるけど…。  –  CSSの運用・保守性を犠牲にしてまで、守るべきものかどうか  •  Microformats(class属性)→Microdata(独自属性)39<bufon  class=“twiferBufon”>          Twiferでつぶやく  </bufon>  HTML  <bufon  class=“btn  btn-­‐sns”>          Twiferでつぶやく  </bufon>  HTML  
DOM操作のパフォーマンス向上を考えると、やっぱりid属性使いたいよ…!•  はい、仰るとおりです!  – id属性はJavaScriptが参照するものとして使う  – JavaScript用のid、classはプリフィックスに「js-­‐」を付ける  •  用途が明確になる  •  HTMLから未使用のclass属性値を消しやすくなるかも  40<bufon  class=“btn  btn-­‐sns”  id=“js-­‐twiferBufon”  >          Twiferでつぶやく  </bufon>  HTML  
まとめ  長々お付き合いありがとうございました!41
まとめ•  やっぱり、銀の弾丸はありません><  – 引き出しを多く持っておき、状況に応じて適用するというアプローチになる  – バランス感覚も重要  •  CSSもコードレビューが必要ですね…。  – CSSLintの採用も良さそう  •  OOCSSのNicole Sullivanが関わっています  •  今【だけじゃなく、むしろ未来にとって】必要なCSSアーキテクチャ42
ご清聴ありがとうございました!43

Recommended

PDF
大規模サイトにおける本当は怖いCSSの話
PPTX
Oocssとかついでにsmacssとbemの話も
PDF
CSS の歩き方
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
PPTX
2016年版 フロントエンド開発フォーマット
PDF
ブラウザにやさしいHTML/CSS
PDF
なんでCSSすぐ死んでしまうん
PDF
使いやすいWordPressのためのCSSのつくりかた
PPTX
SMACSS入門
PDF
CSS設計のお勉強
PPTX
css基本。
 
PPTX
第10回勉強会 CSS設計について
PDF
HTML5マークアップの心得と作法
PDF
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
PDF
壊れやすいCSS
KEY
コーディングが上達するコツ
PDF
設計から実装まで、今すぐ始める高速化
PDF
今日から使える! HTML/CSS/JSの シンプルテクニック15選
PDF
HTML/CSSを効率的にする メタ言語とツールのアレコレ
PDF
モダンCSS設計と BEMという開発手法
PPTX
現場で使える効果的なHTML&CSS構造設計(Effective HTML&CSS)
PDF
今からハジメるHTML5マークアップ
PPTX
メンテナブルなJsってなんだろう
PDF
E2E CSS Testing at HTML5 Conference 2016
PDF
WordPress を使いこなそう
PDF
HTML5, きちんと。
PDF
⑯jQueryをおぼえよう!その2
PDF
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
PDF
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
PDF
2017: A CSS Design Odyssey

More Related Content

PDF
大規模サイトにおける本当は怖いCSSの話
PPTX
Oocssとかついでにsmacssとbemの話も
PDF
CSS の歩き方
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
PPTX
2016年版 フロントエンド開発フォーマット
PDF
ブラウザにやさしいHTML/CSS
PDF
なんでCSSすぐ死んでしまうん
PDF
使いやすいWordPressのためのCSSのつくりかた
大規模サイトにおける本当は怖いCSSの話
Oocssとかついでにsmacssとbemの話も
CSS の歩き方
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
2016年版 フロントエンド開発フォーマット
ブラウザにやさしいHTML/CSS
なんでCSSすぐ死んでしまうん
使いやすいWordPressのためのCSSのつくりかた

What's hot

PPTX
SMACSS入門
PDF
CSS設計のお勉強
PPTX
css基本。
 
PPTX
第10回勉強会 CSS設計について
PDF
HTML5マークアップの心得と作法
PDF
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
PDF
壊れやすいCSS
KEY
コーディングが上達するコツ
PDF
設計から実装まで、今すぐ始める高速化
PDF
今日から使える! HTML/CSS/JSの シンプルテクニック15選
PDF
HTML/CSSを効率的にする メタ言語とツールのアレコレ
PDF
モダンCSS設計と BEMという開発手法
PPTX
現場で使える効果的なHTML&CSS構造設計(Effective HTML&CSS)
PDF
今からハジメるHTML5マークアップ
PPTX
メンテナブルなJsってなんだろう
PDF
E2E CSS Testing at HTML5 Conference 2016
PDF
WordPress を使いこなそう
PDF
HTML5, きちんと。
PDF
⑯jQueryをおぼえよう!その2
PDF
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
SMACSS入門
CSS設計のお勉強
css基本。
 
第10回勉強会 CSS設計について
HTML5マークアップの心得と作法
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
壊れやすいCSS
コーディングが上達するコツ
設計から実装まで、今すぐ始める高速化
今日から使える! HTML/CSS/JSの シンプルテクニック15選
HTML/CSSを効率的にする メタ言語とツールのアレコレ
モダンCSS設計と BEMという開発手法
現場で使える効果的なHTML&CSS構造設計(Effective HTML&CSS)
今からハジメるHTML5マークアップ
メンテナブルなJsってなんだろう
E2E CSS Testing at HTML5 Conference 2016
WordPress を使いこなそう
HTML5, きちんと。
⑯jQueryをおぼえよう!その2
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩

Similar to 今必要なCSSアーキテクチャ

PDF
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
PDF
2017: A CSS Design Odyssey
PDF
Styleguide Driven Development x CMS - MTDDC Tokyo 2015
PPTX
HTMLのアウトラインを意識しよう
PPTX
CSS設計
PDF
マークアップ講座 02 CSS
PPT
CSS勉強会
PDF
CSSの光と闇
PDF
ネストを覚えた人のためのSassの便利な使い方
PDF
まだ間に合う「CSS設計」ことはじめ。CSSの闇に飲み込まれないための考え方。
PDF
メディア芸術基礎 Ⅰ 第4回:CSS入門 情報の形を視覚化する
PDF
First sass
PDF
CSS Design and Programming
PDF
イマドキの「タグ=HTML」とスタイルシート=CSS」を知ろう
PDF
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
PDF
WordBenchTokyo-20111126
PDF
141115 making web site
PDF
Sass/Compass講習会
PDF
「html5 boilerplate」から考える、これからのマークアップ
PDF
WEB開発はじめの一歩 講師:村井亮介様
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
2017: A CSS Design Odyssey
Styleguide Driven Development x CMS - MTDDC Tokyo 2015
HTMLのアウトラインを意識しよう
CSS設計
マークアップ講座 02 CSS
CSS勉強会
CSSの光と闇
ネストを覚えた人のためのSassの便利な使い方
まだ間に合う「CSS設計」ことはじめ。CSSの闇に飲み込まれないための考え方。
メディア芸術基礎 Ⅰ 第4回:CSS入門 情報の形を視覚化する
First sass
CSS Design and Programming
イマドキの「タグ=HTML」とスタイルシート=CSS」を知ろう
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
WordBenchTokyo-20111126
141115 making web site
Sass/Compass講習会
「html5 boilerplate」から考える、これからのマークアップ
WEB開発はじめの一歩 講師:村井亮介様

今必要なCSSアーキテクチャ


[8]ページ先頭

©2009-2025 Movatter.jp