Slide 1

Slide 1 text

CsS ThInKiNg ARcHiTeCtUrE FRoNtReNd iN OSaKa Re:cReatEr’S kAnSaI SAtUrDaY, sEpTeMbEr 14 2013 AbOuT

Slide 2

Slide 2 text

HirOkI taNi CYbEragEnT, inC.

Slide 3

Slide 3 text

λΠτϧ @T32K @AhOmU @HiLoKi @HiLoKi

Slide 4

Slide 4 text

APp WeB

Slide 5

Slide 5 text

¤ ARcHiTeCtUrE

Slide 6

Slide 6 text

k 1 BRoWsEr 0 PsD

Slide 7

Slide 7 text

q k u

Slide 8

Slide 8 text

¤ ¥

Slide 9

Slide 9 text

.text { color: black; } .catchcopy { color: red; } #message .text { color: green; }

Slide 10

Slide 10 text

10mIn 1 1 l 12 9 3 6 ¥

Slide 11

Slide 11 text

k1 1 l 12 9 3 6 10mIn 60mIn...aNd MoRe 1 1 l 12 9 3 6 1 1 l 12 9 3 6 111 1 1 l 12 9 3 6 1 1 l 12 9 3 6 1 1 l 12 9 3 6 1 1 l 12 9 3 6 ¤ ¥

Slide 12

Slide 12 text

k 10mIn BUgS... 1 1 1 ± ' l l l l l l H H ± ' l l l l l l H H ± ' l l l l l l H H 1 1 l 12 9 3 6 ¤ ¥

Slide 13

Slide 13 text

L? SOmEoNe

Slide 14

Slide 14 text

L N ? YOu

Slide 15

Slide 15 text

k 1 1 12 9 6 3 l 30mIn 1 1 12 9 6 3 l 30mIn ¤ ¥

Slide 16

Slide 16 text

1 CsS

Slide 17

Slide 17 text

1 HtMl 1 CsS 1 Js

Slide 18

Slide 18 text

e GoAl

Slide 19

Slide 19 text

®©° ®© PHiLiP waLtOn CsS arChItEcTuRe

Slide 20

Slide 20 text

®©° ®© PHiLiP waLtOn CsS arChItEcTuRe

Slide 21

Slide 21 text

& PReDiCtAbLe REuSaBlE MAiNtAiNaBlE SCaLaBlE

Slide 22

Slide 22 text

#content article h1:first-child { ... }

Slide 23

Slide 23 text

Article Title

Slide 24

Slide 24 text

Article Title

Slide 25

Slide 25 text

2013/09/13

Article Title

Slide 26

Slide 26 text

D ¤

Slide 27

Slide 27 text

.entry-title { ... }

Slide 28

Slide 28 text

2013/09/13

Article Title

Slide 29

Slide 29 text

2013/09/13

Article Title

Slide 30

Slide 30 text

P O CsS Is ToO FrAgIlE

Slide 31

Slide 31 text

®©° ®© OoCsS bY niCoLe suLlIvAn

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

SEpArAtE CoNtAiNeR AnD CoNtEnT SEpArAtE StRuCtUrE AnD SkIn

Slide 38

Slide 38 text

SEpArAtE CoNtAiNeR AnD CoNtEnT SEpArAtE StRuCtUrE AnD SkIn

Slide 39

Slide 39 text

®©° MEdIa obJeCt

Slide 40

Slide 40 text

...

...

Slide 41

Slide 41 text

...

...

Slide 42

Slide 42 text

...

...

Slide 43

Slide 43 text

.media { overflow: hidden; // Clearfix *zoom: 1; // Clearfix } .media-image { float: left; margin-right: 10px; } .media-image > img { display: block; } .media-body { overflow: hidden; }

Slide 44

Slide 44 text

...

...

Slide 45

Slide 45 text

...

...

Slide 46

Slide 46 text

SEpArAtE CoNtAiNeR AnD CoNtEnT SEpArAtE StRuCtUrE AnD SkIn

Slide 47

Slide 47 text

h2 { font-weight: bold; font-size: 16px; } #news h2 { border-bottom: 1px solid black; padding-bottom: 0.5em; }

Slide 48

Slide 48 text

h2 { font-weight: bold; font-size: 16px; } #news h2, #speakers h2 { border-bottom: 1px solid black; padding-bottom: 0.5em; }

Slide 49

Slide 49 text

Hiroki Tani

Session Title

Summary

Slide 50

Slide 50 text

®©°

Slide 51

Slide 51 text

Hiroki Tani

Session Title

...

Books

  • ...

Slide 52

Slide 52 text

Hiroki Tani

Session Title

...

Books

  • ...

Slide 53

Slide 53 text

Hiroki Tani

Session Title

...

Books

  • ...

Slide 54

Slide 54 text

D ¤

Slide 55

Slide 55 text

h2 { font-weight: bold; font-size: 16px; } .headline { border-bottom: 1px solid black; padding-bottom: 0.5em; }

Slide 56

Slide 56 text

Hiroki Tani

Session Title

...

Books

  • ...

Slide 57

Slide 57 text

.heading { font-weight: bold; font-size: 16px; } .headline { border-bottom: 1px solid black; padding-bottom: 0.5em; }

Slide 58

Slide 58 text

Hiroki Tani

Session Title

...

Books

  • ...

Slide 59

Slide 59 text

®©° = DoN’t uSe iD! *

Slide 60

Slide 60 text

®©° 3 SHoUlDn'T uSe iD seLeCtOr 1 1

Slide 61

Slide 61 text

®©° = .colorRed { color: red; } *

Slide 62

Slide 62 text

®©° 3 1 1 .note { color: red; }

Slide 63

Slide 63 text

®©° 3 iF YoU NeEd It. 1 1

Slide 64

Slide 64 text

®©° ®©° SmAcSs BY joNaThAn snOoK

Slide 65

Slide 65 text

cAtEgOrIzAtIoN nAmInG CoNvEnTiOn dEcOuPlInG CsS FrOm HtMl

Slide 66

Slide 66 text

cAtEgOrIzAtIoN BAsE MOdUlE THeMe STaTe LAyOuT

Slide 67

Slide 67 text

/* # Base */ body, form { margin: 0; padding: 0; } a { color: #039; } a:hover { color: #03F; }

Slide 68

Slide 68 text

/* # Layout */ .l-header, l-article, l-footer { width: 960px; margin: auto; } .l-article { border: solid #CCC; border-width: 1px 0 0; } .l-grid { margin: 0; padding: 0; list-style-type: none; } .l-grid > li { display: inline-block; margin: 0 0 10px 10px; }

Slide 69

Slide 69 text

/* # Layout */ #header, #article, #footer { width: 960px; margin: auto; } .l-article { border: solid #CCC; border-width: 1px 0 0; } .l-grid { margin: 0; padding: 0; list-style-type: none; } .l-grid > li { display: inline-block; margin: 0 0 10px 10px; }

Slide 70

Slide 70 text

/* # Layout */ .l-container { width: 960px; margin: auto; } .l-article { border: solid #CCC; border-width: 1px 0 0; } .l-grid { margin: 0; padding: 0; list-style-type: none; } .l-grid > li { display: inline-block; margin: 0 0 10px 10px; }

Slide 71

Slide 71 text

/* # State */ .is-hidden { display: none; } .is-error { font-weight: bold; color: red; } .is-tab-active { border-bottom-color: transparent; }

Slide 72

Slide 72 text

/* # Theme */ /* ## Pink Theme CSS */ .theme-header { background-image: url("/theme/pink/ header.png"); } .theme-border { 1px solid pink; }

Slide 73

Slide 73 text

/* # Module */ /* ## Button */ .btn { ... } .btn-primary { ... } .btn-small { ... } /* ## UIlist */ .uilist { ... } .uilist-item { ... } .uilist-item-icon { ... } /* ## Widget */ .widget { ... } .widget-title { ... } .widget-body { ... }

Slide 74

Slide 74 text

Submit Help Complete!

Slide 75

Slide 75 text

Title

Text

Slide 76

Slide 76 text

.widget { ... } .widget p { margin-top: 10px; margin-bottom: 10px; }

Slide 77

Slide 77 text

Title

  • ListItem
  • ListItem
  • ListItem

Slide 78

Slide 78 text

.widget { ... } .widget p, .widget ul { margin-top: 10px; margin-bottom: 10px; }

Slide 79

Slide 79 text

Title

  • ListItem
  • ListItem
  • ListItem

Slide 80

Slide 80 text

.widget { ... } .widget-body { margin-top: 10px; margin-bottom: 10px; }

Slide 81

Slide 81 text

®©° >

Slide 82

Slide 82 text

®©° , ‘RUlE Of ThReE’

Slide 83

Slide 83 text

®©° 3, 6, 9, 12, 15 , ‘RUlE Of ThReE’

Slide 84

Slide 84 text

®©° 3, 6, 9, 12, 15 , ‘RUlE Of ThReE’

Slide 85

Slide 85 text

®©° 3, 6, 12, 24, 48 , ‘RUlE Of ThReE’

Slide 86

Slide 86 text

®©° 3, 6, 9, 12, 15 , ‘RUlE Of ThReE’

Slide 87

Slide 87 text

®©° , ‘RUlE Of ThReE’ 3, 6, 9, 12, 15

Slide 88

Slide 88 text

®©° DOnAlD e, knUtH ࣌ظঘૣͳ࠷దԽ͸ ॾѱͷࠜݯͰ͋Δɻ ... PrEmAtUrE OpTiMiZaTiOn Is ThE RoOt Of AlL EvIl.

Slide 89

Slide 89 text

®©° DOnAlD e, knUtH pReMaTuRe OpTiMiZaTiOn iS ThE RoOt Of AlL EvIl.

Slide 90

Slide 90 text

®©°

Slide 91

Slide 91 text

®©° = NOt SeMaNtIcS! *

Slide 92

Slide 92 text

®©° nOt AlL SeMaNtIcS NeEd tO Be CoNtEnT-DeRiVeD. NIcOlAs gaLlAgHeR

Slide 93

Slide 93 text

CSS Architecture

Review: Hiroki Tani

CSS Bible!

...

Rating: 4.5

Slide 94

Slide 94 text

CSS Architecture

Review: Hiroki Tani

CSS Bible!

...

Rating: 4.5

Slide 95

Slide 95 text

®©° = * ClAsS! ClAsS! ClAsS! ...

Slide 96

Slide 96 text

®©° 3 1 1

Slide 97

Slide 97 text

/* Sass(.scss) */ %btn { border-radius: 6px; padding: 0.5em 1em; background-color: #CCC; } .btn-primary { @extend %btn; background-image: linear-gradient(...); color: #FFF; }

Slide 98

Slide 98 text

/* CSS */ .btn-primary { border-radius: 6px; adding: 0.5em 1em; background-color: #CCC; background-image: linear-gradient(...); color: #FFF; }

Slide 99

Slide 99 text

Save

Slide 100

Slide 100 text

/* Sass(.scss) */ %btn { border-radius: 6px; padding: 0.5em 1em; background-color: #CCC; } %btn-primary { border-radius: 6px; padding: 0.5em 1em; background-color: #CCC; } %btn-large { font-size: 18px; } .save { @extend %btn; @extend %btn-primary; @extend %btn-large; }

Slide 101

Slide 101 text

/* CSS */ .save { border-radius: 6px; adding: 0.5em 1em; background-color: #CCC; background-image: linear-gradient(...); color: #FFF; font-size: 18px; }

Slide 102

Slide 102 text

Submit

Slide 103

Slide 103 text

.clearfix:after,.btn_type2_A:after,.bnavi ul:after,.box_3col:after,.userData dl:after,.likeTool:after,.likeUser ul:after,.commentUser ul:after,.userData:after,.circleList li a:after,.time_count:after,.paging ul:after,.myData:after,.status:after,.bar:after,.month:a fter,.month2:after,.about:after,.sort:after,.mainList ul:after,.mainList2 li ul:after,.bnr_2col:after,.likeTool_lp:after,.flow:after, .radio:after,.btn_entry_2col:after,.sort2:after,ul#popup _message:after,.sort3:after,.f_circleList:after,.f_circl eList a:after,.mainList3 dl:after,.mainList3 ul:after,.box_2col:after,.frame_desc dl:after { content: ""; display: block; clear: both; height: 0; }

Slide 104

Slide 104 text

®©° ©° BEm bY yaNdEx

Slide 105

Slide 105 text

/* # Module */ /* ## Button */ .btn { ... } .btn-primary { ... } .btn-small { ... } /* ## Widget */ .widget { ... } .widget-title { ... } .widget-body { ... }

Slide 106

Slide 106 text

v v k .btn .btn-primary MOdIfIeR

Slide 107

Slide 107 text

0 0 .widget .widget-body SUb-CoMpOnEnT

Slide 108

Slide 108 text

BLoCk,elEmEnT,moDiFiEr

Slide 109

Slide 109 text

BlOcK,ElEmEnT,MoDiFiEr

Slide 110

Slide 110 text

No content

Slide 111

Slide 111 text

No content

Slide 112

Slide 112 text

No content

Slide 113

Slide 113 text

No content

Slide 114

Slide 114 text

.ranking { ... } .ranking__thumbnail { ... } .ranking__item { ... } .nav-line { ... } .nav-line__item { ... } .nav-line_separated { ... } .nav-line_separated__item { ... }

Slide 115

Slide 115 text

/* # Module */ /* ## Button */ .btn { ... } .btn_primary { ... } .btn_small { ... } /* ## Widget */ .widget { ... } .widget__title { ... } .widget__body { ... }

Slide 116

Slide 116 text

/* # Module */ /* ## Button */ .btn { ... } .btn--primary { ... } .btn--small { ... } /* ## Widget */ .widget { ... } .widget__title { ... } .widget__body { ... }

Slide 117

Slide 117 text

No content

Slide 118

Slide 118 text

No content

Slide 119

Slide 119 text

®©° = * UUuUgLy!

Slide 120

Slide 120 text

®©° = AgReEeE!

Slide 121

Slide 121 text

; TOoL

Slide 122

Slide 122 text

No content

Slide 123

Slide 123 text

No content

Slide 124

Slide 124 text

No content

Slide 125

Slide 125 text

®© ©°

Slide 126

Slide 126 text

®© KsS STyLeGuIdE geNeRaToR

Slide 127

Slide 127 text

®©° ©° STyLedoCcO STyLeGuIdE geNeRaToR

Slide 128

Slide 128 text

/* A button suitable for giving stars to someone. :hover - Subtle hover highlight. .stars-given - A highlight indicating you've already given a star. .stars-given:hover - Subtle hover highlight on top of stars-given styling. .disabled - Dims the button to indicate it cannot be used. Styleguide 2.1.3. */ a.button.star{ ... } a.button.star.stars-given{ ... } a.button.star.disabled{ ... }

Slide 129

Slide 129 text

®© PHaNtOm cSs CsS reGrEsSiOn teStInG

Slide 130

Slide 130 text

COmPoNeNt & & & &

Slide 131

Slide 131 text

COmPoNeNt & & & & WeB

Slide 132

Slide 132 text

No content

Slide 133

Slide 133 text

No content

Slide 134

Slide 134 text

BeSt pRaCtIcE

Slide 135

Slide 135 text

BeSt pRaCtIcES

Slide 136

Slide 136 text

®©° ALl CoDe In AnY CoDe-BaSe ShOuLd lOoK LiKe A SiNgLe PeRsOn TyPeD It, eVeN WhEn MaNy PeOpLe ArE cOnTrIbUtInG To It. NIcOlAs gaLlAgHeR

Slide 137

Slide 137 text

THaNkS @HiLoKi iNkDeSiGn.Jp C

Slide 138

Slide 138 text

CrEdItS http://www.flickr.com/photos/darice/8526800143/ http://www.flickr.com/photos/franksvalli/5173283924/ http://www.flickr.com/photos/bdesham/2432400623/