SlideShare a Scribd company logo
1 of 32
Download to read offline
Martin Michálek
@machal

CSS
preprocesory
WordCamp Prague
22. února 2014
Program
1.
2.
3.
4.
5.

Jak to funguje?
Co to umí?
Přínos pro mě?
Debugování
Který vybrat?
Zkuste si to!
LESS2CSS, SassMeister, Try Stylus
Jak to
funguje?
Kompilace v GUI
Prepros, Koala, CodeKit…
Grunt.JS
Preprocesory, sprity, concat, Autoprefixer…
Příkazová řádka

npm  install  less  
lessc  style.less  style.css

npm  install  stylus  
stylus  -­‐-­‐watch  style.styl  >  style.css
V prohlížeči

<script  src="less.js"></script>  
<script>less.watch();</script>
Co to umí?
Proměnné
@brand-­‐primary:  #428bca;  

!
@import  "bootstrap/bootstrap";

$medium-­‐up:  "only  screen  and  (min-­‐width:  600px)";  

!
@media  #{$medium-­‐up}  {  
    //  …  
}
Mixiny
CSS
.ellipsis  {  
  
text-­‐overflow:  ellipsis;  
  
overflow:  hidden;  
  
white-­‐space:  nowrap;  
}  

.ellipsis  {  
  
text-­‐overflow:  ellipsis;  
  
overflow:  hidden;  
  
white-­‐space:  nowrap;  
}  

!

!

.el  {  
  
.ellipsis;  
  
margin-­‐bottom:  1.5em;  
}

.el  {  
  
text-­‐overflow:  ellipsis;  
  
overflow:  hidden;  
  
white-­‐space:  nowrap;  
  
margin-­‐bottom:  1.5em;  
}
Parametrické mixiny
@mixin  transition($par)  {  
    -­‐webkit-­‐transition:  $par;    //  Chrome  1-­‐25,  Safari  3.2+    
    -­‐moz-­‐transition:  $par;    //  Firefox  4-­‐15    
    -­‐o-­‐transition:  $par;    //  Opera  10.50–12.00  
    transition:  $par;    //  Chrome  26,  Firefox  16+,  IE  10+,  Opera  12.10+  
}  

!
.el  {  
    @include  transition(all  100ms  ease-­‐out);  
}

CSS

.el  {  
    -­‐webkit-­‐transition:  all  100ms  ease-­‐out;  
    -­‐moz-­‐transition:  all  100ms  ease-­‐out;    
    -­‐o-­‐transition:  all  100ms  ease-­‐out;    
    transition:  all  100ms  ease-­‐out;    
}
Extend
CSS
.pel  {  
    color:  white;  
}  

!
.mel  {  
    @extend  .pel;  
    background:  black;  
}

.pel,  .mel  {  
    color:  white;  
}  

!
.mel  {  
    background:  black;  
}
Zanořování a
selektor rodiče
CSS
.nav  {  
    margin:  0;  
      
    .nav-­‐item  {  
        display:  inline-­‐block;  
    }  

.nav  {  
    margin:  0;  
}  

!

!

.nav  .nav-­‐item  {  
    display:  inline-­‐block;  
}  

    &.nav-­‐hidden  {  
        display:  none;  
    }  
}

.nav.nav-­‐hidden  {  
    display:  none;  
}

!
Zanořování
Media Queries
.nav  {  
    width:  25%;  

!
    @media  only  screen  and  (min-­‐width:  768px)  {  
        width:  100%;  
    }  
}

CSS

.nav  {  
    width:  25%;  
}  

!
@media  only  screen  and  (min-­‐width:  768px)  {  
    .nav  {  
        width:  100%;  
    }  
}
Matematika

CSS

width:  66.326530612%;  /*  650  /  980  *  100  */  
Matematika

CSS

width:  66.326530612%;  /*  650  /  980  *  100  */  

width:  percentage(650  /  @container-­‐width);  
//  !  width:  66.326530612%;
Podmínky
CSS
$type:  monster;  

!
.el  {  
    @if  $type  ==  ocean  {  
        color:  blue;  
    }  @else  if  $type  ==  monster  {  
        color:  green;  
    }  @else  {  
        color:  black;  
    }  
}

.el  {  
        color:  green;  
}
Cykly
icons  =  facebook,  twitter,  google-­‐plus;  

!
for  icon  in  icons  {  
    .{icon}-­‐icon  {  
        background-­‐image:  url('/images/'+icon+'-­‐icon.png');  
    }  
}

CSS

.facebook-­‐icon  {  
    background-­‐image:  url("/images/facebook-­‐icon.png");  
}  
.twitter-­‐icon  {  
    background-­‐image:  url("/images/twitter-­‐icon.png");  
}  
.google-­‐plus-­‐icon  {  
    background-­‐image:  url("/images/google-­‐plus-­‐icon.png");  
}  
Import
//  Knihovny  
@import  "lib/bourbon";  
@import  “lib/foundation";  
@import  (less)  “lib/fancybox.css”;  

!
//  Zakladna,  layout  
@import  "core/vd-­‐fonts";  
@import  "core/vd-­‐base";  
@import  "core/vd-­‐layout";  

!
//  UI  moduly  
@import  "modules/vd-­‐ad";  
@import  "modules/vd-­‐box";  
@import  "modules/vd-­‐alert";  
@import  "modules/vd-­‐article";
Ekosystém

Bourbon, LESSHat, nib,
Compass, Susy…
Debugování
Kde jsou moje čísla řádků?

index.css
Firebug
FireLESS, FireSASS, FireStylus
Source Maps
layout.less

/*#  sourceMappingURL=/test/less-­‐source-­‐maps/css/index.css.map  */
Přínos
pro mě?
Kvalita kódu
• Spravovatelnost kódu
• Organizace codebase
!

Rychlost vývoje
• Rychlejší psaní a změny
• Hotové knihovny
• Vlastní knihovny
Který
vybrat?
Porovnání

Designér →
programátor

★☆☆

★★☆

★★★

Komunita

★★★

★★☆

★☆☆

Knihovny,
frameworky

★★☆

★★★

★☆☆
Případové studie
•
•
•
•
•
•
•

Designér?
Programátor?
Snadné učení?
Technická pokročilost?
Velikost komunity?
Bootstrap?
Foundation?

LESS
SASS, Stylus
LESS
Stylus
LESS
LESS, SASS
SASS
Díky!
martin@vzhurudolu.cz
twitter.com/machal
www.vzhurudolu.cz

More Related Content

Similar to CSS preprocesory

CSS proměnné (Custom Properties)
CSS proměnné (Custom Properties)CSS proměnné (Custom Properties)
CSS proměnné (Custom Properties)Martin Michálek
 
10 praktických CSS3 a SVG řešení
10 praktických  CSS3 a SVG řešení10 praktických  CSS3 a SVG řešení
10 praktických CSS3 a SVG řešeníMartin Michálek
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciMartin Krištof
 
Optimalizace obrázků v (responsivních) šablonách
Optimalizace obrázků v (responsivních) šablonáchOptimalizace obrázků v (responsivních) šablonách
Optimalizace obrázků v (responsivních) šablonáchSUPERKODERS
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuMichal Špaček
 
Je CSS vážně tak podivné?
Je CSS vážně  tak podivné?Je CSS vážně  tak podivné?
Je CSS vážně tak podivné?Martin Michálek
 
Keyup presentation about Gulp
Keyup presentation about GulpKeyup presentation about Gulp
Keyup presentation about GulpKeyup
 
XSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQMichal Špaček
 
CSS - vy&#353;&#353;í dív&#269;í
CSS - vy&#353;&#353;í dív&#269;íCSS - vy&#353;&#353;í dív&#269;í
CSS - vy&#353;&#353;í dív&#269;íMartin Michálek
 
Hledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitHledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitDesingdev
 
CSS 3
CSS 3CSS 3
CSS 3Keyup
 
O elementu picture v Ostravě
O elementu picture v OstravěO elementu picture v Ostravě
O elementu picture v OstravěRobin Pokorny
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Kuba Břečka
 

Similar to CSS preprocesory (20)

CSS proměnné (Custom Properties)
CSS proměnné (Custom Properties)CSS proměnné (Custom Properties)
CSS proměnné (Custom Properties)
 
10 praktických CSS3 a SVG řešení
10 praktických  CSS3 a SVG řešení10 praktických  CSS3 a SVG řešení
10 praktických CSS3 a SVG řešení
 
CSS
CSSCSS
CSS
 
Editace šablony & child theme
Editace šablony & child themeEditace šablony & child theme
Editace šablony & child theme
 
CSS - Tipy a triky
CSS - Tipy a trikyCSS - Tipy a triky
CSS - Tipy a triky
 
Web na dlani
Web na dlaniWeb na dlani
Web na dlani
 
Drupal Front-end
Drupal Front-endDrupal Front-end
Drupal Front-end
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaci
 
Optimalizace obrázků v (responsivních) šablonách
Optimalizace obrázků v (responsivních) šablonáchOptimalizace obrázků v (responsivních) šablonách
Optimalizace obrázků v (responsivních) šablonách
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webu
 
Je CSS vážně tak podivné?
Je CSS vážně  tak podivné?Je CSS vážně  tak podivné?
Je CSS vážně tak podivné?
 
Keyup presentation about Gulp
Keyup presentation about GulpKeyup presentation about Gulp
Keyup presentation about Gulp
 
XSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQ
 
CSS - vy&#353;&#353;í dív&#269;í
CSS - vy&#353;&#353;í dív&#269;íCSS - vy&#353;&#353;í dív&#269;í
CSS - vy&#353;&#353;í dív&#269;í
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
Hledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitHledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešit
 
CSS 3
CSS 3CSS 3
CSS 3
 
O elementu picture v Ostravě
O elementu picture v OstravěO elementu picture v Ostravě
O elementu picture v Ostravě
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
 
Ajaxujme přátelé
Ajaxujme přáteléAjaxujme přátelé
Ajaxujme přátelé
 

More from Martin Michálek

Rychlejší web snadno a rychle: Nové technologie a nástroje pro vývojáře
Rychlejší web snadno a rychle: Nové technologie a nástroje pro vývojářeRychlejší web snadno a rychle: Nové technologie a nástroje pro vývojáře
Rychlejší web snadno a rychle: Nové technologie a nástroje pro vývojářeMartin Michálek
 
CSS a sazba knih: jak jsme daleko?
CSS a sazba knih: jak jsme daleko?CSS a sazba knih: jak jsme daleko?
CSS a sazba knih: jak jsme daleko?Martin Michálek
 
Browsers: from competition to collaboration
Browsers: from competition to collaborationBrowsers: from competition to collaboration
Browsers: from competition to collaborationMartin Michálek
 
„To my ne, to oni!“ – komponenty třetích stran a rychlost webu
„To my ne, to oni!“ – komponenty třetích stran a rychlost webu„To my ne, to oni!“ – komponenty třetích stran a rychlost webu
„To my ne, to oni!“ – komponenty třetích stran a rychlost webuMartin Michálek
 
17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webů17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webůMartin Michálek
 
Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?
Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?
Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?Martin Michálek
 
Blbosti kolem webové rychlosti
Blbosti kolem webové rychlostiBlbosti kolem webové rychlosti
Blbosti kolem webové rychlostiMartin Michálek
 
SEO jako Brno - workshop k rychlosti webu
SEO jako Brno - workshop k rychlosti webuSEO jako Brno - workshop k rychlosti webu
SEO jako Brno - workshop k rychlosti webuMartin Michálek
 
Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)Martin Michálek
 
AMP: Co řeší a co nového nabízí
AMP: Co řeší a co nového nabízíAMP: Co řeší a co nového nabízí
AMP: Co řeší a co nového nabízíMartin Michálek
 
Metriky rychlosti načítání
Metriky rychlosti načítáníMetriky rychlosti načítání
Metriky rychlosti načítáníMartin Michálek
 
WebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzory
WebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzoryWebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzory
WebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzoryMartin Michálek
 
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
WordPress šablony a  rychlost načítání (WordCamp Praha 2017)WordPress šablony a  rychlost načítání (WordCamp Praha 2017)
WordPress šablony a rychlost načítání (WordCamp Praha 2017)Martin Michálek
 
Slasti a pasti prototypování v HTML
Slasti a pasti  prototypování v HTMLSlasti a pasti  prototypování v HTML
Slasti a pasti prototypování v HTMLMartin Michálek
 
Debugování responzivních webů
Debugování responzivních webůDebugování responzivních webů
Debugování responzivních webůMartin Michálek
 
Vše co potřebuje markeťák vědět o rychlostní optimalizaci webů
Vše co potřebuje markeťák vědět o rychlostní optimalizaci webůVše co potřebuje markeťák vědět o rychlostní optimalizaci webů
Vše co potřebuje markeťák vědět o rychlostní optimalizaci webůMartin Michálek
 
Design webů v prohlížeči
Design webů v prohlížečiDesign webů v prohlížeči
Design webů v prohlížečiMartin Michálek
 
Co by měl UXák vědět o responzivním webdesignu?
Co by měl UXák vědět o responzivním webdesignu?Co by měl UXák vědět o responzivním webdesignu?
Co by měl UXák vědět o responzivním webdesignu?Martin Michálek
 

More from Martin Michálek (20)

Rychlejší web snadno a rychle: Nové technologie a nástroje pro vývojáře
Rychlejší web snadno a rychle: Nové technologie a nástroje pro vývojářeRychlejší web snadno a rychle: Nové technologie a nástroje pro vývojáře
Rychlejší web snadno a rychle: Nové technologie a nástroje pro vývojáře
 
CSS a sazba knih: jak jsme daleko?
CSS a sazba knih: jak jsme daleko?CSS a sazba knih: jak jsme daleko?
CSS a sazba knih: jak jsme daleko?
 
Browsers: from competition to collaboration
Browsers: from competition to collaborationBrowsers: from competition to collaboration
Browsers: from competition to collaboration
 
„To my ne, to oni!“ – komponenty třetích stran a rychlost webu
„To my ne, to oni!“ – komponenty třetích stran a rychlost webu„To my ne, to oni!“ – komponenty třetích stran a rychlost webu
„To my ne, to oni!“ – komponenty třetích stran a rychlost webu
 
17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webů17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webů
 
Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?
Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?
Rychlost webu: Co pro ni mohou udělat UXáci, marketéři a majitelé webů?
 
Blbosti kolem webové rychlosti
Blbosti kolem webové rychlostiBlbosti kolem webové rychlosti
Blbosti kolem webové rychlosti
 
SEO jako Brno - workshop k rychlosti webu
SEO jako Brno - workshop k rychlosti webuSEO jako Brno - workshop k rychlosti webu
SEO jako Brno - workshop k rychlosti webu
 
Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)
 
Devel.cz: Bootstrap 4
Devel.cz: Bootstrap 4Devel.cz: Bootstrap 4
Devel.cz: Bootstrap 4
 
AMP: Co řeší a co nového nabízí
AMP: Co řeší a co nového nabízíAMP: Co řeší a co nového nabízí
AMP: Co řeší a co nového nabízí
 
Metriky rychlosti načítání
Metriky rychlosti načítáníMetriky rychlosti načítání
Metriky rychlosti načítání
 
WebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzory
WebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzoryWebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzory
WebExpo 2017 - Přístupnost v kódu: ukázky a návrhové vzory
 
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
WordPress šablony a  rychlost načítání (WordCamp Praha 2017)WordPress šablony a  rychlost načítání (WordCamp Praha 2017)
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
 
Slasti a pasti prototypování v HTML
Slasti a pasti  prototypování v HTMLSlasti a pasti  prototypování v HTML
Slasti a pasti prototypování v HTML
 
Debugování responzivních webů
Debugování responzivních webůDebugování responzivních webů
Debugování responzivních webů
 
Mobile First v praxi
Mobile First v praxiMobile First v praxi
Mobile First v praxi
 
Vše co potřebuje markeťák vědět o rychlostní optimalizaci webů
Vše co potřebuje markeťák vědět o rychlostní optimalizaci webůVše co potřebuje markeťák vědět o rychlostní optimalizaci webů
Vše co potřebuje markeťák vědět o rychlostní optimalizaci webů
 
Design webů v prohlížeči
Design webů v prohlížečiDesign webů v prohlížeči
Design webů v prohlížeči
 
Co by měl UXák vědět o responzivním webdesignu?
Co by měl UXák vědět o responzivním webdesignu?Co by měl UXák vědět o responzivním webdesignu?
Co by měl UXák vědět o responzivním webdesignu?
 

CSS preprocesory