Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Clean and Unbreakable CSS
Search
Yuki Iwanaga
July 30, 2015
Programming
16
2.4k
Clean and Unbreakable CSS
きれいな CSS 速習会 @ Wantedly
http://wantedly.connpass.com/event/18018
Yuki Iwanaga
July 30, 2015
Tweet
Share
More Decks by Yuki Iwanaga
See All by Yuki Iwanaga
Pains and Gains of Architecting Microservices on Local Dev Environment
creasty
1
3.2k
Other Decks in Programming
See All in Programming
try! Swift Tokyo 初参加報告LT
hinakko2
0
190
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
170
Milestoner
bkuhlmann
1
400
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
230
エンターテイメント業界で利用されるAWS
demuyan
0
200
Java 22 Overview
kishida
1
170
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
630
Designing for tomorrow's programming workflows
honnibal
PRO
2
110
Site Reliability Engineering for GMO
pyama86
6
940
Folding Cheat Sheet #3
philipschwarz
PRO
0
110
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
330
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
For a Future-Friendly Web
brad_frost
171
8.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.4k
Writing Fast Ruby
sferik
620
60k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
356
22k
In The Pink: A Labor of Love
frogandcode
138
21k
Scaling GitHub
holman
457
140k
Optimizing for Happiness
mojombo
370
69k
The Invisible Customer
myddelton
114
12k
Navigating Team Friction
lara
177
13k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Transcript
CLEAN and UNBREAKABLE CSS ͖Ε͍ͳ$44शձ!8BOUFEMZ creasty.com YUKI IWANAGA
ؠӬ༐ًYUKI IWANAGA σβΠϯ͔Βɺ ϑϩϯτΤϯυɺ όοΫΤϯυɺ Πϯϑϥ·ͰϚϧνʹ׆ಈɻ $SFBTUZͱ͍͏߸ͰͷϑϦʔϥϯεɺ '*$$JODͰͷࣗࣾαʔϏε։ൃɺ %FMZ*ODͷ্ཱͪ͛Λܦͯɺ ࠓ݄͔Β8BOUFEMZʹ+0*/ɻ
8BOUFEMZͰओʹόοΫΤϯυͱϑϩϯτΤϯυʹܞΘ͍ͬͯΔɻ creasty.com | www.wantedly.com/users/1408075
ͳͥ$44Ԛ͘ͳΔͷ͔
ͳͥ$44 Ԛ͘ͳΔͷͰ͠ΐ͏ ʁ ҰݴͰઆ໌Ͱ͖·͔͢ʁ WHY DOES CSS GET CHAOTIC QUESTION
$BTDBEJOH 4UZMF4IFFUT ͔ͩΒԚ͘ͳΔ WHY DOES CSS GET CHAOTIC ANSWER
WHY DOES CSS GET CHAOTIC ANSWER ʮ֊ஈঢ়ͷୌͷΑ͏ͳʯ ʮ࿈తʹΘΔʯ ͱ͍͏ҙຯɻ ༷ʑͳϨϕϧͰఆٛ͞ΕͨελΠϧɺ
্ྲྀ͔ΒԼྲྀҾ͖ܧ͕ΕΔͱ͍͏ɺ $44ͷେ͖ͳಛͷ͜ͱͰ͢ɻ $BTDBEJOH 4UZMF4IFFUT ͔ͩΒԚ͘ͳΔ
large text * { font-size: large; } WHY DOES CSS
GET CHAOTIC CASCADING
large text * { font-size: large; } large text on
blue bg body { background: blue; } WHY DOES CSS GET CHAOTIC CASCADING
large text * { font-size: large; } large text on
blue bg body { background: blue; } large text on blue bg of white p { color: white; } WHY DOES CSS GET CHAOTIC CASCADING
$BTDBEJOHɺ ࢸΔͱ͜ΖͰΦʔόϥΠυ͕ى͜Δ WHY DOES CSS GET CHAOTIC OVERRIDING
large text * { font-size: large; } WHY DOES CSS
GET CHAOTIC OVERRIDING
large text * { font-size: large; } large text of
blue body { color: blue; } WHY DOES CSS GET CHAOTIC OVERRIDING
large text * { font-size: large; } large text of
blue body { color: blue; } large text of blue green p { color: green; } WHY DOES CSS GET CHAOTIC OVERRIDING ΦʔόʔϥΠ υ͍ͯ͠Δ
͜͜ͷελΠϧΛ͍͡Δͱ͕͋ͬͪյΕɺ յΕͨελΠϧΛ͞ΒʹΦʔόϥΠυ͢Δ͜ͱͰमਖ਼͢Δɾ ɾ ɾ $BTDBEJOHɺ ࢸΔͱ͜ΖͰΦʔόϥΠυ͕ى͜Δ WHY DOES CSS GET
CHAOTIC OVERRIDING
͜͜ͷελΠϧΛ͍͡Δͱ͕͋ͬͪյΕɺ յΕͨελΠϧΛ͞ΒʹΦʔόϥΠυ͢Δ͜ͱͰमਖ਼͢Δɾ ɾ ɾ ˠӡ༻͕େมʹɻ $BTDBEJOHɺ ࢸΔͱ͜ΖͰΦʔόϥΠυ͕ى͜Δ WHY DOES CSS
GET CHAOTIC OVERRIDING
͖Ε͍ͳ$44Λॻ͘ʹͲ͏͢Δ͔
$44Λ͖Ε͍ʹॻ͘ʹɺ ζόϦ$BTDBEJOHΛ࠷খݶʹ͢Δ͜ͱ AVOIDING CHAOS
ຊʹඞཁͳͷɺ େنʹͳͬͯഁ͠ͳ͍ ߏԽϧʔϧ AVOIDING CHAOS Α͘ɺ 4."$44ͱ͔#&.ͱ͔00$44ͱ͔ฉ͖·͢ΑͶʁ ผʹ͖ͳͷΛ͍͍͑ͷͰ͢ɻ ͲΕΛͬͯ͜ΕΒ୯ମͰ$44ͷղܾ͠·ͤΜɻ
AVOIDING CHAOS .JYJOϕʔεͷઃܭ σΟϨΫτϦߏ
.JYJOϕʔεͷઃܭ
MIXIN BASED DESIGN PRINCIPLE ελΠϧͷ࠶ར༻.JYJOͰߦ͏ DMBTTʹΑΔ࠶ར༻ߦΘͳ͍ɻ DMBTTΛνΣΠϯͯ͠ϨΠΞτΛ࣮ݱ͠Α͏ͱ͠ͳ͍ɻ
MIXIN BASED DESIGN CONCEPT /posts .btn .btn /admin/dashboard
MIXIN BASED DESIGN CONCEPT /posts .btn .btn { } .btn
/admin/dashboard
MIXIN BASED DESIGN CONCEPT /posts .btn <link> <link> .btn {
} .btn /admin/dashboard
MIXIN BASED DESIGN CONCEPT /posts .btn <link> <link> .btn {
} .btn /admin/dashboard Өڹൣғ͕େ͖͍
MIXIN BASED DESIGN CONCEPT /posts .btn <link> <link> .btn {
} .btn /admin/dashboard
MIXIN BASED DESIGN CONCEPT /posts .btn .btn { } .btn
/admin/dashboard
MIXIN BASED DESIGN CONCEPT /posts .btn @mixin btn .btn /admin/dashboard
MIXIN BASED DESIGN CONCEPT /posts .btn @mixin btn .btn {
@include btn } .btn /admin/dashboard @import
MIXIN BASED DESIGN CONCEPT /posts .btn @mixin btn .btn {
@include btn } .btn { @include btn } .btn /admin/dashboard @import @import
MIXIN BASED DESIGN CONCEPT /posts .btn @mixin btn .btn {
@include btn } .btn { @include btn } .btn /admin/dashboard @import <link> <link> @import
Կ͕͍͍ͷ͔ʁ MIXIN BASED DESIGN MERIT
MIXIN BASED DESIGN MERIT ϖʔδຖʹ!JODMVEF͢Δ͜ͱͰɺ ηϨΫλࣗମϖʔδʹด͡ࠐΊΔ͜ͱͰɺ ༨ܭͳDBTDBEJOHΛؾʹ͢Δඞཁ͕ͳ͘ͳΓɺ Өڹൣғখ͘͞ͳΓ·͢ɻ ·ͨɺ ໊લͷিಥͳ͘ͳΓ·͢ɻ
first ηϨΫλͷ࿐ग़Λ࠷খݶʹͰ͖Δ
.JYJOͷҾΛ׆༻Ͱ͖Δ MIXIN BASED DESIGN MERIT .JYJOͷҾΛ׆༻͢Δ͜ͱͰɺ όϦΤʔγϣϯίϯςΫενϡΞϧͳελΠϧΛɺ ࠷খݶͷΦʔόʔϥΠυͰ࣮ݱͰ͖·͢ɻ ͜ΕʹΑΓɺ ࡶʹͳΓ͕ͪͳ
ʮಉ͡ཁૉͰඍົʹҧ͏σβΠϯʯ ͷཧ͕ͱͯ༰қʹͳΓ·͢ɻ second
σΟϨΫτϦߏ
DIRECTORY STRUCTURE UNIT components/ headers/ shared/
DIRECTORY STRUCTURE UNIT components/ headers/ shared/ ڞ௨Ͱ͏ίϯϙʔωϯτ
DIRECTORY STRUCTURE UNIT components/ headers/ shared/ ڞ௨Ͱ͏ίϯϙʔωϯτ ઃఆม.JYJOɺ ؔͳͲ
DIRECTORY STRUCTURE UNIT components/ headers/ shared/ ڞ௨Ͱ͏ίϯϙʔωϯτ ઃఆม.JYJOɺ ؔͳͲ ڞ௨ͷελΠϧ
DIRECTORY STRUCTURE UNIT components/ headers/ shared/ ڞ௨Ͱ͏ίϯϙʔωϯτ ͜ͷߏΛ ʮ࠶ར༻ͷجຊ୯Ґʯ ͱ͠·͢
ઃఆม.JYJOɺ ؔͳͲ ڞ௨ͷελΠϧ
DIRECTORY STRUCTURE L1 1
DIRECTORY STRUCTURE L1 components/ headers/ shared/ جຊ୯Ґ 1
DIRECTORY STRUCTURE L1 components/ headers/ shared/ vendor/ جຊ୯Ґ layouts/ 1
DIRECTORY STRUCTURE L1 components/ headers/ shared/ vendor/ جຊ୯Ґ ϓϥάΠϯ ͋Ε
layouts/ 1
DIRECTORY STRUCTURE L1 components/ headers/ shared/ vendor/ جຊ୯Ґ ϓϥάΠϯ ͋Ε
layouts/ ֤ϨΠΞτ ςʔϚ ຖͷελΠϧ 1
DIRECTORY STRUCTURE L1 components/ headers/ shared/ vendor/ جຊ୯Ґ ͜ͷ֊Λ ʮ-ʯ
ͱݺͼ·͢ ϓϥάΠϯ ͋Ε layouts/ ֤ϨΠΞτ ςʔϚ ຖͷελΠϧ 1
DIRECTORY STRUCTURE L1 components/ headers/ shared/ vendor/ layouts/ ֤ϨΠΞτ ςʔϚ
ຖͷελΠϧ 1
DIRECTORY STRUCTURE L2 layouts/ ֤ϨΠΞτ ςʔϚ ຖͷελΠϧ 1
DIRECTORY STRUCTURE L2 layouts/ main/ ֤ϨΠΞτ ςʔϚ ຖͷελΠϧ admin/ 1
DIRECTORY STRUCTURE L2 layouts/ main/ ֤ϨΠΞτ ςʔϚ ຖͷελΠϧ ී௨ͷϨΠΞτ ཧը໘ͷϨΠΞτ
admin/ 1
DIRECTORY STRUCTURE L2 layouts/ main/ 1 2
DIRECTORY STRUCTURE L2 layouts/ main/ 1 2 components/ headers/ shared/
جຊ୯Ґ
DIRECTORY STRUCTURE L2 layouts/ main/ views/ ֤ϖʔδຖͷελΠϧ 1 2 components/
headers/ shared/ جຊ୯Ґ
DIRECTORY STRUCTURE L2 ͜ͷ֊Λ ʮ-ʯ ͱݺͼ·͢ layouts/ main/ views/ ֤ϖʔδຖͷελΠϧ
1 2 components/ headers/ shared/ جຊ୯Ґ
Կ͕͍͍ͷ͔ʁ DIRECTORY STRUCTURE MERIT
DIRECTORY STRUCTURE MERIT ࠶ར༻ͷجຊ୯ҐΛ-Ͱ-Ͱ͏Α͏ͳ࠶ؼతͳߏΛͱ͍ͬͯ·͢ɻ ͜ͷεϥΠυͷํଇͬͨ··ɺ ্ɾ Լʹಉ͡Α͏ͳߏΛࣗͰՃ͢Δ͜ͱͰɺ αʔϏεʹ߹ΘͤͯΧελϚΠζͰ͖ΔͷͰ͢ɻ ྫ͑ɺ εϚʔτϑΥϯ൛ͱ1$൛͕͋Δ߹ɺ
-ͷ্ͷ֊ʹ ʮ-ʯ Λ࡞Ε͍͍ͷͰ͢ɻ first ࠶ؼతͳߏͰԠ༻͕ޮ͘
ηϨΫλ͕͔͚Δॴɾ͔͚ͳ͍ॴ DIRECTORY STRUCTURE MERIT !NJYJO͚ͩΛॻ͚ΔσΟϨΫτϦ IFBEFST ͱ !JODMVEFͯ͠ηϨΫλΛॻ͚ΔσΟϨΫτϦ TIBSFEWJFXT Λͨ͠ߏʹͳ͍ͬͯ·͢ɻ
ηϨΫλΛؚ·ͳ͍෦͚ͩΛڞ༗͢Δ͜ͱͰɺ ʮ.JYJOϕʔεͷઃܭʯ ͕ࣗવʹୡ͞Ε·͢ɻ second
Ϩοπ ɾ τϥΠ
github.com/creasty/css-better-practice vist and follow the instruction
·ͱΊ
.JYJOϕʔεͷઃܭ RECAP
.JYJOϕʔεͷઃܭ ˠ.JYJOʹΑΔ࠶ར༻ RECAP
.JYJOϕʔεͷઃܭ ˠ.JYJOʹΑΔ࠶ར༻ ˠηϨΫλͷ࿐ग़ΛݮΒ͢ RECAP
.JYJOϕʔεͷઃܭ ˠ.JYJOʹΑΔ࠶ར༻ ˠηϨΫλͷ࿐ग़ΛݮΒ͢ ˠҾͷ׆༻ RECAP
.JYJOϕʔεͷઃܭ ˠ.JYJOʹΑΔ࠶ར༻ ˠηϨΫλͷ࿐ग़ΛݮΒ͢ ˠҾͷ׆༻ σΟϨΫτϦߏ RECAP
.JYJOϕʔεͷઃܭ ˠ.JYJOʹΑΔ࠶ར༻ ˠηϨΫλͷ࿐ग़ΛݮΒ͢ ˠҾͷ׆༻ σΟϨΫτϦߏ ˠԠ༻͕ޮ͘࠶ؼతͳߏ RECAP
.JYJOϕʔεͷઃܭ ˠ.JYJOʹΑΔ࠶ར༻ ˠηϨΫλͷ࿐ग़ΛݮΒ͢ ˠҾͷ׆༻ σΟϨΫτϦߏ ˠԠ༻͕ޮ͘࠶ؼతͳߏ ˠηϨΫλ͕ॻ͚ͳ੍͍ RECAP
Thank you very mush indeed! ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠