Přejít k navigační liště

Zdroják » Webdesign » Jak si zorganizovat CSS u responzivních projektů

Jak si zorganizovat CSS u responzivních projektů

Články Webdesign

Organizace stylopisů v před 6 lety a dnes? Podívejme se jak responzivní design a aktuální frontend technologie změnily způsob jakým organizujeme CSS. Jde o volné volné pokračování článku o udržovatelném stylopise na Zdrojáku.

Původně vyšlo na blogu VzhůruDolů.cz. Tento i další technické aspekty responzivního webdesignu se můžete naučit na autorově školení.

Zčásti reakce na diskuzi u Frontendistů. Zčásti volné pokračování článku o udržovatelném stylopise na Zdrojáku.

Ten jsem psal v roce, kdy Obamu inaugurovali prezidentem a zemřel Michael Jackson. 2009. To to letí! Obama je furt prezidentem, Jackson furt mrtvý, ale na frontendu se pár věcí změnilo.

Samozřejmě. Webdesign prochází responzivní revolucí. Do kódu se nám vplížily složitosti jako media queries, a to nás tlačí k efektivnějšímu a přehlednějšímu psaní. CSS tohle ale samo o sobě nenabízí. Proto CSS preprocesory.

Dělat responzivní weby dobře je drahé, a tak jsme nuceni výrobu zefektivňovat. Proto větší důraz na znovupoužitelnost komponent, proto modulární systémy a Bower.

A nakonec — konečně se do kodérského mainstreamu dostala detekce vlastností. Nepíšeme tedy tolik kódu určeného jen pro staré prohlížeče. Smutní svědkové své doby — ie6.css a ie7.css— tiše přikyvují.

Adresářová struktura CSS zdrojáků

U mě to dnes obvykle vypadá nějak takto:

index.less
base/
core/
components/
layout/

Pojďme si to v následujícím textu trochu rozpitvat. K dispozici zde máte strukturu dvou projektů. První je příklad ze školení responzivního designu. Druhý pak zdrojáky stylů mého blogu.

index.less

Ať už ho nazvete jakkoliv, je to centrální mozek stylů. Může vypadat takto jednoduše nebo i trochu složitěji. Musí být ovšem patřičně stručný a samovysvětlující. Je to soubor, který vy nebo váš kolega otevřete jako první, když chcete zjistit, jak je projekt organizovaný.

Chytří lidé mě naučili, jak moc důležité je, aby to v adresáři se styly byl vždy jediný soubor.

Typografická základna

/base/text.less
/base/fonts.less
/base/table.less 
…

Cože? Typografická základna? Říkejte třeba vertikální rytmus nebo lineární design, když chcete. Pro mě je to základní stavební vrstva, proto /base.

Čistě technicky bráno — stylujete tady základní HTML elementy, nepřidáváte moc tříd.

Můžete tady mít třeba resetovací CSS našich věků, Normalize.css, který sjednotí výchozí vzhled dokumentu napříč prohlížeči. Doporučuji jej ale raději nainstalovat pomocí Boweru.

text.less tvoří další vrstvu nad normalizací. Pro větší a související části základny je lepší mít zvláštní soubor — například table.less nebo map.less.

Ještě jeden soubor typický pro tenhle adresář – něco jako fonts.less, co obsahuje deklarace webových fontů.

Programátorské jádro

/core/mixins.less
/core/helpers.less
/core/variables.less
…

V /core ta imperativnější (chcete-li programátorštější) část kódu. Vše, co mi usnadňuje psát další kód, ale samo o sobě nic moc nedělá. Proměnné, vlastní mixiny nebo helper třídy. A taky to, co se nevejde jinam. Tři tečky za „more…” jsou v adresáři /core. :)

Proměnné — krásné téma pro odbočku! Bacha, ať to s nimi nepřeženete. Ano, ve zdrojácích Bootstrapu jsou jich stovky. Jenže Bootstrap má velmi pravděpodobně zcela jiný scénář použití než zdrojáky vašeho projektu. Zvažte dvakrát, jestli hodnotu používáte tak často, že musí do proměnné. Ve svém kódu mám v proměnných obvykle jen základní barvy a nejdůležitější breakpointy v media queries.

Komponenty uživatelského rozhraní

/components/article-items.less
/components/buttons.less
/components/nav.less
/components/icons.less
…

U mě rozhodně největší kus kódu. A nejoblíbenější! Navigace, tlačítka, stránkování, seznamy článků… kostky Lega, ze kterých skládám uživatelská rozhraní webů.

Někdy je můžu použít na jiných projektech, někdy jsou znovupoužitelné jen v rámci aktuálního webu. Vždy jsou izolovány ve zvláštním souboru.

Pokud už modulární systém tvoříte, rozhodně zvažte možnost generování dokumentace. Je to skvělý komunikační nástroj mezi vývojáři, designéry i třeba produkťáky a dlouhodobě zefektivňuje vývoj.

O modulárních systémech by se dalo psát dlouho, ale už končím. Pokud jste s nimi ještě nezačali, udělejte to u Frontendistů!

Další soubory a adresáře

Občas jsem někde použil nebo používám často, ale vejde se do jedné odrážky:

  • /layout — Rozvržení stránek patří sem. Obvykle ale používám hotovou mřížku, například z Bootstrapu. Proto tenhle adresář může obsahovat jen pár malých úprav. Tady je třeba layout mého blogu.
  • /skin, /sites – Deklarace proměnných pro weby zobrazované tímto kódem.
  • Někdo doporučuje shame.less jako odkladiště hotfixů, které se mají při nejbližší příležitosti zavést do finálního kódu. Můj přístup je komponent–centrický, a tak i patřičně (TODO) označené hotfixy dávám do kódu komponent. Tam jednou za čas zahynou pod kopyty refaktorovacích koní. :)

Děláte to jinak? Pochlubte se jak. A hlavně proč! Zanechte komentář, zareagujte na sociálních sítích nebo napište vlastní článek.

Komentáře

Subscribe
Upozornit na
guest
5 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
rastakajakwanna

Po přečtení si trochu zoufám. Je to výborný a informativní článek, o tom žádná! Ale cesta, kterou se ubírá css je taková… nepadne mi. Často mi příjde, že includování mnoha souborů je neskutečně nepřehledné a člověk se nakonec bez dobrého ide neobejde. Tam, kde dříve vítězila smysluplná jednoduchost, přímočarost, (kazená pro IE browsery), tam se nyní objevuje tahle souborová onanie.
Tohle už není svět pro mého typu tvory,
zalezu zas do své nory.

Jirka Kosek

Jak si styly rozdělíte do souborů je čistě vaše věc, pořád lze vše psát do jednoho souboru. Zda to je přehlednější je otázka spíše osobních preferencí.

Tomáš Srb

Bývalo – například náš základní stylesheet měl něco kolem 3000 řádek, přičemž zhruba co řádek to selektor a hodnoty. Pak to dostala firma k přestylování… a vrátila cca 4500 řádek. A to se o responzivitě nedalo mluvit, kvůli jejímu zavedení přibyl další cca 500 řádkový .less soubor. Teď další pravidla přidáváme do samostatných souborů, aby v tom byl aspoň trochu pořádek. Do firebugu máme plugin, který dokáže poznat z kterého souboru a řádku je zkoumané pravidlo. Aby to bylo ještě o něco složitější, tak se z těch stylesheetů skládají tři hlavní designy a tři vedlejší…

Pavel

No je to tak, pokaždé když mi přijde koder na pohovor tak se ho zeptám jak a v čem pracuje. Většinou to je less, bohužel pro daného kodera, on nezná jednoduchost a samotné použití CSS a tak se stane že díky tomu jeho kód je na 4500, naprosto nesjednocenný a je vidět že daný kolega v budoucnosti chce jen šetřit čas psaním díky lessu ale o efektivitě kódu se v tomto případě nedá mluvit.
Například správná struktura a správné pojmenování s budoucím overridem nad použitým kódem mi zabere méně času pro zpracování než jeho s lesem
A následují vlastně ty responsivnosti, když je kód čistý a koder věděl co udělal vytvořil si gril, tak přeci responsivnost ve výsledku je opět jen o verzi dem, pokud koder tedy nedělá mobile First, což podle mého pohledu je stejně utopie.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.