壊れやすいCSS

59
壊れやすいCSS 小林 正弘

Transcript of 壊れやすいCSS

Page 1: 壊れやすいCSS

壊れやすいCSS

小林 正弘

Page 2: 壊れやすいCSS

小林 正弘

Frontend Engineer

Page 3: 壊れやすいCSS

div { background-color: red;}

.hoge { font-size: 16px;}

Page 4: 壊れやすいCSS

div }

.hoge }

CSSはカンタン

Page 5: 壊れやすいCSS

ゆえに壊れやすい

Page 6: 壊れやすいCSS

CSSが壊れるって どういうこと?

Page 7: 壊れやすいCSS

Your CSS

Page 8: 壊れやすいCSS

Bad CSS

??

Page 9: 壊れやすいCSS

??

BIG CSSfragile CSS

Page 10: 壊れやすいCSS

??

_人人人人人人人人人人人人人人人人人人人_> これは近い未来のあなたかも知れない <‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y‾

Page 11: 壊れやすいCSS

htmlの構造に依存しすぎない

Page 12: 壊れやすいCSS
Page 13: 壊れやすいCSS
Page 14: 壊れやすいCSS
Page 15: 壊れやすいCSS

スタイルの打ち消しを多用

Page 16: 壊れやすいCSS
Page 17: 壊れやすいCSS
Page 18: 壊れやすいCSS
Page 19: 壊れやすいCSS
Page 20: 壊れやすいCSS

良いCSS設計のゴール

Page 21: 壊れやすいCSS

良いCSS設計のゴール

・予測しやすい ・再利用しやすい ・保守しやすい ・拡張しやすい

Page 22: 壊れやすいCSS

良いCSS設計のゴール

・予測しやすい ・再利用しやすい ・保守しやすい ・拡張しやすい

Page 23: 壊れやすいCSS

良いCSS設計のゴール

・予測しやすい ・再利用しやすい ・保守しやすい ・拡張しやすい

Page 24: 壊れやすいCSS

良いCSS設計のゴール

・予測しやすい ・再利用しやすい ・保守しやすい ・拡張しやすい

Page 25: 壊れやすいCSS

良いCSS設計のゴール

・予測しやすい ・再利用しやすい ・保守しやすい ・拡張しやすい

Page 26: 壊れやすいCSS
Page 27: 壊れやすいCSS
Page 28: 壊れやすいCSS
Page 29: 壊れやすいCSS
Page 30: 壊れやすいCSS
Page 31: 壊れやすいCSS

??

Page 32: 壊れやすいCSS

.item { overflow: hidden; /* Clearfix */padding: 15px;background-color: #eee;

} .item .photo {

float: left; margin-right: 15px;

}.item .info {

overflow: hidden;}

……

.profile { overflow: hidden; /* Clearfix */padding: 20px;background-color: #fff;

} .profile .image {

float: left; border-radius: 80px;

margin-right: 15px;}.profile .text {

overflow: hidden;}

……

Page 33: 壊れやすいCSS

.item { overflow: hidden; /* Clearfix */padding: 15px;background-color: #eee;

} .item .photo {

float: left; margin-right: 15px;

}.item .info {

overflow: hidden;}

……

.item { overflow: hidden; /* Clearfix */padding: 20px;background-color: #0fb2a1;

} .item .photo {

float: left; margin-right: 15px;

}.item .info { color: #fff;

overflow: hidden;}

……

Page 34: 壊れやすいCSS

ボックスのmargin, padding 画像の左寄せなどは レイアウト

ボックスの背景色、 テキストの色、 画像の丸みなどは デザイン

Page 35: 壊れやすいCSS

.sample-block { overflow: hidden; /* Clearfix */padding: 15px;

} . sample-block__image {

float: left; margin-right: 15px;

}. sample-block__body {

overflow: hidden;}

……

.sample-block { overflow: hidden; /* Clearfix */padding: 20px;

} . sample-block__image {

float: left; margin-right: 15px;

}.sample-block__body {

overflow: hidden;}

……

Page 36: 壊れやすいCSS

<div class="sample-block profile"> <div class="sample-block__image"> <img src="profile.jpg"> </div> <div class="sample-block__body"> <p classs="discription">...</p> </div> <ul> <li>...<li> </ul></div>

<div class="sample-block profile"> <div class="sample-block__image photo"> <img src="profile.jpg"> </div> <div class="sample-block__body greeting"> <p class=”name”>...</p> <p classs="greeting">...</ </div> <ul> <li>...<li> </ul></div>

Page 37: 壊れやすいCSS

<div class="sample-block item"> <div class="sample-block__image cover"> <img src="item.jpg"> </div> <div class="sample-block__body info"> <p class=”item_name”>...</p> <p classs="item_discription">...</ </div> <ul> <li>...<li> </ul></div>

Page 38: 壊れやすいCSS

.profile { background-color: #fff;

} .profile .photo { border-radius: 80px;}

.item { background-color: #0fb2a1;

} .item .info { color: #fff;}

Page 39: 壊れやすいCSS

OOCSS

Page 40: 壊れやすいCSS

OOCSS

SMACSS

Page 41: 壊れやすいCSS

OOCSS

SMACSS BEM

Page 42: 壊れやすいCSS

OOCSS

SMACSS BEM SUIT CSS

Page 43: 壊れやすいCSS

FLOCSS

Page 44: 壊れやすいCSS

どんなスタイルが 有るのかすぐにわからない

Page 45: 壊れやすいCSS

??

本セッションでは、壊れやすいCSSと題しまして、いくつかのバッドプラクティスを紹介しつつCSS設計の概念や大切さを改めて再確認していただければな、と思います。

button A

button B

Page 46: 壊れやすいCSS

/*## Headings and paragraphs```<div class="kalei-comments"> <h1>Heading 1</h1> <h2>Heading 2</h2> <h3>Heading 3</h3> <h4>Heading 4</h4> <h5>Heading 5</h5> <h6>Heading 6</h6> <p class="fixie"></p> <ul> <li>List Item 1</li> <li>List Item 2</li> <li>List Item 3</li> </ul></div>

```*/

.kalei-comments > h1,

.kalei-comments > h2,

.kalei-comments > h3,

.kalei-comments > h4,

Page 47: 壊れやすいCSS

Nice Communication!

Page 48: 壊れやすいCSS

CSSプリプロセッサの 落とし穴

Page 49: 壊れやすいCSS
Page 50: 壊れやすいCSS

.list { background-color: #fff; .list__item { & + .list__item { border-top: 1px solid #f3e2ee; } .go:before { font-size: 12px; } .list__item__content { position: relative; display: block; padding: 15px; &.list__item__content--s { padding: 10px; } .feed-list__item.box { & + .box { margin-top: 20px; } .side__ranking-list-item { padding: 10px; & + .side__ranking-list-item { border-top: 1px solid #f3e2ee; }

SASS

Page 51: 壊れやすいCSS

.list { background-color: #fff;}.list .list__item + .list__item { border-top: 1px solid #f3e2ee;}.list .list__item .go:before { font-size: 12px;}.list .list__item .list__item__content { position: relative; display: block; padding: 15px;}.list .list__item .list__item__content.list__item__content--s { padding: 10px;}.list .list__item .list__item__content .feed-list__item.box + .box { margin-top: 20px;}.list .list__item .list__item__content .feed-list__item.box .side__ranking-list-item { padding: 10px;}

CSS

Page 52: 壊れやすいCSS

.list { background-color: #fff;}.list .list__item + .list__item { border-top: 1px solid #f3e2ee;}.list .list__item .go:before { font-size: 12px;}.list .list__item .list__item__content position: relative; display: block; padding: 15px;}.list .list__item .list__item__content.list__item__content--s padding: 10px;}.list .list__item .list__item__content .feed-list__item.box + .box margin-top: 20px;}.list .list__item .list__item__content .feed-list__item.box .side__ranking-list-item padding: 10px;}

CSS

ネストの使用は、3階層までが 好ましい。

Page 53: 壊れやすいCSS

.clearfix:before,

.clearfix:after { content: ''; display: table !important;}.clearfix:after { clear: both;}

.list-a { color: #fff; @extend .clearfix;}.list-b { @extend .clearfix;}.list-c { @extend .clearfix;}.list-d { @extend .clearfix;}.list-e { @extend .clearfix;

SASS

Page 54: 壊れやすいCSS

.clearfix:before, .list-a:before, .list-b:before, .list-c:before, .list-d:before, .list-e:before, .list-f:before, .list-g:before,.clearfix:after,.list-a:after,.list-b:after,.list-c:after,.list-d:after,.list-e:after,.list-f:after,.list-g:after { content: ''; display: table !important;}

.clearfix:after, .list-a:after, .list-b:after, .list-c:after, .list-d:after, .list-e:after, .list-f:after, .list-g:after { clear: both;}

.list-a { color: #fff;}

CSS

Page 55: 壊れやすいCSS

.clearfix:before, .list-a:before, .list-b:before, .list-c:before, .list-d:before, .list-e:before, .list-f:before, .list-g:before,.clearfix:after,.list-a:after,.list-b:after,.list-c:after,.list-d:after,.list-e:after,.list-f:after,.list-g:after content: ''; display: table !important;}

.clearfix:after, .list-a:after, .list-b:after, .list-c:after, .list-d:after, .list-e:after, .list-f:after, .list-g:after clear: both;}

.list-a { color: #fff;}

CSS

多用するclassはユーティリティ としてhtmlに指定する。

Page 56: 壊れやすいCSS

CSSプリプロセッサは 設計の難しさを解決するものではない

Page 57: 壊れやすいCSS

やっぱりCSSは 壊れやすいです

Page 58: 壊れやすいCSS

壊れない完璧な設計を求めるのではなく、 壊れた時に勇気を持って修復できる設計を。“

ーcssradar

Page 59: 壊れやすいCSS

Thank You!