Slide 1

Slide 1 text

Yet Another CSS Preprocessor #frontrendCSS

Slide 2

Slide 2 text

Aout me 4 ৿Լ խষ / Masaaki Morishita 4 twitter: @morishitter_ 4 github: morishitter 4 blog: http://morishitter.hatenablog.com 4 େֶӃ M2 4 4݄͔ΒαΠόʔΤʔδΣϯτʹೖࣾ

Slide 3

Slide 3 text

Concept of YACP CSSͷઃܭΛຊ࣭తʹྑ͘͢ΔͨΊͷϓϦϓϩη οα 4 طଘͷϓϦϓϩηοα͸ߏจ͕ؒҧͬͯͳ͚Ε ͹ԿͰ΋ίϯύΠϧ͢Δ 4 ίϯύΠϧΛݫͯ͘͠͠CSSͱطଘͷϓϦϓϩ ηοαͷόουϓϥΫςΟεͷ࢖༻Λ๷͙

Slide 4

Slide 4 text

Features of YACP 4 ϧʔϧηοτͷଋറ 4 ҆શͳ @extend 4 ৄࡉ౓ͷ౷Ұ

Slide 5

Slide 5 text

ϧʔϧηοτͷଋറ ಉҰηϨΫλʹΑΔϧʔϧηοτͷ࠶ఆٛΛېࢭ (.foo) { font-size: 12px; } .foo { /* Error */ font-size: 14px; }

Slide 6

Slide 6 text

҆શͳ @extend "҆શͳ" 4 ѱ͍@extendͷํ๏Λ๷͙ 4 ϓϨʔεϗϧμ(%)ηϨΫλΛڧ੍ 4 ܧঝݩͷϧʔϧηοτ͸ଋറ 4 ܧঝݩͷϧʔϧηοτ͕ڞ௨ͷϓϩύςΟ ΛؚΉ৔߹͸Τϥʔ

Slide 7

Slide 7 text

҆શͳ @extend %base-1 { font-size: 12px; padding: 8px 12px; } %base-2 { font-size: 14px; } .foo { /* Error */ extend: %base-1; extend: %base-2; }

Slide 8

Slide 8 text

ৄࡉ౓ͷ౷Ұ (Φϓγϣϯ) ΫϥεηϨΫλͱͦΕʹ෇ਵ͢ΔٖࣅηϨΫλҎ ֎Λېࢭ .class {} /* OK */ .class:hover {} /* OK */ #id {} /* NG */ p {} /* NG */ .class .nested {} /* NG */ .class { color: red !important; /* NG */ }

Slide 9

Slide 9 text

Object Oriented Design with YACP

Slide 10

Slide 10 text

ϧʔϧηοτͷΧϓηϧԽ (.text) { font-size: 12px; color: red; } .text { /* Error */ font-size: 14px; } .foo .text { /* Error */ color: blue; } ΧεέʔσΟϯάΛېࢭ

Slide 11

Slide 11 text

privateͳϧʔϧηοτ %base { font-size: 12px; } .foo { extend: %base; } %base { /* Error */ font-size: 14px; } privateͳ(্ॻ͖ෆՄೳͰ͔ͭYACPϑΝΠϧ಺ ͰͷΈࢀরՄೳ)ͳϧʔϧηοτΛఆٛͰ͖Δ

Slide 12

Slide 12 text

Single Class Design with YACP

Slide 13

Slide 13 text

ϚϧνΫϥεઃܭͷ໰୊఺ 1. ڞ௨͢ΔϓϩύςΟ্͕ॻ͖͞ΕΔ 2. ϧʔϧηοτؒͷ҉໧ͷґଘؔ܎ 4 ෼ް͍ελΠϧΨΠυ͕ඞཁʹͳΔ 3. Ϋϥε໊ͷηϚϯςΟοΫ͞(?)

Slide 14

Slide 14 text

γϯάϧΫϥεઃܭ %btn {} %btn-blue {} %btn-large {} .btn-next { extend: %btn; extend: %btn-blue; extend: %btn-large; }

Slide 15

Slide 15 text

YACP https://github.com/morishitter/YACP YACP: ΑΓΦϒδΣΫτࢦ޲ͳ CSSઃܭͷͨΊͷϓϦϓϩηοα http://morishitter.hatenablog.com/entry/ 2014/12/02/000135

Slide 16

Slide 16 text

Thanks :) @morishitter_