201
使いやすいWordPress のためのCSSのつくりかた 2015.09.12 @WordBench Osaka 2015.09.12 @WordBench Osaka 1

使いやすいWordPressのためのCSSのつくりかた

Embed Size (px)

Citation preview

Page 1: 使いやすいWordPressのためのCSSのつくりかた

使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka

2015.09.12 @WordBench Osaka 1

Page 2: 使いやすいWordPressのためのCSSのつくりかた

whoamiじこしょうかい

2015.09.12 @WordBench Osaka 2

Page 3: 使いやすいWordPressのためのCSSのつくりかた

Toro_Unit占部 紘 (うらべ ひろし)

Frontend Engineer / Plugin Developer / Web Designer

Github: @torounitTwitter: @Toro_Unit

Facebook: fb.me/torounitBlog: http://www.torounit.com

2015.09.12 @WordBench Osaka 3

Page 5: 使いやすいWordPressのためのCSSのつくりかた

今日は

2015.09.12 @WordBench Osaka 5

Page 7: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 7

Page 8: 使いやすいWordPressのためのCSSのつくりかた

WordBench大阪初参加です!!初参加は緊張するものです。2回目以降の参加の方は、自分の知らない人最低2人、話しかけてみましょう!とのことなので、みなさんよろしくお願いします。

2015.09.12 @WordBench Osaka 8

Page 9: 使いやすいWordPressのためのCSSのつくりかた

WordPressとの関わり

2015.09.12 @WordBench Osaka 9

Page 10: 使いやすいWordPressのためのCSSのつくりかた

WordCamp Kansai 2015 Speakerその節はお世話になりました。

2015.09.12 @WordBench Osaka 10

Page 11: 使いやすいWordPressのためのCSSのつくりかた

WordPress 4.3 Core Contributer追いつけ追い越せKiteさん。

2015.09.12 @WordBench Osaka 11

Page 12: 使いやすいWordPressのためのCSSのつくりかた

Plugin Development

• Custom Post Type Permalinks

• Simple Post Type Permalinks

• Powerful Post Per Page

• etc...

2015.09.12 @WordBench Osaka 12

Page 13: 使いやすいWordPressのためのCSSのつくりかた

WordCamp TokyoではCIの話をする予定。(仮)

2015.09.12 @WordBench Osaka 13

Page 14: 使いやすいWordPressのためのCSSのつくりかた

ですが

2015.09.12 @WordBench Osaka 14

Page 15: 使いやすいWordPressのためのCSSのつくりかた

今年のWordBench大阪はテーマの年らしい。

2015.09.12 @WordBench Osaka 15

Page 16: 使いやすいWordPressのためのCSSのつくりかた

というわけで

2015.09.12 @WordBench Osaka 16

Page 17: 使いやすいWordPressのためのCSSのつくりかた

全力でCSSの話をします!!!

2015.09.12 @WordBench Osaka 17

Page 18: 使いやすいWordPressのためのCSSのつくりかた

Today's Agenda.1. Editor Styleの話2. CSSの設計について

2015.09.12 @WordBench Osaka 18

Page 19: 使いやすいWordPressのためのCSSのつくりかた

§1.Editor Styleの話

2015.09.12 @WordBench Osaka 19

Page 20: 使いやすいWordPressのためのCSSのつくりかた

WordPressでブログを書いてる人!

2015.09.12 @WordBench Osaka 20

Page 21: 使いやすいWordPressのためのCSSのつくりかた

テキストエディタでHTMLとか書いてる人!挙手!

2015.09.12 @WordBench Osaka 21

Page 22: 使いやすいWordPressのためのCSSのつくりかた

もったいない!!!

2015.09.12 @WordBench Osaka 22

Page 23: 使いやすいWordPressのためのCSSのつくりかた

もったいない!!!• 最近のWordPressのビジュアルエディタへの力の入れ方が尋常じゃない。

• Markdownライクな書き方が出来るようになって、かなり書きやすくなった。

• HTMLとかCSS大好きですけど、正直書かなくて済むなら書きたくない。

2015.09.12 @WordBench Osaka 23

Page 24: 使いやすいWordPressのためのCSSのつくりかた

そんなあなたたちにおくります。

2015.09.12 @WordBench Osaka 24

Page 25: 使いやすいWordPressのためのCSSのつくりかた

Do you know Editor Style?おまえはエディタースタイルを知っているか

2015.09.12 @WordBench Osaka 25

Page 26: 使いやすいWordPressのためのCSSのつくりかた

Editor Style とは。WordPressのビジュアルエディタに適用されるCSSのこと。<?phpadd_editor_style('./editor-style.css');?>

2015.09.12 @WordBench Osaka 26

Page 27: 使いやすいWordPressのためのCSSのつくりかた

これを使うと

2015.09.12 @WordBench Osaka 27

Page 28: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 28

Page 29: 使いやすいWordPressのためのCSSのつくりかた

これが

2015.09.12 @WordBench Osaka 29

Page 30: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 30

Page 31: 使いやすいWordPressのためのCSSのつくりかた

こうなる

2015.09.12 @WordBench Osaka 31

Page 32: 使いやすいWordPressのためのCSSのつくりかた

これは作るしかない!(デフォルトテーマにも入ってる!)

2015.09.12 @WordBench Osaka 32

Page 33: 使いやすいWordPressのためのCSSのつくりかた

But...

2015.09.12 @WordBench Osaka 33

Page 34: 使いやすいWordPressのためのCSSのつくりかた

めんどくさい。

2015.09.12 @WordBench Osaka 34

Page 35: 使いやすいWordPressのためのCSSのつくりかた

めんどくさい。• ビジュアルエディタとテーマのHTML構造の違う。• デザイン変更のたびにeditor-styleも確認する必要。。• 二重管理だるい。

2015.09.12 @WordBench Osaka 35

Page 36: 使いやすいWordPressのためのCSSのつくりかた

どうすれば。。。

2015.09.12 @WordBench Osaka 36

Page 37: 使いやすいWordPressのためのCSSのつくりかた

じゃぁ、テーマで使っているCSSをそのまま Editor Style にできれば・・・

2015.09.12 @WordBench Osaka 37

Page 38: 使いやすいWordPressのためのCSSのつくりかた

add_editor_style('./style.css');

2015.09.12 @WordBench Osaka 38

Page 39: 使いやすいWordPressのためのCSSのつくりかた

But...

2015.09.12 @WordBench Osaka 39

Page 40: 使いやすいWordPressのためのCSSのつくりかた

ビジュアルエディタとテーマではHTML構造が違う。

2015.09.12 @WordBench Osaka 40

Page 41: 使いやすいWordPressのためのCSSのつくりかた

ビジュアルエディタのHTML

<html><body>本文</body></html>

2015.09.12 @WordBench Osaka 41

Page 42: 使いやすいWordPressのためのCSSのつくりかた

テーマのHTML

<html><body> <header> </header> <main> <article> <h1>タイトル</h1>

本文 </article> </main></body></html>

2015.09.12 @WordBench Osaka 42

Page 43: 使いやすいWordPressのためのCSSのつくりかた

じゃぁどうしよう?

2015.09.12 @WordBench Osaka 43

Page 44: 使いやすいWordPressのためのCSSのつくりかた

the_contentで挿入される本文からCSSを作る。

2015.09.12 @WordBench Osaka 44

Page 45: 使いやすいWordPressのためのCSSのつくりかた

ブログ本文からCSSを作ると。• ブログ本文からCSSを作ると、本文欄からクラスや、div等をある程度減らせる。

• 見出しとかリストとかにいちいちClassを付けたりするとかが発生しない!

2015.09.12 @WordBench Osaka 45

Page 46: 使いやすいWordPressのためのCSSのつくりかた

具体的な方法

2015.09.12 @WordBench Osaka 46

Page 47: 使いやすいWordPressのためのCSSのつくりかた

1.HTML要素へのCSSを、本文のものにする。

2015.09.12 @WordBench Osaka 47

Page 48: 使いやすいWordPressのためのCSSのつくりかた

とりあえずこんな順番でCSSを書いてると思うんです。

1. Reset.css / Normalize

2. HTML要素へのCSS (h1,h2,h3,a,table,ul,li, etc...)

3. クラスとかIDとか (.alignleft,.alignright,.media-object,etc...)

2015.09.12 @WordBench Osaka 48

Page 49: 使いやすいWordPressのためのCSSのつくりかた

とりあえずこんな順番でCSSを書いてると思うんです。

1. Reset.css / Normalize

2. HTML要素へのCSS (h1,h2,h3,a,table,ul,li, etc...)

3. クラスとかIDとか (.alignleft,.alignright,.media-object,etc...)

本文欄のデザインをタイプセレクタに適用する!

2015.09.12 @WordBench Osaka 49

Page 50: 使いやすいWordPressのためのCSSのつくりかた

本文(the_contentの中身)のCSS = サイトのデフォルトのスタイルとして

設計する!

2015.09.12 @WordBench Osaka 50

Page 51: 使いやすいWordPressのためのCSSのつくりかた

めんどくさい?

2015.09.12 @WordBench Osaka 51

Page 52: 使いやすいWordPressのためのCSSのつくりかた

そうでもない。

2015.09.12 @WordBench Osaka 52

Page 53: 使いやすいWordPressのためのCSSのつくりかた

• テーマ側のHTMLには大抵Classとか当ててCSSを書いてる。そのClassでやれば済む話。

• 最初のタイプセレクタへのCSSをちゃんとサイトのデフォルトのデザインにしようぜ!ということ。Classで上書きしてたらあんまり意味が無い。全ての箇所で上書きするようなCSSとか要らなく無い?

• WYSIWYGエディタを持つCMSであれば、WYSIWYGを使い倒せるようにCSSを設計するべき。

2015.09.12 @WordBench Osaka 53

Page 54: 使いやすいWordPressのためのCSSのつくりかた

それでも面倒?

2015.09.12 @WordBench Osaka 54

Page 55: 使いやすいWordPressのためのCSSのつくりかた

そうか・・・じゃぁ

2015.09.12 @WordBench Osaka 55

Page 56: 使いやすいWordPressのためのCSSのつくりかた

Sass等で解決。

2015.09.12 @WordBench Osaka 56

Page 57: 使いやすいWordPressのためのCSSのつくりかた

こんなmixin作っておけば便利かも。@mixin box-reset() { display: block; margin: 0; padding: 0; border: none; color: inherit;

&::before, &::after { content: normal; }}

2015.09.12 @WordBench Osaka 57

Page 58: 使いやすいWordPressのためのCSSのつくりかた

とりあえず、見出し周りをちゃんとやれば何とかなること多い。

2015.09.12 @WordBench Osaka 58

Page 59: 使いやすいWordPressのためのCSSのつくりかた

2.body_class, post_classを使ったCSSは避ける

2015.09.12 @WordBench Osaka 59

Page 60: 使いやすいWordPressのためのCSSのつくりかた

• ビジュアルエディターには存在しないクラスを出力する。これらを使うと、編集画面と本番で表示が異なる事態が発生しがち。

• これに依存すると、同じHTMLを書いたのに挙動がページごとに変わるというCSSが大量生産される。つらい。

2015.09.12 @WordBench Osaka 60

Page 61: 使いやすいWordPressのためのCSSのつくりかた

ページごとにCSSを作るという発想を止めて、モジュールを組み合わせてページを作るという発想に転換しよう。

2015.09.12 @WordBench Osaka 61

Page 62: 使いやすいWordPressのためのCSSのつくりかた

3.その他の細かいノウハウ

2015.09.12 @WordBench Osaka 62

Page 63: 使いやすいWordPressのためのCSSのつくりかた

• トップページや複雑なページから作るとだいたいやらかす。テーマユニットテストを活用しよう。その後にシンプルな文章だけのページなどから作ってテストをしていくと良い。プライバシーポリシーとか、法律上の表記とか。

• 見出し周りは複雑になりがち。サイドバー・タイトルなど、ハードコーディングするものは、基本的にh1を使ってクラスを当てるようにするといいかも。生のh1を使うケースは意外に少ないし、ビジュアルエディタ内では基本使わない。

2015.09.12 @WordBench Osaka 63

Page 64: 使いやすいWordPressのためのCSSのつくりかた

• モジュールの組み合わせで作ると、「TinyMCE Template等で、特定のパーツを挿入できるようにする」などの拡張も行いやすい。

• CSSをしっかり設計すると当然、管理画面からの更新もやりやすくなるよ!

• ブログ書くのがめんどくさくなくなるかも。。。?

2015.09.12 @WordBench Osaka 64

Page 65: 使いやすいWordPressのためのCSSのつくりかた

第一部 完第二部につづく。

2015.09.12 @WordBench Osaka 65

Page 66: 使いやすいWordPressのためのCSSのつくりかた

§2.CSSの設計について

2015.09.12 @WordBench Osaka 66

Page 67: 使いやすいWordPressのためのCSSのつくりかた

初めに言っておきますが・・・

2015.09.12 @WordBench Osaka 67

Page 68: 使いやすいWordPressのためのCSSのつくりかた

「Web制作者のためのCSS設計の教科書」(メロン本)にだいたい全部書いてあります!

みんな読もう!

2015.09.12 @WordBench Osaka 68

Page 69: 使いやすいWordPressのためのCSSのつくりかた

突然ですが

2015.09.12 @WordBench Osaka 69

Page 70: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単?難しい?

2015.09.12 @WordBench Osaka 70

Page 71: 使いやすいWordPressのためのCSSのつくりかた

その1

2015.09.12 @WordBench Osaka 71

Page 72: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単!たとえばこんなHTML

<h1 class="title">サイトのタイトル</h1>

<main id="main-contents"> <h1 class="title">ブログのタイトル</h1>

<article class="post"> <header class="headline"> <h1 class="title">記事のタイトル</h1>

</header> </article></main>

2015.09.12 @WordBench Osaka 72

Page 73: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単!.title { color: red;}

2015.09.12 @WordBench Osaka 73

Page 74: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単!.title { color: red;}.post .title { color: orange;}

2015.09.12 @WordBench Osaka 74

Page 75: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単?????.title { color: red;}#main-contents .title { color: green;}.post .title { color: orange; /*上書きされる。。。*/

}

2015.09.12 @WordBench Osaka 75

Page 76: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単????????????????.title {}#main-contents .title {}.post .title {}h1.title {}main#main-contents article .title {}main#main-contents .headline h1 {}main article header h1.title {}main#main-contents .post:first-child h1 {}

2015.09.12 @WordBench Osaka 76

Page 77: 使いやすいWordPressのためのCSSのつくりかた

CHAOSの予感!!!

2015.09.12 @WordBench Osaka 77

Page 78: 使いやすいWordPressのためのCSSのつくりかた

その2

2015.09.12 @WordBench Osaka 78

Page 79: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単!.title { border-left: 10px solid #CCC; font-size: 2em;}

2015.09.12 @WordBench Osaka 79

Page 80: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単!??.title { border-left: 10px solid #CCC; padding: 0 0 0 5px; font-size: 2em;}.sidebar .title { background-color: #333; color: #FFF; padding: 0; border: 0;}

2015.09.12 @WordBench Osaka 80

Page 81: 使いやすいWordPressのためのCSSのつくりかた

CSSって簡単!??????????.title { border-left: 10px solid #CCC; padding: 0 0 0 5px; font-size: 2em;}.title::before { content: "§";}.sidebar .title { background-color: #333; color: #FFF; padding: 0; border: 0;}.title::before { display:none;}

2015.09.12 @WordBench Osaka 81

Page 82: 使いやすいWordPressのためのCSSのつくりかた

スパゲッティな予感!!!

2015.09.12 @WordBench Osaka 82

Page 83: 使いやすいWordPressのためのCSSのつくりかた

CSSは簡単に書けるけど、ちゃんとしたCSSっ

て難しい。2015.09.12 @WordBench Osaka 83

Page 84: 使いやすいWordPressのためのCSSのつくりかた

ちゃんとしたCSSって?

2015.09.12 @WordBench Osaka 84

Page 85: 使いやすいWordPressのためのCSSのつくりかた

ちゃんとしたCSSって?

CSS Architecture — Philip Walton• 原文:http://philipwalton.com/articles/css-architecture/

• 日本語訳:http://article.enja.io/articles/css-architecture.html

2015.09.12 @WordBench Osaka 85

Page 86: 使いやすいWordPressのためのCSSのつくりかた

良いCSSとは?• 予測しやすい• 再利用しやすい• 保守しやすい• 拡張しやすい

2015.09.12 @WordBench Osaka 86

Page 87: 使いやすいWordPressのためのCSSのつくりかた

というわけで

2015.09.12 @WordBench Osaka 87

Page 88: 使いやすいWordPressのためのCSSのつくりかた

ちゃんとCSSも設計しよう「とりあえずデザインが実現できればOK」は卒業しよう。

2015.09.12 @WordBench Osaka 88

Page 89: 使いやすいWordPressのためのCSSのつくりかた

どうやるの?

2015.09.12 @WordBench Osaka 89

Page 90: 使いやすいWordPressのためのCSSのつくりかた

1.マークアップに依存しない

2015.09.12 @WordBench Osaka 90

Page 91: 使いやすいWordPressのためのCSSのつくりかた

たとえばこんなHTML<article> <h1>タイトル</h1>

<p>本文</p>

</article>

2015.09.12 @WordBench Osaka 91

Page 92: 使いやすいWordPressのためのCSSのつくりかた

たとえばこんなCSSarticle { border: 1px solid #666; padding: 16px;}article h1 { margin: 0 0 0.5em; font-size: 1.7em;}

2015.09.12 @WordBench Osaka 92

Page 93: 使いやすいWordPressのためのCSSのつくりかた

HTMLが変更になった!<div> <h2>タイトル</h2>

<p>本文</p>

</div>

CSSが効かない!!

2015.09.12 @WordBench Osaka 93

Page 94: 使いやすいWordPressのためのCSSのつくりかた

こうしよう。

2015.09.12 @WordBench Osaka 94

Page 95: 使いやすいWordPressのためのCSSのつくりかた

HTML<article class="post"> <h1 class="post-title">タイトル</h1>

<p>本文</p>

</article>

CSS.post {}.post-title {}

2015.09.12 @WordBench Osaka 95

Page 96: 使いやすいWordPressのためのCSSのつくりかた

文書構造とCSSをしっかり分離する。

2015.09.12 @WordBench Osaka 96

Page 97: 使いやすいWordPressのためのCSSのつくりかた

2.コンポーネント志向なCSSを作る。

2015.09.12 @WordBench Osaka 97

Page 98: 使いやすいWordPressのためのCSSのつくりかた

さっきの例ですが、こうでも良さそうですよね。.post {}.post .title {}

2015.09.12 @WordBench Osaka 98

Page 99: 使いやすいWordPressのためのCSSのつくりかた

でも。

2015.09.12 @WordBench Osaka 99

Page 100: 使いやすいWordPressのためのCSSのつくりかた

.widget { hoge: piyo;}.widget .title { hoge: piyo;}

2015.09.12 @WordBench Osaka 100

Page 101: 使いやすいWordPressのためのCSSのつくりかた

<div class="widget"> <h1 class="title">最近のエントリー</h1>

<article class="post"> <h1 class="title">タイトル</h1>

</article></div>

Conflict!

2015.09.12 @WordBench Osaka 101

Page 102: 使いやすいWordPressのためのCSSのつくりかた

クラス名 ≒ グローバル変数

2015.09.12 @WordBench Osaka 102

Page 103: 使いやすいWordPressのためのCSSのつくりかた

.widget {}.widget-title {}

.post {}.post-title {}

No conflict!!!

2015.09.12 @WordBench Osaka 103

Page 104: 使いやすいWordPressのためのCSSのつくりかた

3.親セレクタに依存しない

2015.09.12 @WordBench Osaka 104

Page 105: 使いやすいWordPressのためのCSSのつくりかた

.main-contents { float: left;}

.home .main-contents { float: none;}

一見良さそうだけど。

2015.09.12 @WordBench Osaka 105

Page 106: 使いやすいWordPressのためのCSSのつくりかた

.main-contents { float: left; display: block;}

.home .main-contents,

.page .main-contents { float: none;}

.blog .main-contents,

.single .main-contents { float: right;}

2015.09.12 @WordBench Osaka 106

Page 107: 使いやすいWordPressのためのCSSのつくりかた

.main-contents { float: left; display: block;}

.home .main-contents,

.page .main-contents { float: none;}

.blog .main-contents,

.single .main-contents,

.date .main-contents,

.archive .main-contents { float: right;}

2015.09.12 @WordBench Osaka 107

Page 108: 使いやすいWordPressのためのCSSのつくりかた

同じクラスがHTMLの書き方で次第で全く別の挙動をする!

とても解りづらい!! 混乱する!

バグの原因になりやすい。HTMLの祖先要素とか何個あると思ってんの?

2015.09.12 @WordBench Osaka 108

Page 109: 使いやすいWordPressのためのCSSのつくりかた

こうしよう

2015.09.12 @WordBench Osaka 109

Page 110: 使いやすいWordPressのためのCSSのつくりかた

.main-contents { float: left;}.main-contents--single-column { float: none;}

HTMLのコンテキストを考えなくて済む。

2015.09.12 @WordBench Osaka 110

Page 111: 使いやすいWordPressのためのCSSのつくりかた

モジュールのことはモジュールに解決させよう。

2015.09.12 @WordBench Osaka 111

Page 112: 使いやすいWordPressのためのCSSのつくりかた

ここら辺の話を体系化したものが所謂CSSアーキテクチャーと呼ばれているもの。

2015.09.12 @WordBench Osaka 112

Page 113: 使いやすいWordPressのためのCSSのつくりかた

CSSアーキテクチャー

2015.09.12 @WordBench Osaka 113

Page 114: 使いやすいWordPressのためのCSSのつくりかた

1.OOCSSすべてはここからはじまった

2015.09.12 @WordBench Osaka 114

Page 115: 使いやすいWordPressのためのCSSのつくりかた

OOCSS

元Yahoo!の Nicole Sullivan氏(@stubbornella)が提唱したCSSの設計原則。https://github.com/stubbornella/oocss/wiki

2015.09.12 @WordBench Osaka 115

Page 116: 使いやすいWordPressのためのCSSのつくりかた

OOCSSの2大原則1. 構造と見た目を分離。2. コンテナとコンテンツの分離。

2015.09.12 @WordBench Osaka 116

Page 117: 使いやすいWordPressのためのCSSのつくりかた

構造と見た目の分離

2015.09.12 @WordBench Osaka 117

Page 118: 使いやすいWordPressのためのCSSのつくりかた

.submit-btn { display: inline-block; padding: 10px; color: #FFF; background: #66C;}.link-btn { display: inline-block; padding: 10px; color: #333; background: #C90;}

2015.09.12 @WordBench Osaka 118

Page 119: 使いやすいWordPressのためのCSSのつくりかた

構造と見た目の分離すると・・・

2015.09.12 @WordBench Osaka 119

Page 120: 使いやすいWordPressのためのCSSのつくりかた

/*ボタンの構造*/

.btn { display: inline-block; padding: 10px;}/*ボタンの見た目*/

.btn-submit { color: #FFF; background: #66C;}.btn-link { color: #333; background: #C90;}

2015.09.12 @WordBench Osaka 120

Page 121: 使いやすいWordPressのためのCSSのつくりかた

構造と見た目の分離するメリット1.コードの重複が避けられる。保守性が上がる。2.拡張がとても用意になる。

2015.09.12 @WordBench Osaka 121

Page 122: 使いやすいWordPressのためのCSSのつくりかた

コンテナとコンテンツの分離<aside class="sidebar"> <div> <img class="avatar" /> </div></aside>

.sidebar .avatar { width: 200px; border: 5px solid #FFF; box-shadow: 0 2px 3px #000;}

2015.09.12 @WordBench Osaka 122

Page 123: 使いやすいWordPressのためのCSSのつくりかた

コンテナとコンテンツの分離すると。

2015.09.12 @WordBench Osaka 123

Page 124: 使いやすいWordPressのためのCSSのつくりかた

<aside class="sidebar"> <div class="sidebar-widget"> <img class="avatar" /> </div></aside>

.sidebar-widget { /** コンテナ **/

width: 200px;}.avatar { /** コンテンツ **/

width: 100%; border: 5px solid #FFF; box-shadow: 0 2px 3px #000;}

2015.09.12 @WordBench Osaka 124

Page 125: 使いやすいWordPressのためのCSSのつくりかた

コンテナとコンテンツの分離するメリット1.場所、コンテキストに依存しないコードが増える。2.再利用しやすい!

2015.09.12 @WordBench Osaka 125

Page 126: 使いやすいWordPressのためのCSSのつくりかた

再利用の例

2015.09.12 @WordBench Osaka 126

Page 127: 使いやすいWordPressのためのCSSのつくりかた

<article class="comment"> <div class="comment-user"> <img class="avatar" /> </div></article>

.comment-user { position: absolute; width: 100px;}.avatar { width: 100%; border: 5px solid #FFF; box-shadow: 0 2px 3px #000;}

2015.09.12 @WordBench Osaka 127

Page 128: 使いやすいWordPressのためのCSSのつくりかた

OOCSSの例• Bootstrap

• Foundation

2015.09.12 @WordBench Osaka 128

Page 129: 使いやすいWordPressのためのCSSのつくりかた

2.SMACSS

元Yahoo!の Jonathan Snook氏(@snookca)によって提唱されたCSSの設計方針。https://smacss.com/

2015.09.12 @WordBench Osaka 129

Page 130: 使いやすいWordPressのためのCSSのつくりかた

SMACSSの基本CSSを5種類に分類。• Base

• Layout

• Module

• State

• Theme

2015.09.12 @WordBench Osaka 130

Page 131: 使いやすいWordPressのためのCSSのつくりかた

Base

プロジェクトのデフォルトのCSS定義する。class等は使わずHTML要素に対してCSSを定義する。

• Reset / Normalize

• タイプセレクタへのスタイル。プロジェクトのデフォルトのデザイン。

2015.09.12 @WordBench Osaka 131

Page 132: 使いやすいWordPressのためのCSSのつくりかた

Layout

2015.09.12 @WordBench Osaka 132

Page 133: 使いやすいWordPressのためのCSSのつくりかた

Layout

サイトのレイアウトを定義するCSS群。クラスには、.l-main等のプリフィックスをつける。

• メインカラム/サイドバー• ヘッダー・フッター

2015.09.12 @WordBench Osaka 133

Page 134: 使いやすいWordPressのためのCSSのつくりかた

Module

2015.09.12 @WordBench Osaka 134

Page 135: 使いやすいWordPressのためのCSSのつくりかた

Moduleページ内を構成するコンポーネント群。レイアウト以外は基本的に全てここに属する。SMACSSでCSSを書くと基本的にはModuleが大量に作られる。• ボタン• メディアオブジェクト• その他もろもろ

2015.09.12 @WordBench Osaka 135

Page 136: 使いやすいWordPressのためのCSSのつくりかた

Moduleの命名規約モジュールに属するスタイルの命名は、.{モジュール名}-{スタイル名}とする。.widget {}.widget-title {}.widget-body {}

2015.09.12 @WordBench Osaka 136

Page 137: 使いやすいWordPressのためのCSSのつくりかた

State

2015.09.12 @WordBench Osaka 137

Page 138: 使いやすいWordPressのためのCSSのつくりかた

State.is-active等のJavaScript変更されたりするような、状態を表すCSS。他のCSSを上書きできるように設計する必要がある。.navigation-item {}.navigation-item.is-active {}

2015.09.12 @WordBench Osaka 138

Page 139: 使いやすいWordPressのためのCSSのつくりかた

Theme

2015.09.12 @WordBench Osaka 139

Page 140: 使いやすいWordPressのためのCSSのつくりかた

Theme名前の通り、テーマを切り替えたりするときに使う。ブログサービスなどでCSSを切り替えるとか。• ぶっちゃけあまり使ったことが無い。• オルタネイトスタイルシートなど。• 他には、多言語対応でフォントや文字方向を使ったり。。。むしろ良い使い方教えて下さい。2015.09.12 @WordBench Osaka 140

Page 141: 使いやすいWordPressのためのCSSのつくりかた

SMACSSの採用例• Pure: Yahoo!が作ったCSSフレームワーク

http://purecss.io/

• 昔の web-starter-kit

2015.09.12 @WordBench Osaka 141

Page 142: 使いやすいWordPressのためのCSSのつくりかた

3.BEM(MindBEMding)

2015.09.12 @WordBench Osaka 142

Page 143: 使いやすいWordPressのためのCSSのつくりかた

BEMロシアのYandexが作った、CSSのセレクタの命名規約、設計方針。CSSを Block, Element, Modifierの3つに分類して考える。MindBEMding – getting your head ’round BEM syntaxhttp://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/

2015.09.12 @WordBench Osaka 143

Page 144: 使いやすいWordPressのためのCSSのつくりかた

Block

所謂、SMACSSで言うところのModule。HTMLを構成するコンポーネントの単位。.block {}

2015.09.12 @WordBench Osaka 144

Page 145: 使いやすいWordPressのためのCSSのつくりかた

Element

Blockの子要素。.block__element {}

2015.09.12 @WordBench Osaka 145

Page 146: 使いやすいWordPressのためのCSSのつくりかた

Modifier

BlockやElementの拡張。.block--modifier {}

.block__element--modifier {}

2015.09.12 @WordBench Osaka 146

Page 147: 使いやすいWordPressのためのCSSのつくりかた

BEMの例.post { /* Block */}.post__title { /* Element */}.post--sticky { /* Modifier */}.post__title--new {}

2015.09.12 @WordBench Osaka 147

Page 148: 使いやすいWordPressのためのCSSのつくりかた

__とか--がきもちわるい。

2015.09.12 @WordBench Osaka 148

Page 149: 使いやすいWordPressのためのCSSのつくりかた

• プロジェクトの中で一貫性がとれていれば、なんでも良い。• ただWordPressはハイフン区切りの命名が多いので、そのまま使うのが無難。そのまま使うとBEMなフレームワークとかも扱いやすい。

• 気持ち悪い分わかりやすい。

2015.09.12 @WordBench Osaka 149

Page 150: 使いやすいWordPressのためのCSSのつくりかた

• EmmetだとBEMモードがある。それだと、Block__Element_Modifierになってる。EmmetのBEMフィルターでBEMるときのHTMLをサクッと書く | clear sky source:http://maboroshi.biz/clearskysource/?p=926

2015.09.12 @WordBench Osaka 150

Page 151: 使いやすいWordPressのためのCSSのつくりかた

BEMのメリット• とにかくわかりやすい。SMACSSと違い、elementと

modifierの区別が明確。• 特徴的な命名なので、HTML側で間違ったClassの使い方などを発見しやすい。

参考:BEMという命名規則とSass 3.3の新しい記法 - アインシュタインの電話番号http://blog.ruedap.com/2013/10/29/block-element-modifier2015.09.12 @WordBench Osaka 151

Page 152: 使いやすいWordPressのためのCSSのつくりかた

BEMの例• Material Design Lite

• Comico http://www.comico.jp/

• NBA.COMの各チームのスケジュール。http://www.nba.com/spurs/schedule

2015.09.12 @WordBench Osaka 152

Page 153: 使いやすいWordPressのためのCSSのつくりかた

注意事項• block__elem1__elem2 とかやらない。マークアップへの依存を深めることになるので、block__elem1, block__elem2とかにする。

• もしくは別のBlockに分割する。

2015.09.12 @WordBench Osaka 153

Page 154: 使いやすいWordPressのためのCSSのつくりかた

応用編

2015.09.12 @WordBench Osaka 154

Page 155: 使いやすいWordPressのためのCSSのつくりかた

FLOCSS

2015.09.12 @WordBench Osaka 155

Page 156: 使いやすいWordPressのためのCSSのつくりかた

FLOCSS

日本でCSSと言えばこの人!なサイバーエージェントの谷 拓樹氏(@hiloki)によるCSSの構成案.

ドキュメント(日本語):https://github.com/hiloki/flocss

2015.09.12 @WordBench Osaka 156

Page 157: 使いやすいWordPressのためのCSSのつくりかた

FLOCSSのCSSのカテゴリー• Foundation

• Layout

• Object

• Component

• Project

• Utility

2015.09.12 @WordBench Osaka 157

Page 158: 使いやすいWordPressのためのCSSのつくりかた

FLOCSSのCSSの原則他のモジュールへのカスケーディングは原則禁止.c-card > .c-media__title { /* NG!!!!!! */}

SMACSS等でもこれをやり出すとモジュール同士が密結合になってCSSが腐海化するので避けるべき。

2015.09.12 @WordBench Osaka 158

Page 159: 使いやすいWordPressのためのCSSのつくりかた

Foundation

• Normalize.css / Reset.css

• プロジェクトのデフォルトスタイル.

• 要はSMACSSで言うところのBase.

Layout

• ヘッダー・フッター・メインカラム・サイドバー等2015.09.12 @WordBench Osaka 159

Page 160: 使いやすいWordPressのためのCSSのつくりかた

Object

2015.09.12 @WordBench Osaka 160

Page 161: 使いやすいWordPressのためのCSSのつくりかた

Component

• 再利用出来るパターン。Bootstrap等で出てくるコンポーネントなど。

• Media Object / Button / Card / etc..

• 抽象化されたモジュール群。

2015.09.12 @WordBench Osaka 161

Page 162: 使いやすいWordPressのためのCSSのつくりかた

Project

• プロジェクト固有のパターン。具体的なモジュール群。• Projectから、Componentへのカスケーディングは許可• それでもやっぱりセレクタの詳細度が上がるので、モディファイアで事足りるならそちらでやる方が無難なケースが多いかも。

.p-book > .c-media__title { /* OK */}

2015.09.12 @WordBench Osaka 162

Page 163: 使いやすいWordPressのためのCSSのつくりかた

Utility

• いわゆる、ヘルパークラス、便利クラス。• show・hide / 文字サイズとか。• WordPressの.alignleftとかはここに所属。• 同じようなモディファイアが大量生産されるときは、ここに突っ込むと良いかもしれない。

2015.09.12 @WordBench Osaka 163

Page 164: 使いやすいWordPressのためのCSSのつくりかた

事例• http://torounit.com

Repository: https://github.com/torounit/torounit2015

2015.09.12 @WordBench Osaka 164

Page 165: 使いやすいWordPressのためのCSSのつくりかた

補足• ざっくり言うと、SMACSS + MCSS(Multilayer CSS).

• 内容がかぶるので紹介しませんが、日本語ドキュメントもあるので、一見の価値あり。http://operatino.github.io/MCSS/ja/

2015.09.12 @WordBench Osaka 165

Page 166: 使いやすいWordPressのためのCSSのつくりかた

ITCSS

2015.09.12 @WordBench Osaka 166

Page 167: 使いやすいWordPressのためのCSSのつくりかた

ITCSS

CSS界のアイドル、CSS Wizardryこと、Harry Roberts(@csswizardry)氏によるCSS設計案。• 情報すくなめ。日本語情報あんまりない。たぶん谷さんのスライドくらい。ただし、元のスライドが素晴らしいし、図も多めなので全然読める。

スライド:https://speakerdeck.com/dafed/managing-css-projects-with-itcss2015.09.12 @WordBench Osaka 167

Page 168: 使いやすいWordPressのためのCSSのつくりかた

カオスなCSS引用元: https://speakerdeck.com/dafed/

managing-css-projects-with-itcss

2015.09.12 @WordBench Osaka 168

Page 169: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 169

Page 170: 使いやすいWordPressのためのCSSのつくりかた

おまえのセレクタで地球がやばい

2015.09.12 @WordBench Osaka 170

Page 171: 使いやすいWordPressのためのCSSのつくりかた

こうしよう!

2015.09.12 @WordBench Osaka 171

Page 172: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 172

Page 173: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 173

Page 174: 使いやすいWordPressのためのCSSのつくりかた

ITCSSのレイヤー

2015.09.12 @WordBench Osaka 174

Page 175: 使いやすいWordPressのためのCSSのつくりかた

Setting: グローバルな変数Tools: Mixin、Function

Generic: Normalize、Reset

Base: デフォルトのスタイル。要素セレクタ。Objects: 装飾のないパターン。FLOCSSでいうComponent.

Components: FLOCSSでいうところのProject. プロジェクト固有のコンポーネントパターン。Trumps: ユーティリティクラス。便利クラス。2015.09.12 @WordBench Osaka 175

Page 176: 使いやすいWordPressのためのCSSのつくりかた

事例http://csswizardry.com/

• https://github.com/csswizardry/csswizardry.github.com

2015.09.12 @WordBench Osaka 176

Page 177: 使いやすいWordPressのためのCSSのつくりかた

公式サイト・ドキュメント

2015.09.12 @WordBench Osaka 177

Page 178: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 178

Page 179: 使いやすいWordPressのためのCSSのつくりかた

スライドを読もう。

サイトは1ページしか無いけど、スライドはかなり詳細なのでわかりやすい。英語だけだけど結構わかりやすい。https://speakerdeck.com/dafed/managing-css-projects-with-itcss

2015.09.12 @WordBench Osaka 179

Page 180: 使いやすいWordPressのためのCSSのつくりかた

フレームワーク

2015.09.12 @WordBench Osaka 180

Page 181: 使いやすいWordPressのためのCSSのつくりかた

inuit.css

2015.09.12 @WordBench Osaka 181

Page 182: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 182

Page 183: 使いやすいWordPressのためのCSSのつくりかた

一応レポジトリはある。割とコミットされてる。

2015.09.12 @WordBench Osaka 183

Page 184: 使いやすいWordPressのためのCSSのつくりかた

2015.09.12 @WordBench Osaka 184

Page 185: 使いやすいWordPressのためのCSSのつくりかた

Others• MCSS (http://operatino.github.io/MCSS/ja/)

• SUIT CSS (https://suitcss.github.io/)

• AMCSS (https://amcss.github.io/)

2015.09.12 @WordBench Osaka 185

Page 186: 使いやすいWordPressのためのCSSのつくりかた

これらをちゃんと運用するために。

2015.09.12 @WordBench Osaka 186

Page 187: 使いやすいWordPressのためのCSSのつくりかた

• CSSは文法がゆるふわなので、強い自制心が必要!!!• CSSはすぐ壊れる。常にリファクタリングしながら進める。• 後でやろうとするとだいたいスパゲッティなCSSになってて手遅れになる。

• 使わなくなったらいつでも削除出来るような設計が大事。• 初動が肝心。

2015.09.12 @WordBench Osaka 187

Page 188: 使いやすいWordPressのためのCSSのつくりかた

• 巨大なモジュールを作ると大抵使い回しが辛い。スクロールしないで読めるようなモジュールが一番使い勝手が良かったりする。1つのモジュールの仕事なのかをよく考えること。

• 疎結合大事。モノリシックなCSSを管理できるほど人間は賢くない。

• 著名なCSSフレームワークはやっぱり参考に出来ることが多い。

2015.09.12 @WordBench Osaka 188

Page 189: 使いやすいWordPressのためのCSSのつくりかた

• 基本的にはOOCSSからの派生物。とりあえず、OOCSSの考え方は身体にたたき込む。

• ドキュメントの整備は重要。それが面倒ならFLOCSSを使うのが無難。

2015.09.12 @WordBench Osaka 189

Page 190: 使いやすいWordPressのためのCSSのつくりかた

• IDセレクタは滅ぼそう。IDにはページ内リンクのアンカーという仕事もある。一つのセレクタにいろんな仕事を持たせるとリファクタリングが大変。

• Sass等を使うと、"&"を使うことでだいぶ書きやすくなる。• モジュールごとにファイルを分割しないと訳がわからなくなるので、とりあえずSass使おう。

2015.09.12 @WordBench Osaka 190

Page 191: 使いやすいWordPressのためのCSSのつくりかた

強い心・クソコードへの憎しみ・CSSへの愛が大事

2015.09.12 @WordBench Osaka 191

Page 192: 使いやすいWordPressのためのCSSのつくりかた

CSSの設計はまだ発展途上。柔軟な頭で考えよう。

ドキュメントは大事。せめてコメントに命名規約とか採用する設計を記述しておくのが良いかと。

2015.09.12 @WordBench Osaka 192

Page 193: 使いやすいWordPressのためのCSSのつくりかた

とりあえず

2015.09.12 @WordBench Osaka 193

Page 194: 使いやすいWordPressのためのCSSのつくりかた

おまえらCSSもちゃんと設計しろ!!!

2015.09.12 @WordBench Osaka 194

Page 195: 使いやすいWordPressのためのCSSのつくりかた

余談

2015.09.12 @WordBench Osaka 195

Page 196: 使いやすいWordPressのためのCSSのつくりかた

• 個人的にはITCSS押し。inuit.cssが小さな単位で独立したレポジトリになっていてnpmで取ってこれるのは楽。

• AMCSSは良いと思うけどセレクタが書きづらい。ここら辺を解消できるツールがあれば。

2015.09.12 @WordBench Osaka 196

Page 197: 使いやすいWordPressのためのCSSのつくりかた

• 「Every Declaration Just Once」とかいう話もあるけど、CMSのように最初にCSSを用意してHTMLを追加していくものにはつらいと思う。

• CMSは基本的に、ページが容量の許す限り増やせる。なのでプロジェクトごとにCSSフレームワークを作るくらいの気持ちでやった方が良い。

• 静的サイトと同じようなデザイン要件だとCMSでやるメリットが薄まるのでそこら辺のコントロールも大切。

2015.09.12 @WordBench Osaka 197

Page 198: 使いやすいWordPressのためのCSSのつくりかた

• WebComponentsの夢は忘れよう。(Scoped Styleとか)

• でもモジュラーなHTML/CSSというのはこれからもっと必要な考え方。(ex. React.js)

• プリプロセッサは悩むならSCSS使えば良いと思う。ツールも情報も採用例も多い。

2015.09.12 @WordBench Osaka 198

Page 199: 使いやすいWordPressのためのCSSのつくりかた

参考資料• 谷拓樹氏のスライド全般。http://www.slideshare.net/hiloki/

• 昨今のCSS設計事情からみるCSS設計のあり方とは | HTML5Experts.jp https://html5experts.jp/hiloki/14372/

• IDを使わないCSSの設計|Web Design KOJIKA17http://kojika17.com/2013/09/dont-use-ids.html

2015.09.12 @WordBench Osaka 199

Page 200: 使いやすいWordPressのためのCSSのつくりかた

参考資料• CSS 設計の長い夢 - ペパボのフロントエンドスタンダード

http://pepabo.github.io/docs/frontend/standard/css-architecture/

• なんでCSSすぐ死んでしまうん http://www.slideshare.net/hayatomizuno/css-41084761

2015.09.12 @WordBench Osaka 200

Page 201: 使いやすいWordPressのためのCSSのつくりかた

おわり。

2015.09.12 @WordBench Osaka 201