SlideShare une entreprise Scribd logo
1  sur  29
OOCSSとか 
ついでにSMACSSとBEMも 
Created by Yumi Hashizume / @uniq 
20140702
お前、誰よ 
• uniqだよー 
• デザイナーだよー 
• いまは夏コミ原稿中
これから話すこと 
• しんどいCSS 
• 私なりのOOCSS 
• SMACSSの紹介 
• BEMの紹介
こんな事あるあるー 
黄色いお知らせエリアが欲しいよ 
.information_area { 
width:960px; 
padding: 10px; 
border: 1px solid #E6E5DA; 
background-color: #FFFCE2; 
border-radius: 3px; 
}
さらに 
緑のお知らせエリアも欲しいので、おなしゃす! 
.information_area { 
width:960px; 
padding: 10px; 
border: 1px solid #E6E5DA; 
background-color: #FFFCE2; 
border-radius: 3px; 
} 
.information_green_area { 
width:960px; 
padding: 10px; 
border: 1px solid #5BC077; 
background-color: #B4ECAC; 
border-radius: 3px 
}
さらにさらに 
.information_area { 
width:960px; 
padding: 10px; 
border: 1px solid #E6E5DA; 
background-color: #FFFCE2; 
border-radius: 3px; 
} 
.information_green_area { 
width:960px; 
padding: 10px; 
border: 1px solid #5BC077; 
background-color: #B4ECAC; 
border-radius: 3px 
} 
.alert_area { 
width:960px; 
padding: 10px; 
border: 1px solid #FFA115; 
background-color: #E00; 
color:#fff; 
border-radius: 3px 
}
コードが重複しまくり 
.information_area { 
width:960px; 
padding: 10px; 
border: 1px solid #E6E5DA; 
background-color: #FFFCE2; 
border-radius: 3px; 
} 
.information_green_area { 
width:960px; 
padding: 10px; 
border: 1px solid #5BC077; 
background-color: #B4ECAC; 
border-radius: 3px 
} 
.alert_area { 
width:960px; 
padding: 10px; 
border: 1px solid #FFA115; 
background-color: #E00; 
color:#fff; 
border-radius: 3px 
}
さらにさらにさらに 
ポップアップでは幅600pxにしたいとか… 
このページのは文字が大きくしたいとか… 
3カラムバージョンも欲しいとか… 
.information_area { 
width:960px; 
padding: 10px; 
border: 1px solid #E6E5DA; 
background-color: #FFFCE2; 
border-radius: 3px; 
} 
.popup .information_area { 
width:600px; 
} 
.information_green_area { 
width:960px; 
padding: 10px; 
border: 1px solid #5BC077; 
background-color: #B4ECAC; 
border-radius: 3px 
} 
.event_page .information_green_area { 
font-size:24px; 
} 
.alert_area { 
width:960px; 
padding: 10px; 
border: 1px solid #FFA115; 
background-color: #E00; 
color:#fff; 
border-radius: 3px 
} 
.col_3.information_area, 
.col_3.information_green_area, 
.col_3.alert_area { 
width:320px; 
}
もうぐちゃぐちゃ 
• メンテしにくい 
• 拡張しにくい 
• コードも長いので描画遅い
そこでOOCSS 
共通なものは共通なもの同士で 
オブジェクトとしてまとめる 
• 作業効率アップ 
• メンテナンス性アップ 
• 描画速度アップ
つまりこんな感じ 
<div class="row"> 
<div class="container"> 
<div class="col_3"><div class="box box_imformation">いわゆる普通のお知らせ</div></div> 
<div class="col_3"><div class="box box_success">成功しちゃったお知らせ</div></div> 
<div class="col_3"><div class="box box_alert">マジでヤバいお知らせ</div> 
</div> 
</div> 
.row { /*bootstrap参考*/ } 
.container { width:960px; } 
.container_popup { width:600px; } 
.font_24 {font-size:24px;} /*特例的なサイズ変更は、昔からある有りがちcommon.cssを*/ 
.col_3 { width:33.3%} 
.box { 
padding: 10px; 
border-radius: 3px; 
} 
.box_information { 
border: 1px solid #E6E5DA; 
background-color: #FFFCE2; 
} 
.box_success { 
border: 1px solid #5BC077; 
background-color: #B4ECAC; 
} 
.box_alert { 
border: 1px solid #FFA115; 
background-color: #E00; 
color:#fff; 
}
ぜんぜんセマンティッ 
クじゃない!! 
ある程度、妥協しましょう 
…柔軟に生きよう。社会は厳しい。。。 
そこそこセマンティックであれば良い
STRUCTURE とSKIN を分け 
て設定する 
• structure 
• 位置とか。margin, padding, position... 
• カタチっぽいclass名にする 
• skin 
• 色とか。デザインっぽい効果とか。color, background, border... 
• デザインっぽい、もしくはセマンティックなclass名 
※ サイトによって解釈は違う
例えるなら 
だめな例 
<!-- だめな例--> 
<div class="リラックマのお皿にのったケチャップかけたチーズ入りオムレツ"> 
だめな例 
</div> 
良い例 
<!-- 良い例--> 
<div class="リラックマのお皿"> 
<div class="ケチャップチーズオムレツ"> 
良い例 
</div> 
</div>
いままでは… 
要素を見て、どんなスタイルか把握していた
これからは… 
class名を見て、どんなスタイルか把握できるようにして 
いく
あとID やめよう 
jsやページ内リンクに使うのはありだけど、style指定する 
ために使うのは、余程の理由がない限りやめていきたい
CSSでID使うと困る点 
上書きが大変。いちいちIDつけないと上書きできない。 
ID効果は強いんです。 
#main a {color:#000;} 
a.btn, /* 全てのページのbtn文字色を白くしたい*/ 
#main a.btn { /* mainのボタンにも効果が必要なので、こちらも指定しないといけない*/ 
color:#fff; 
} 
#main .event_list a {color:#f00;} 
#main .page_join a {color:#999;}
IDのない幸せな世界 
上書きが楽。 
a {color:#000;} 
a.btn {color:#fff;} 
.event_list a {color:#f00;} 
.page_join a {color:#999;}
言いたいこと 
• 継ぎ足し継ぎ足しのCSSはツライ 
• OOCSSの精神で設計しとこ 
• CSSを修正するときは、「足す」のではなく、「 
引く」「整理する」をしていこう
SMACSS の紹介 
SMACSS(スマックス)
SMACSSのCSSカテゴリ 
• Base 
• デフォルトスタイル 
• Layout 
• ページをエリアに分割したもの(接頭語:l-) 
• Module 
• 再利用可能なパーツ 
• State 
• LayoutやModuleの特定の状態(接頭語:is-) 
• jsも使いますよー 
• Theme 
• ブログのテーマ的な
SMACSSのイメージ
BEM の紹介
BEMの基本 
• Block :ページを構成する独立パーツ 
• Element :Black内の一部として役割を果たすも 
の 
• Modifire :BlockやElementの状態・属性
BEMの命名規則 
.Block__Element-Modifire
BEMのイメージ
事例紹介
THE END 
美味しいお酒を飲むために効率よく仕事したい

Contenu connexe

Tendances

WordPress を使いこなそう
WordPress を使いこなそうWordPress を使いこなそう
WordPress を使いこなそう
Wataru OKAMOTO
 
今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選
Horiguchi Seito
 
css基本。
css基本。css基本。
css基本。
web12
 
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
Atsushi Tadokoro
 

Tendances (20)

HTML5マークアップの心得と作法
HTML5マークアップの心得と作法HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
 
使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた
 
今からハジメるHTML5マークアップ
今からハジメるHTML5マークアップ今からハジメるHTML5マークアップ
今からハジメるHTML5マークアップ
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
SMACSS入門
SMACSS入門SMACSS入門
SMACSS入門
 
CSS設計のお勉強
CSS設計のお勉強CSS設計のお勉強
CSS設計のお勉強
 
設計から実装まで、今すぐ始める高速化
設計から実装まで、今すぐ始める高速化設計から実装まで、今すぐ始める高速化
設計から実装まで、今すぐ始める高速化
 
WordPress を使いこなそう
WordPress を使いこなそうWordPress を使いこなそう
WordPress を使いこなそう
 
HTML5, きちんと。
HTML5, きちんと。HTML5, きちんと。
HTML5, きちんと。
 
今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング
 
今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選
 
第10回勉強会 CSS設計について
第10回勉強会 CSS設計について第10回勉強会 CSS設計について
第10回勉強会 CSS設計について
 
css基本。
css基本。css基本。
css基本。
 
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
 
HTML5 & The Web Platform
HTML5 & The Web PlatformHTML5 & The Web Platform
HTML5 & The Web Platform
 
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティーヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
 
Polymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトPolymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイト
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツ
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
Web Platform -- Moving Forward!
Web Platform -- Moving Forward!Web Platform -- Moving Forward!
Web Platform -- Moving Forward!
 

En vedette

Brandon Steiner: Speaker
Brandon Steiner: SpeakerBrandon Steiner: Speaker
Brandon Steiner: Speaker
Brandon Steiner
 
Sliven1
Sliven1Sliven1
Sliven1
niod
 
Nerve cell
Nerve cellNerve cell
Nerve cell
Biobiome
 
חוברת קורס
חוברת קורסחוברת קורס
חוברת קורס
Stas Segin
 

En vedette (17)

What's Object-Oriented CSS (japanese)
What's Object-Oriented CSS (japanese)What's Object-Oriented CSS (japanese)
What's Object-Oriented CSS (japanese)
 
Bem Study
Bem StudyBem Study
Bem Study
 
モダンCSS設計と BEMという開発手法
モダンCSS設計と BEMという開発手法モダンCSS設計と BEMという開発手法
モダンCSS設計と BEMという開発手法
 
CSSの新しい設計思想 PRECSSを作りました
CSSの新しい設計思想 PRECSSを作りましたCSSの新しい設計思想 PRECSSを作りました
CSSの新しい設計思想 PRECSSを作りました
 
CSSにもオブジェクト指向を - OOCSSことはじめ
CSSにもオブジェクト指向を - OOCSSことはじめCSSにもオブジェクト指向を - OOCSSことはじめ
CSSにもオブジェクト指向を - OOCSSことはじめ
 
BEM it!
BEM it!BEM it!
BEM it!
 
The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax ...
The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective,  Ajax ...The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective,  Ajax ...
The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax ...
 
コンポーネント指向と余白の設計
コンポーネント指向と余白の設計コンポーネント指向と余白の設計
コンポーネント指向と余白の設計
 
מביישן לפלרטטן
מביישן לפלרטטןמביישן לפלרטטן
מביישן לפלרטטן
 
Inleiding \'Digivaardig\' bij Koninklijke Visio/OTC op 18 juni 2012
Inleiding \'Digivaardig\' bij Koninklijke Visio/OTC op 18 juni 2012Inleiding \'Digivaardig\' bij Koninklijke Visio/OTC op 18 juni 2012
Inleiding \'Digivaardig\' bij Koninklijke Visio/OTC op 18 juni 2012
 
Brandon Steiner: Speaker
Brandon Steiner: SpeakerBrandon Steiner: Speaker
Brandon Steiner: Speaker
 
Sliven1
Sliven1Sliven1
Sliven1
 
Excess hair growth
Excess hair growthExcess hair growth
Excess hair growth
 
Nerve cell
Nerve cellNerve cell
Nerve cell
 
Guvenlik genel bakis
Guvenlik genel bakisGuvenlik genel bakis
Guvenlik genel bakis
 
ccnp route 642 902
ccnp route 642 902ccnp route 642 902
ccnp route 642 902
 
חוברת קורס
חוברת קורסחוברת קורס
חוברת קורס
 

Similaire à Oocssとかついでにsmacssとbemの話も

ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
Naoki Matsuda
 
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウトメディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
Atsushi Tadokoro
 
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
Shunsuke Watanabe
 

Similaire à Oocssとかついでにsmacssとbemの話も (20)

実践Sass 前編
実践Sass 前編実践Sass 前編
実践Sass 前編
 
CSS拡張メタ言語 Sass が何者かを紹介する | SakanaTech
CSS拡張メタ言語 Sass が何者かを紹介する | SakanaTechCSS拡張メタ言語 Sass が何者かを紹介する | SakanaTech
CSS拡張メタ言語 Sass が何者かを紹介する | SakanaTech
 
First sass
First sassFirst sass
First sass
 
壊れやすいCSS
壊れやすいCSS壊れやすいCSS
壊れやすいCSS
 
Sassをはじめからていねいに<概要−基礎編>
Sassをはじめからていねいに<概要−基礎編>Sassをはじめからていねいに<概要−基礎編>
Sassをはじめからていねいに<概要−基礎編>
 
compassで簡単! CSS3を手軽に利用する
compassで簡単!  CSS3を手軽に利用するcompassで簡単!  CSS3を手軽に利用する
compassで簡単! CSS3を手軽に利用する
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考える
 
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
 
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウトメディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
 
Sass紹介
Sass紹介Sass紹介
Sass紹介
 
Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」
 
CSS3の最新事情
CSS3の最新事情CSS3の最新事情
CSS3の最新事情
 
Sass/Compass講習会
Sass/Compass講習会Sass/Compass講習会
Sass/Compass講習会
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき
 
Sass introduction (jscafe 10)
Sass introduction (jscafe 10)Sass introduction (jscafe 10)
Sass introduction (jscafe 10)
 
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
 
Sassを使ってみよう
Sassを使ってみようSassを使ってみよう
Sassを使ってみよう
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
Less - first step
Less - first stepLess - first step
Less - first step
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~
 

Plus de Yumi uniq Ishizaki

絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3
Yumi uniq Ishizaki
 
アイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやることアイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやること
Yumi uniq Ishizaki
 

Plus de Yumi uniq Ishizaki (10)

スクラムする前に知って欲しいアジャイルさんっぽいこと
スクラムする前に知って欲しいアジャイルさんっぽいことスクラムする前に知って欲しいアジャイルさんっぽいこと
スクラムする前に知って欲しいアジャイルさんっぽいこと
 
デザイナーにGitは必要?
デザイナーにGitは必要?デザイナーにGitは必要?
デザイナーにGitは必要?
 
connpass design at BPStudy #88
connpass design at BPStudy #88connpass design at BPStudy #88
connpass design at BPStudy #88
 
Pythonと出会ったデザイナーの話 #PyLadiesTokyo
Pythonと出会ったデザイナーの話 #PyLadiesTokyoPythonと出会ったデザイナーの話 #PyLadiesTokyo
Pythonと出会ったデザイナーの話 #PyLadiesTokyo
 
絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3
 
真のレシポンシブって何だろう
真のレシポンシブって何だろう真のレシポンシブって何だろう
真のレシポンシブって何だろう
 
とっさのデザイン〜ボタン編〜
とっさのデザイン〜ボタン編〜とっさのデザイン〜ボタン編〜
とっさのデザイン〜ボタン編〜
 
アイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやることアイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやること
 
とある色の決め方
とある色の決め方とある色の決め方
とある色の決め方
 
Semantic html が止まらない
Semantic html が止まらないSemantic html が止まらない
Semantic html が止まらない
 

Dernier

Dernier (10)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Oocssとかついでにsmacssとbemの話も