Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OOCSS - SMACSS - BEM

OOCSS - SMACSS - BEM

Prezentace s poznámkami z ostravského srazu Frontendistů 25.4.2014.

Patrik Illy

April 27, 2014
Tweet

More Decks by Patrik Illy

Other Decks in Technology

Transcript

  1. MOTIVACE - Změny pracovního postupu bez vnitřní motivace (nespokojenost s

    výsledky své práce, snaha zavést systém) - Srovnání motivací (pro někoho budou principy nové, pro někoho může jít jen o rekapitulaci popř. konfrontaci) - Dva důvody důležité pro mě:
  2. PŘEHLEDNOST - Spravovatelnost (vyznat se ve vlastím kódu, návrat k

    projektu po delší době, práce v týmu, nový člen týmu) - Write Only :) (zbavit se takových výstupu, u kterých se později raději jen přetěžuje)
  3. ZNOVUPOUŽITELNOST - Velikost (výsledného kódu je méně, lépe se spravuje,

    lépe se rozšiřuje, lépe se na něm staví) - Rychlost (rychlejší selektory, menší soubor ke stažení)
  4. “1. Přemýšlejte v objektech, ne ve stránkách” - Objekt je

    strukturální vzor (část kódu - HTML, CSS a popř. JS), který je dostatečně abstraktní, aby mohl být znovupoužitelný napříč celým webem - Část stránky není objekt! - http://www.edenspiekermann.com/blog/posts/oocss-and-the-pagification-of-modules
  5. .MEDIA OBJEKT Lorem ipsum dolor sit amet, consectetur adipisicing elit,

    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/
  6. <div class="media"> <a class="media__img" href=“#"> <img src="" alt=“"> </a> <p

    class="media__body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> </div>
  7. .media { @extend %u-cf; display: block; } ! .media__img {

    float: left; margin-right: $base-unit; } ! .media__img img { display: block; } ! .media__body { overflow: hidden; }
  8. <div class="media"> ! <a class="media__img media__img--rev" href=“#"> <img src="" alt=“">

    </a> ! <p class="media__body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> </div>
  9. “3. Oddělujte strukturu od vzhledu” - UI Toolkit vs CSS

    Framework - https://speakerdeck.com/csswizardry/what-is-a-css-framework-anyway
  10. <div class="panel"> <div class="panel__heading"> <h3 class="panel__title">Panel title</h3> </div> <div class="panel__body">

    Panel content </div> </div> ! <div class="panel panel--default">...</div> <div class="panel panel--primary">...</div>
  11. “4. Vyhněte se závislosti na kontextu” - Problém se znovupoužitelností

    - Problém se specifičností takových selektorů - !important peklo
  12. html body .header .nav {} .nav {} vs - Tuhle

    navigaci už v patičce nepoužijete…
  13. “6. Nepoužívejte ID selektory” - Problém se znovupoužitelností - Problém

    se specifičností takových selektorů - !important peklo
  14. “7. Nesvazujte selektor s konkrétním elementem” - Problém se znovupoužitelností

    - Problém se specifičností takových selektorů - !important peklo
  15. <button class="btn btn-default" type="button">Button</button> ! <input class="btn btn-default" type="submit" value="Submit">

    ! <a class="btn btn-default" href="#" role="button">Link</a> a.btn vs - Třída nezávislá na elementu a proto znovupoužitelná
  16. SMACSS - Jonathan Snook - http://smacss.com/book - Techniky, které jsou

    primárně určeny pro větší projekty a spolupráci v týmu, ale stejně dobře se hodí i na malý web - Vychází z principů OOCSS, ale navíc zavádí pravidla organizace a syntaxe - Hloubka aplikovatelnosti - Rychlost selektorů
  17. Base Layout Module State Theme - Base / tagy, pseudo

    třídy, … / velikosti nadpisů, barva odkazů, reset - Layout / mřížka a kontejnery, které “drží” obsah - Modules / objekty - znovupoužitelné části kódu / Subclassing / Submodules - State / změny objektů - aktivní, rozbalený, … / třídy, pseudotřídy a media queries / proaktivní použití !important - Theme / Vzhled resp. Téma (u většiny webů nemá smysl. Příklad: Envato Network)
  18. SHAME.CSS - Rychlé opravy - Dokumentace opravy - Průběžně tyto

    opravy řešit “správně” - http://csswizardry.com/2013/04/shame-css/