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
Hogyan írjunk fenntartható CSS-t?
Search
Tamás Hajas
November 07, 2014
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hogyan írjunk fenntartható CSS-t?
#webkonf 2014 előadásom diái.
http://webconf.hu//2014/program?sid=5724#iii2014_05
Tamás Hajas
November 07, 2014
More Decks by Tamás Hajas
See All by Tamás Hajas
Variable fonts in the real world
thamas
0
130
What's new in CSS? Introduction to CSS Grid and CSS Custom Properties
thamas
0
100
Short Twig recipes for Drupalers
thamas
0
110
Futureproof styling (in Drupal 8)
thamas
1
340
Szépségszalon a vertikális végtelenhez – Drupal 8 front-end fejlesztés
thamas
0
140
Drupal 8 overview
thamas
0
310
Futureproof styling in Drupal
thamas
0
120
Szépségszalon a Vertikális Végtelenhez – Drupal 8 sminkelés
thamas
1
350
Future-proof styling in Drupal (8)
thamas
0
98
Other Decks in Technology
See All in Technology
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.1k
cccccc
moznion
0
1.9k
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5.2k
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
260
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
1
380
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
120
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.7k
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
130
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
11
7.2k
AI時代の EM への処方箋
staka121
PRO
0
140
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
0
140
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
180
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
New Earth Scene 8
popppiees
3
2.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
WENDY [Excerpt]
tessaabrams
11
38k
Done Done
chrislema
186
16k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
230
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Transcript
Hogyan írjunk fenntartható CSS-t? Hajas Tamás
Hajas Tamás Drupal tanácsadó Integral Vision Kft
Egyetlen helyes út!
Egyetlen helyes út NINCS!
Csapat
Csapat » Kommunikáció
Coding Standards
Drupal CSS Coding Standards https://www.drupal.org/ node/1886770
Harry Roberts CSS Guidelines http://cssguidelin.es
CSS kód formátum CSS kód felépítés CSS fájl struktúra
CSS kód formátum CSS kód felépítés CSS fájl struktúra
Kommentáld a kódodat!
Csapat » Kommunikáció
„Ne törd a fejem!”
„a kód magától értetődő „kell legyen”
/** * Grid container * Must only contain '.cell' children.
*/ .grid { height: 100%; ! font-size: 0; ! white-space: nowrap; }
/** * Grid container * Must only contain '.cell' children.
*/ .grid { height: 100%; /* Remove inter-cell whitespace */ font-size: 0; /* Prevent inline-block cells wrapping */ white-space: nowrap; }
/** * Grid container * Must only contain '.cell' children.
* 1. Remove inter cell whitespace. * 2. Prevent inline-block cells wrapping */ .grid { height: 100%; font-size: 0; /* 1 */ white-space: nowrap; /* 2 */ }
eszközök: CSScomb .editorconfig
CSS kód formátum CSS kód felépítés CSS fájl struktúra
Túl komplex kiválasztó CSS problémák a HTML struktúra követése div.block
.title a:link { #sidebar-first & { .node-19 & {} } }
”Qualified ”selectors” div.block .title a:link { #sidebar-first & { .node-19
& {} } } CSS problémák a HTML struktúra követése
Környezet alapú kiválasztás div.block .title a:link { #sidebar-first & {
.node-19 & {} } } CSS problémák
Gyermek kiválasztók túl általános class névvel div.block .title a:link {
#sidebar-first & { .node-19 & {} } } CSS problémák
„A CSS osztály nevek hasznos információt kell szolgáltassanak a
fejlesztőknek” – Nicolas Gallagher About HTML Semantics and Front-End Architecture
.red-box {} ! .message--error {}
Az ID kiválasztó használata stílushoz div.block .title a:link { #sidebar-first
& { .node-19 & {} } } CSS problémák
Az !important „felülíró” használata div.block .title a:link { #sidebar-first &
{ .node-19 & { …!important; } } } CSS problémák
”Keep specificity low!”
body #content .data img:hover {} ! ! ! ! #content
.data img :hover body 0*1000 + 1*100 + 2*10 + 2*1 = 122 0 1 2 2 » 122 Specifikusság példa
CSS kód formátum CSS kód felépítés CSS fájl struktúra
SMACSS See purecss.io for kind of an implementation
• Base SMACSS CSS fájl-struktúra ul { list-style-type: none; padding:
0; margin: 0; }
• Base • Layout SMACSS CSS fájl-struktúra
• Base • Layout • Module SMACSS CSS fájl-struktúra
• Base • Layout • Module • State SMACSS CSS
fájl-struktúra .is-open :hover @media
• Base • Layout • Module • State • Theme
SMACSS CSS fájl-struktúra
• Base • Layout • Module • State • Theme
SMACSS-szerű CSS fájl-struktúra
• Base • Layout • Component Module • State •
Theme SMACSS-szerű CSS fájl-struktúra
• Base • Layout • Component Module • State •
Theme SMACSS-szerű CSS fájl-struktúra
Component Atom, Molecule… Atomic Design Module SMACSS Object OOCSS Block
BEM
base • elements.css • typography.css layout • layout.css • node-add.css
• … components • buttons.css • buttons.theme.css • … theme • install-page.css • appearance- page.css SMACSS-szerű CSS fájl-struktúra (Drupal 8) Forrás: Drupal 8 Seven theme
base layout components shame.scss no-query.scss style.scss Egy lehetséges Sass fájl
struktúra config • _extendables.scss • _functions.scss • _mixins.scss • _variables.scss
Tipp: Sass Globbing @import "config/**/*", "base/**/*", "layout/**/*", "components/**/*"; https://github.com/chriseppstein/sass-globbing
CSS kód formátum CSS kód felépítés CSS fájl struktúra
BEM
• Base • Layout • Component • Block • Element
• Modifier • State • Theme John Albin: Managing complex projects with design components
<div class="flower__bed"> <div class="flower"> <div class="flower__petals"> <div class="flower__face"></div> </div> <div
class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div> John Albin: Managing complex projects with design components Component • Block
<div class="flower__bed"> <div class="flower"> <div class="flower__petals"> <div class="flower__face"></div> </div> <div
class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div> John Albin: Managing complex projects with design components Component • Element
<div class="flower__bed"> <div class="flower flower--tulip"> <div class="flower__petals"> <div class="flower__face"></div> </div>
<div class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div> John Albin: Managing complex projects with design components Component • Modifier
<div class="flower__bed"> <div class="flower is-pollinating"> <div class="flower__petals"> <div class="flower__face"></div> </div>
<div class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div> John Albin: Managing complex projects with design components Component • State
John Albin: Managing complex projects with design components Component •
State .flover:hover {}
@media "print" { .flover {} } John Albin: Managing complex
projects with design components Component • State
Proposal: A Style Guide for Seven Progress bar component
CSS architecture (for Drupal 8) Progress bar component <div class="progress
progress--small"> <label class="label label--small">Uploading sunset.jpg</label> <div class="progress__track"> <div class="progress__bar" style="width: 29%"></div> </div> <div class="progress__description"> <div class="layout-pull">Uploaded 221 of 762KB</div> <strong class="layout-push">29%</strong> </div> <a class="progress__cancel" href="#" title="cancel"> <span class="visually-hidden">cancel</span> </a> </div>
CSS architecture (for Drupal 8) Progress bar component /** *
Progress Bar component */ .progress {} .progress__track {} .progress__bar {} .progress__description {} .progress__cancel {} .progress__cancel:focus, .progress__cancel:hover {} /** * Progress Bar small variant */ .progress--small .progress__track {} .progress--small .progress__bar {} .progress--small .progress__cancel {}
Classicitis?!
<div class="media attribution"> <a href="http://twitter.com/stubbornella" class="img"> <img src="http://stubbornella.com/profile_image.jpg" alt="me" />
</a> <div class="bd"> @Stubbornella 14 minutes ago </div> </div> /* ====== media ====== */ .media {margin:10px;} .media, .bd {overflow:hidden; _overflow:visible; zoom:1;} .media .img {float:left; margin-right: 10px;} .media .img img{display:block;} .media .imgExt{float:right; margin-left: 10px;} http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/
%media { overflow: hidden; &:first-child { float: left; } &:last-child
{ overflow: hidden; } } .status { @extend %media // ... } ! .profile { @extend %media // ... } http://ianstormtaylor.com/oocss-plus-sass-is-the-best-way-to-css
Egyetlen helyes út NINCS!
Tamás Hajas Drupal consultant Integral Vision Ltd integralvision.hu about.me/tamashajas