Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
KK
Uploaded by
Kenjiro Kubota
720 views
2017: A CSS Design Odyssey
Introduction of CSS design that became popular by 2017
Design
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 103
2
/ 103
3
/ 103
4
/ 103
5
/ 103
6
/ 103
7
/ 103
8
/ 103
9
/ 103
10
/ 103
11
/ 103
12
/ 103
13
/ 103
14
/ 103
15
/ 103
16
/ 103
17
/ 103
18
/ 103
19
/ 103
20
/ 103
21
/ 103
22
/ 103
23
/ 103
24
/ 103
25
/ 103
26
/ 103
27
/ 103
28
/ 103
29
/ 103
30
/ 103
31
/ 103
32
/ 103
33
/ 103
34
/ 103
35
/ 103
36
/ 103
37
/ 103
38
/ 103
39
/ 103
40
/ 103
41
/ 103
42
/ 103
43
/ 103
44
/ 103
45
/ 103
46
/ 103
47
/ 103
48
/ 103
49
/ 103
50
/ 103
51
/ 103
52
/ 103
53
/ 103
54
/ 103
55
/ 103
56
/ 103
57
/ 103
58
/ 103
59
/ 103
60
/ 103
61
/ 103
62
/ 103
63
/ 103
64
/ 103
65
/ 103
66
/ 103
67
/ 103
68
/ 103
69
/ 103
70
/ 103
71
/ 103
72
/ 103
73
/ 103
74
/ 103
75
/ 103
76
/ 103
77
/ 103
78
/ 103
79
/ 103
80
/ 103
81
/ 103
82
/ 103
83
/ 103
84
/ 103
85
/ 103
86
/ 103
87
/ 103
88
/ 103
89
/ 103
90
/ 103
91
/ 103
92
/ 103
93
/ 103
94
/ 103
95
/ 103
96
/ 103
97
/ 103
98
/ 103
99
/ 103
100
/ 103
101
/ 103
102
/ 103
103
/ 103
Recommended
PDF
SVG MANIAX Ver.2 - Mars vanilla
by
Naoki Matsuda
PPTX
SMACSS入門
by
iPride Co., Ltd.
PDF
SVG MANIAX - CSS Nite After dark7
by
Naoki Matsuda
PDF
Ruka 20191212
by
RukaMenda
PDF
jQuery Mobileの基礎
by
Takashi Okamoto
PDF
マークアップ講座 02 CSS
by
eiji sekiya
PPTX
Web Component概要
by
Shumpei Shiraishi
PDF
JavaScript basic, jQuery animation
by
Yossy Taka
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
by
Horiguchi Seito
PDF
なんでCSSすぐ死んでしまうん
by
Hayato Mizuno
PDF
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
by
Kazuki Akiyama
PDF
CSS3 Design Recipe
by
Kazunari Hara
PDF
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
by
Chieko Aihara
PPT
CSS勉強会
by
Chisa Youzaka
KEY
コーディングが上達するコツ
by
evol-ni
PDF
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
by
Yahoo!デベロッパーネットワーク
PPTX
CSS設計
by
GIG inc.
PPTX
HTMLのアウトラインを意識しよう
by
shigetoshi komatsu
PDF
今必要なCSSアーキテクチャ
by
Mayu Kimura
PDF
今更ながらCSS3を試してみた
by
Takao Sumitomo
PDF
WordBenchTokyo-20111126
by
webourgeon
PPTX
Oocssとかついでにsmacssとbemの話も
by
Yumi uniq Ishizaki
PDF
CSS の歩き方
by
Seiichiro Mishiba
PDF
まだ間に合う「CSS設計」ことはじめ。CSSの闇に飲み込まれないための考え方。
by
Hiroshi Urabe
PDF
CSSの光と闇
by
Shuma Mizuno
PDF
ネストを覚えた人のためのSassの便利な使い方
by
Hiroki Shibata
PDF
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
by
Shunsuke Watanabe
PDF
Html5勉強会スライド
by
Yu Kato
PDF
Laravel aspectで関心の分離
by
Kenjiro Kubota
PDF
Responsableを使ったadr実装
by
Kenjiro Kubota
More Related Content
PDF
SVG MANIAX Ver.2 - Mars vanilla
by
Naoki Matsuda
PPTX
SMACSS入門
by
iPride Co., Ltd.
PDF
SVG MANIAX - CSS Nite After dark7
by
Naoki Matsuda
PDF
Ruka 20191212
by
RukaMenda
PDF
jQuery Mobileの基礎
by
Takashi Okamoto
PDF
マークアップ講座 02 CSS
by
eiji sekiya
PPTX
Web Component概要
by
Shumpei Shiraishi
PDF
JavaScript basic, jQuery animation
by
Yossy Taka
SVG MANIAX Ver.2 - Mars vanilla
by
Naoki Matsuda
SMACSS入門
by
iPride Co., Ltd.
SVG MANIAX - CSS Nite After dark7
by
Naoki Matsuda
Ruka 20191212
by
RukaMenda
jQuery Mobileの基礎
by
Takashi Okamoto
マークアップ講座 02 CSS
by
eiji sekiya
Web Component概要
by
Shumpei Shiraishi
JavaScript basic, jQuery animation
by
Yossy Taka
Similar to 2017: A CSS Design Odyssey
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
by
Horiguchi Seito
PDF
なんでCSSすぐ死んでしまうん
by
Hayato Mizuno
PDF
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
by
Kazuki Akiyama
PDF
CSS3 Design Recipe
by
Kazunari Hara
PDF
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
by
Chieko Aihara
PPT
CSS勉強会
by
Chisa Youzaka
KEY
コーディングが上達するコツ
by
evol-ni
PDF
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
by
Yahoo!デベロッパーネットワーク
PPTX
CSS設計
by
GIG inc.
PPTX
HTMLのアウトラインを意識しよう
by
shigetoshi komatsu
PDF
今必要なCSSアーキテクチャ
by
Mayu Kimura
PDF
今更ながらCSS3を試してみた
by
Takao Sumitomo
PDF
WordBenchTokyo-20111126
by
webourgeon
PPTX
Oocssとかついでにsmacssとbemの話も
by
Yumi uniq Ishizaki
PDF
CSS の歩き方
by
Seiichiro Mishiba
PDF
まだ間に合う「CSS設計」ことはじめ。CSSの闇に飲み込まれないための考え方。
by
Hiroshi Urabe
PDF
CSSの光と闇
by
Shuma Mizuno
PDF
ネストを覚えた人のためのSassの便利な使い方
by
Hiroki Shibata
PDF
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
by
Shunsuke Watanabe
PDF
Html5勉強会スライド
by
Yu Kato
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
by
Horiguchi Seito
なんでCSSすぐ死んでしまうん
by
Hayato Mizuno
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
by
Kazuki Akiyama
CSS3 Design Recipe
by
Kazunari Hara
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
by
Chieko Aihara
CSS勉強会
by
Chisa Youzaka
コーディングが上達するコツ
by
evol-ni
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
by
Yahoo!デベロッパーネットワーク
CSS設計
by
GIG inc.
HTMLのアウトラインを意識しよう
by
shigetoshi komatsu
今必要なCSSアーキテクチャ
by
Mayu Kimura
今更ながらCSS3を試してみた
by
Takao Sumitomo
WordBenchTokyo-20111126
by
webourgeon
Oocssとかついでにsmacssとbemの話も
by
Yumi uniq Ishizaki
CSS の歩き方
by
Seiichiro Mishiba
まだ間に合う「CSS設計」ことはじめ。CSSの闇に飲み込まれないための考え方。
by
Hiroshi Urabe
CSSの光と闇
by
Shuma Mizuno
ネストを覚えた人のためのSassの便利な使い方
by
Hiroki Shibata
大阪Node学園八時限目 「コーディングのためのless - 基礎編 -」
by
Shunsuke Watanabe
Html5勉強会スライド
by
Yu Kato
More from Kenjiro Kubota
PDF
Laravel aspectで関心の分離
by
Kenjiro Kubota
PDF
Responsableを使ったadr実装
by
Kenjiro Kubota
PDF
土日でLineみたいなチャット作ってきた!
by
Kenjiro Kubota
PDF
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
PDF
FirebaseとNuxtでLPを作って見た
by
Kenjiro Kubota
PDF
中・大規模でLaravelを導入するTips
by
Kenjiro Kubota
PDF
Akkaとは。アクターモデル とは。
by
Kenjiro Kubota
PDF
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
by
Kenjiro Kubota
PDF
アイスタイル特設サイトにおけるVue.js導入事例(再演)
by
Kenjiro Kubota
PDF
カメラを利用したアプリを作って約1000人で遊んだ話
by
Kenjiro Kubota
PDF
gRPC入門
by
Kenjiro Kubota
PDF
いまどき(これから)のPHP開発
by
Kenjiro Kubota
PDF
Viewを活用して複雑化と戦う
by
Kenjiro Kubota
PDF
LaravelでAPI定義を管理する
by
Kenjiro Kubota
PDF
introducing vue-wait-component
by
Kenjiro Kubota
PDF
HHVM/Hackを本番投入した話
by
Kenjiro Kubota
PDF
アイスタイル特設サイトにおけるVue.jsの導入事例
by
Kenjiro Kubota
PDF
フロントエンドエンジニアが知るべきFirebaseの世界
by
Kenjiro Kubota
PDF
Introducing hhvm hack-async
by
Kenjiro Kubota
PDF
HackのAsyncCurlで死んだ話
by
Kenjiro Kubota
Laravel aspectで関心の分離
by
Kenjiro Kubota
Responsableを使ったadr実装
by
Kenjiro Kubota
土日でLineみたいなチャット作ってきた!
by
Kenjiro Kubota
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
FirebaseとNuxtでLPを作って見た
by
Kenjiro Kubota
中・大規模でLaravelを導入するTips
by
Kenjiro Kubota
Akkaとは。アクターモデル とは。
by
Kenjiro Kubota
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
by
Kenjiro Kubota
アイスタイル特設サイトにおけるVue.js導入事例(再演)
by
Kenjiro Kubota
カメラを利用したアプリを作って約1000人で遊んだ話
by
Kenjiro Kubota
gRPC入門
by
Kenjiro Kubota
いまどき(これから)のPHP開発
by
Kenjiro Kubota
Viewを活用して複雑化と戦う
by
Kenjiro Kubota
LaravelでAPI定義を管理する
by
Kenjiro Kubota
introducing vue-wait-component
by
Kenjiro Kubota
HHVM/Hackを本番投入した話
by
Kenjiro Kubota
アイスタイル特設サイトにおけるVue.jsの導入事例
by
Kenjiro Kubota
フロントエンドエンジニアが知るべきFirebaseの世界
by
Kenjiro Kubota
Introducing hhvm hack-async
by
Kenjiro Kubota
HackのAsyncCurlで死んだ話
by
Kenjiro Kubota
2017: A CSS Design Odyssey
1.
2017: A CSS
Design OdysseyKenjiroKubota
2.
社内勉強会のため自己紹介なし
3.
今日伝えたいことあらゆるCSS設計の思想を知ることで、今後の自分たちのCSS設計にフィードバックしていきたい。してほしい。良いCSS設計はメンテナンスしやすい。楽していこう
4.
A Long Past
5.
html<a id="btn-main">メイン</a><a id="btn-sub">サブ</a>css#btn-main
{width: 100px;height: 40px;background-color: red;}#btn-sub {width: 100px;height: 40px;background-color: blue;}
6.
問題点使いまわせないID要素似たようなプロパティ値HTMLとCSSが密結合
7.
HTMLの構造とCSSは分離していきたい
8.
OOCSSObject Oriented CSS
9.
OOCSS2009 -米Yahoo!のNicole Sullivanが提唱オブジェクト指向の考え方を参考にした設計方法Twitter
Bootstrapが採用している設計
10.
CSS is too
fragileNicole Sullivan
11.
プロパティ より セレクタ.selector
{ ... }
12.
コンテナ(入れ物)とコンテンツ(中身)を分離ストラクチャー(構造)とスキン(装飾)の分離
13.
html<a class="btn btn-red">メイン</a><a
class="btn btn-blue">サブ</a>css.btn {width: 100px;height: 40px;}.btn-red {background-color: red;}.btn-blue {background-color: blue;}
14.
OOCSSで重要なこと重複を避ける、冗長性を避ける同じようなプロパティの要素はまとめる要素依存、場所依存を避けるHTML要素を変更しても崩れない(にくい)
15.
Past ━
16.
OOCSS
17.
HTMLの変更は簡単そうだ。だがCSSはどうだろう
18.
BEMBlock Element Modi
er
19.
BEM2012~13 -Yandexのフロントエンジニアが提唱長期間メンテナンスできる設計で尚且つファーストバージョンの開発を素早く行えるチームのスケーラビリティコードの再利用性が高い
20.
Block - 要素のルートElement
- Blockの子要素。単体では存在しないModi er - 元となるBlock,Elementから変化した状態を表す要素
23.
MindBEMding
24.
MindBEMdingBEMをCSSのクラス名に適用するための規則Elementはアンダースコア2つ、Modi erはハイフン2つで区切って繋げることでBEMの各要素を表現する※この区切りをBEMではセパレーターと呼ぶ.Block__Element--Modi er
25.
html<ul class="main-tab"><li class="main-tab__button"><a
href="">Tab1</a></li><li class="main-tab__button"><a href="">Tab2</a></li><li class="main-tab__button main-tab__button--active"><a href="">Tab3</a></li><li class="main-tab__button"><a href="">Tab4</a></li></ul>
26.
css.main-tab {...}.main-tab__button {...}.main-tab__button--active
{...}
27.
scss.main-tab {...&__button {...&--active
{...}}}Block単位でファイル分割するのが通例(main-tab.scss)
28.
MindBEMdingの書き方に拒絶反応を示す人もいるかもしれないけどルールが明確で命名に迷いにくい
29.
Rule.widget_list / .widget__list
30.
BEM
31.
MCSSMultilayer CSS
32.
MCSS2012~3 -OOCSS, BEMを基とした構成システム海外のSNSサイト会社のチームから作られた
33.
レイヤーで分割
34.
Layer0. Foundation1. Base2.
Project3. Cosmetic
36.
0: Foundationリセットとちょっとした変更を加えるだけのメインレイアウトのベースを記述した、全ページに適用されるスタイルを含める。すべてのリセットのようなファンデーションスタイルは、分割ファイルと共通CSSファイルの先頭とのどちらの場合でも、スタート直後に配置される。※ 当時はCSSプリプロセッサは考慮されいないので分割でCSSファイルを作成し、レイヤー順にリンクさせるように説明されている。
37.
1: Base再利用可能で抽象的な構造フォームボタンナビゲーションブロックその他MCSS導入時にまず最初に再利用可能な標準スタイルのセットを作成すること。
38.
2: Project分離されたページを構成するプロジェクトモジュールを含む登録フォームログインブロックショッピングカートその他可能な限りユニークなCSSクラスの仕様が推奨される。
39.
3: Cosmeticわずかに影響するスタイル。リンクカラーシンプルなOOCSSグローバルな修飾子
40.
Layer(再掲)0. Foundation (reset,
normalize)1. Base (OOCSS)2. Project (BEM)3. Cosmetic (OOCSS)OOCSSとBEMの要素を取り入れ、階層の概念を持っている
41.
SMACSSScalable and Modular
Architecture for CSS
42.
SMACSS2013-CSSのルールを5種類にカテゴライズし、それぞれの考え方や記述ルールが決められている電子書籍で無料で提供コード量を減らすメンテナンス性を高めるユーザー体験の一貫性の向上CSSプリプロセッサ前提っぽい?
43.
CSSのカテゴライズBase - 要素そのもののデフォルトスタイルLayout
- ページをエリアごとに分割Module - 再利用可能なパーツState - レイアウトやモジュールの特定の状態を示すTheme - サイトのルック&フィールを定義
44.
Base Ruleサイト全体で要素そのもののデフォルトスタイルを定義要素そのものの定義という性質のため、IDやクラスは使わない。CSSリセットもベースに含む要素セレクタ( body
, a )属性セレクタ( input[type=text] )擬似クラスセレクタ( a:hover )※要素セレクタに対しては具体的なスタイル指定をしない。(上書きが発生しないように)
45.
Layout Ruleページのエリア分けを行う。.l- ,
.layout- プレフィックスを付ける。IDはCSSの詳細度を高めてしまうのでなるべく避ける(SMACSSでは禁止はしていない)※詳細度は後ほど説明します
46.
子孫セレクタを使って分岐.l-main {width: 70%;}.l-fixed
.l-main {width: 600px;}.l-fixed が付いている場合はpx指定、そうでなければ%指定
47.
Module Rule再利用可能なパーツロゴナビゲーションタブレイアウトパーツの中に入れて、どこに置いても再利用できるように独立させておく。
48.
モジュールの命名規則親モジュールの名前をプレフィックスでつける<div class="item"><p class="item-text"></p></div>IDや要素セレクタは避けて、クラスで統一するモジュール全部にクラスを付ける必要はない。li
, a ... クラスとつけなくても良い(モジュール内で何度も登場する要素にはクラスをつける)
49.
State Rule特定の状態に依ってスタイルを上書きする状態の切り替えはJavascriptが行う結果がtrueの場合は .is-表示/非表示.is-hidden.is-error.is-active
50.
Theme Ruleすべての主要なルールに対して影響を与える。main.css.mod {border:
1px solid;}theme.css.mod {border-color: blue;}
51.
規模によっては上書きではなくテーマ特有のクラスを設定するほうが良いかもしれない。そういう場合は .theme- プレフィックスを使う。.theme-border
{border-color: purple;}.theme-background {background: linear-gradient( ... );}
52.
MCSSより、より実践的な印象
53.
閑話休題
54.
CSSの詳細度https://www.w3.org/TR/selectors/#speci city
55.
詳細度の概念詳細度は、どのプロパティ値が最もある要素に関係があり、適用されるかをブラウザが決定する手段です。詳細度は異なる順のセレクタで構成されるマッチング規則にのみ基づきます。どのように評価されるか詳細度はそれぞれのセレクタ型の数の連結で計算されます。それは、一致するマッチング表現を適用する重みではありません。詳細度が等しい場合は、 CSS で発見される最も後の宣言が要素に適用されます。(MDN)
56.
speci cityは直訳だと特異性なんだけど…個人的には詳細度というより優先度と置き換えて覚えるとわかりやすいかもしれません。
57.
詳細度の序列小全称セレクタ (*)タイプセレクタ (要素名)クラスセレクタ属性セレクタ
([type="text"], [href="#"])擬似クラス (:after, :nth-child)ID セレクタインラインスタイル大
58.
!important の例外詳細度とは無関係に上書きを行う:not の例外否定擬似クラスの
:not は詳細度の計算では擬似クラスとは見なされません。しかし、否定擬似クラスの中に置かれたセレクタは、通常のセレクタのように計算されます。
59.
Questionhtml<p id="hoge"><span id="fuga"
class="piyo1 piyo2 piyo3">ここは何色?</span></p>css#hoge #fuga {color: red;}#hoge .piyo1.piyo2.piyo3 {color: blue;}
60.
正解は 赤
61.
詳細度はCSSの複雑度を上げてしまうわかりやすく同レベルの詳細度に留めておくことで後勝ちの法則を保つid や !important
は使わない
62.
FLOCSSFoundation Layout Object
CSS
63.
FLOCSS2014 -サイバーエージェントの谷拓樹氏が提唱「CSS設計の教科書」の著者OOCSS, SMACSS,
BEM, SuitCSSのコンセプトを取り入れ、MCSSのレイヤー構成にも影響を受けているいいとこ取りCSSプリプロセッサ前提
64.
基本原則FLOCSSは3つのレイヤーとObjectレイヤーの子レイヤーで構成されるFoundationLayoutObjectComponentProjectUtility
65.
FoundationReset.cssやNormalize.cssなどを用いたブラウザのデフォルトスタイルの初期化や、プロジェクトにおける基本的なスタイルを定義します。ページの下地としての全体の背景や、基本的なタイポグラフィなどが該当します。
66.
Layoutページを構成するヘッダーやメインのコンテンツエリア、サイドバーやフッターといったプロジェクト共通のコンテナーブロックのスタイルを定義します。基本的には、ページ単位で唯一の存在である要素となるため、Layoutレイヤーの要素ではIDセレクタを採用することも可能です。ただしIDセレクタは高い詳細度を持つため、それを懸念する場合には、 l-* プレフィックスをつけた命名を採用するか、あるいは[id="header"]
のような属性セレクタを用いることを推奨します。
67.
ObjectOOCSSのコンセプトを元に、プロジェクトにおける繰り返されるビジュアルパターンをすべてObjectと定義します。FLOCSSでのObjectは、さらに次の3つのレイヤーに分けられます。
68.
Component再利用できるパターンとして、小さな単位のモジュールを定義します。出来る限り、最低限の機能を持ったものとして定義されるべきであり、それ自体が固有の幅や色などの特色を持つことは避けるのが望ましいです。Projectプロジェクト固有のパターンであり、いくつかのComponentと、それに該当しない要素によって構成されるものを定義します。UtilityComponentとProjectレイヤーのObjectのモディファイアで解決することが難しい・適切では無い、わずかなスタイルの調整のための便利クラスなどを定義します。
69.
命名規則MindBEMdingを採用。状態を表すものはSMACSSのStateパターンを用いて .is- プレフィックスを使う。ObjectのプレフィックスComponent
- .c-*Project - .p-*Utility - .u-*
70.
ディレクトリ構成├── foundation├── layout└──
object├── component├── project└── utility
71.
今までのCSS設計の良いところ実践的なことが詰まっている印象
72.
RSCSSReasonable System for
CSS
73.
RSCSS2015 -合理的にCSSを組み立てるためのアイデア集5つの分類ComponentsElementsVariantsLayoutsHelpers
74.
Components検索フォームのようなひとかたまりを一つのコンポーネントとして考える
75.
命名規則Componentはダッシュで区切られた少なくとも2つの単語からなるLikeボタン .like-button検索フォーム .search-formニュースカード
.article-card
76.
ElementsComponentを構成する内部要素
77.
命名規則それぞれのComponentは通常、複数のElementを持つ。Elementの名前は1単語にする.search-form {> .field
{ /* ... */ }> .action { /* ... */ }}
78.
Elementのセレクター可能な限り子セレクタ > を使う。Componentのネスト防止になるし、子孫セレクタよりパフォーマンスが良い。複数の単語が使いたい2つ以上の単語からなる名前をつけたい場合は、ダッシュやアンダースコアを使わないで連結するタグセレクタは避けるちゃんとクラス名を付ける
79.
VariantsComponentもElementもそれぞれvariantを持つことができる
80.
命名規則variantのためのクラス名にはダッシュをプレフィックスとして付ける.like-buttoon {&.-wide {
/* ... */ }&.-short { /* ... */ }&.-disabled { /* ... */ }}
81.
ElementのvariantElementもまたvariantを持つ頃ができる.shopping-card {> .title
{ /* ... */ }> .title.-small { /* ... */ }}
82.
Layouts
83.
ポジションに関するプロパティは避けるComponentは異なるコンテキストで再利用するべきなので以下のようなプロパティを書くのは避けるPositioning (position, top,
left, right, bottom)Floats ( oat, clear)Margins (margin)Dimensions (width, height) *
84.
親要素でポジションを定義する.article-list {& {@include
clearfix;}> .article-card {width: 33.3%;float: left;}}.article-card {& { /* ... */ }> .image { /* ... */ }> .title { /* ... */ }> .category { /* ... */ }}
85.
Helpers._unmargin { margin:
0 !important; }._center { text-align: center !important; }._pull-left { float: left !important; }._pull-right { float: right !important; }汎用クラスはアンダースコアで始まる名前で別ファイルに置かれ、値を上書きする。通常、 !important でタグ付けされる。
86.
命名規則アンダースコアをクラス名のプレフィックスとして付ける。<div class='order-graphs -slim
_unmargin'></div>Heplerの整理helpers というひとつのファイルに収める。複数ファイルに分割することもできるが、たくさんの helper を最小限に維持するのが好ましい。
87.
CSS Structureファイル単体でひとつのComponentUse glob
matching@import 'components/*';過剰なネストを避ける/* ✓ Better: 2 levels */.image-frame {> .description { /* ... */ }> .description > .icon { /* ... */ }}
88.
Atomic Designのアイデアも取り入れられている印象
89.
ESCCEnduring CSS
90.
ECSS2015 -bet365.com フロントエンジニアEnduring
= 長続きする、永続的な、不屈の、我慢強い、心房強いOOCSSとは真逆のアプローチ
91.
DRYではなくDecoupling
92.
ECSSが目指すものCSSシンタックスにあるブレース {} の外側をどのように扱うか。プロパティをDRYにするのではなくキーセレクタをDRYにするべき。(OOCSSもセレクタに着目し他考え方だが、あくまでもブレース内をDRYにするための思想)キーセレクタをDRYにするコンテキストが違うコンポーネントは既存のコンポーネントと似ていても別物として扱う。抽象化したモジュールは変更に対する影響範囲が大きく扱いずらい。
93.
モジュールnamespace - クラス名の衝突を防ぐための接頭辞Module
- 個別の機能領域の最も大きな区分Component - Moduleに含まれる機能性を持つ部品ChildNode - Componentに含まれる独立した部品variant - Module内の部品の別の状態
94.
命名規則ECSSとBEMModule,Component === BlockChildNode
=== Elementvariant === Modi reECSSとAtomicDesignModule === OrganismsComponent === Molecules
95.
モジュールは以下のようなシンタックスで表現されますnamespace-ModuleName_ChildNode-variantnamespace-ComponentName_ChildNode-variantnamespace はModule名になることもあります。modulename-ComponentName_ChildNode-variantnamespaceとvariantはダッシュ、それ以外はアンダースコアで繋ぐ。
96.
名前空間(namespace)クラス名の重複を避けるためECSSでは必ず名前空間を付けるトップページ TopPage .tp-カテゴリートップ
CategoryTop .ct-ショッピングカート ShoppingCart .sc-
97.
サイトに共通する構造的なモジュールStructureから取った .st- の名前空間を付けると良いサイトに共通する汎用的なモジュールSideWideから取った
.sw- の名前空間を付けると良いLayout名前空間レイアウトを管理するモジュールの場合は .layout- 名前空間がオススメ
98.
ディレクトリ構成(略)└── css├── font/├──
base/│ ├── variable/│ ├── function/│ ├── mixin/│ ├── _normalize.scss│ ├── _base.scss│ └── _Icon.scss├── SiteWide/├── Structure/├── namespace/│ ├── layout/│ ├── news/│ ├── product/│ ├── results/│ ├── search/│ └── sitemap/└── site.scss
99.
Moduleの状態変化状態変化はWAI-ARIA(ウェイ・アリア)を使うことが推奨されるaria-selected="true"aria-disabled="true"aria-hidden="true"aria-expanded="true"aria-busy="true"などなど。標準化された支援技術によってアクセシブルになることが期待できる。WAI-ARIAを使わない場合はvariantを使うことが勧められてます.co-Button-selected
100.
ECSSの十戒1 すべてのキーセレクタは"Single Source
of truth"であること2 入れ子にしない3 IDセレクタは使わない4 ベンダープレフィックスは書かない5 サイズや色、z-indexに変数を使う6 モバイルファーストで書く(max-widthを避ける)7 mixinを控えめにする(extendを避ける)8 すべてのマジックナンバーとブラウザハックに対してコメントを書く9 インラインイメージを使わない10 複雑なCSSを書かない
101.
長い長い旅でしたねで、結局どの設計を使えばいいの・・?
102.
どの設計を使うかはサイトの規模や、成長性次第コンパクトなサイトでSMACSS, FLOCSSなどは過剰かもしれない。将来的にサイトデザインが大きな変わりそうであれば捨てやすいECSSが良いかもしれない。でもデザインの統一性は必要ならOOCSSのエッセンスが必要なことも?大切なのはこのような設計方法を知ることでその良い部分を取り入れること自分たちのルールを混ぜるもよし。READMEにXXCSS設計を基にデザインされていると明記して、後からジョインされるメンバーも導入しやすい環境など。
103.
thanks;)
Download
[8]
ページ先頭
©2009-2025
Movatter.jp