Slide 1

Slide 1 text

SASS & COMPASS ABSTRAIRE SES CSS À COUP DE PRÉ-PROCESSEURS 1

Slide 2

Slide 2 text

C'EST QUOI UN PRÉ PROCESSEUR CSS ? Un pré-processeur CSS... Ben, c'est comme si tu mets des petites roues à ton vélo, sauf que quand tu les mets, ben ça transforme ton vélo en Poney. Donc du coup, tes stylesheets elles roxent grâve sa maman. - / Maxime Thirouin @MoOx 2

Slide 3

Slide 3 text

POURQUOI ? ... Réutilisation assez difficile. Suffit de voir les "frameworks" CSS Twitter Bootstrap utilise un pré-processeur 3 . 1

Slide 4

Slide 4 text

C'EST TOUT ? ... Sensation d'être bridé d'un point de vue de la syntaxe ? Pas de math Pas de variable ... 3 . 2

Slide 5

Slide 5 text

MAIS ENCORE ? Organisation et industrialisation difficile. 3 . 3

Slide 6

Slide 6 text

PRÉ PROCESSEUR ? Souplesse avec les $variables Vive les Maths Réutilisation: @mixin et @function Organisation: partials et @import évolué Optimisation: @extend pour rester DRY ! 4

Slide 7

Slide 7 text

FAMOUS PRE-PROCESSORS Sass (+Scss) Less Stylus 5

Slide 8

Slide 8 text

LEQUEL CHOISIR ? 1. Less est vieillissant et a peu de features 2. Stylus n'est pas assez mature 3. Sass a du bouchon et Compass ! 6

Slide 9

Slide 9 text

CSS 7 . 1

Slide 10

Slide 10 text

SASS 7 . 2

Slide 11

Slide 11 text

SASS + COMPASS 7 . 3

Slide 12

Slide 12 text

CODE ? SCSS - SASSY CSS (.SCSS) .hentry { margin­left: 2em; .title { font: { size: 2em; weight: bold; } } } 8

Slide 13

Slide 13 text

CODE ? INDENTED SASS (.SASS) .hentry margin­left: 2em .title font size: 2em weight: bold 9

Slide 14

Slide 14 text

NESTING .parent { property: value; .child { property: value } } .parent { property: value } .parent .child { property: value } 10

Slide 15

Slide 15 text

PARENT SELECTOR .class { &:hover { } .modernizr­class & {} } .class { } .class:hover { } .modernizr­class .class { } 11

Slide 16

Slide 16 text

MEDIA BUBBLING $widthGap: 600px; // variable ! .sidebar { @media (min­width: $widthGap) { float: left; background: url(image.png); @media (min­resolution: 2ddpx) { background: url([email protected]); } } } 12

Slide 17

Slide 17 text

@EXTEND .button { } .button­delete {} ... 13

Slide 18

Slide 18 text

@EXTEND + %PLACEHOLDER : C'EST D'LA BOMB' %button { } .button­info { @extend %button } .button­delete { @extend %button } .button­valid { @extend %button } ... .button­info, .button­delete, .button­valid { } .button­info { } .button­delete { } .button­valid { } 14

Slide 19

Slide 19 text

@IMPORT (REVU ET CORRIGÉ) @import "normalize"; @import "grid"; @import "typography"; .page­account { @import "pages/account"; } 15

Slide 20

Slide 20 text

LES MATHS DIVISION, CAS SPÉCIAL 1em + 1em; // 2em 1em ­ 1em; // 0em 1in + 72pt; // 2in 6px * 4; // 24px 18 % 5; // 3 font : 18px / 1.45em; // 18px/1.45em font : (20px / 5); // 4px font : 20px / 5 + 1; // 5px font : $base / 5; // 4px $size : 20px / 5; // 4px 16

Slide 21

Slide 21 text

LES FONCTIONS percentage(13/25) // 52% round(2.4) // 2 ceil(2.2) // 3 floor(2.6) // 2 abs(­24) // 24 Listes des Fonctions Sass 17

Slide 22

Slide 22 text

CONDITIONS RELATIONAL OPERATORS (<,>, <=,>=) COMPARISON OPERATORS (==, !=) 1 < 20 // true 10 <= 20 // true 4 > 1 // true 4 >= 1 // true 1 + 1 == 2 // true small != big // true #000 == black // true 18

Slide 23

Slide 23 text

CONDITIONS DIRECTIVES @IF, @ELSE MAIS AUSSI @WHILE, @EACH, @FOR $theme: ocean; div { @if $theme == dusty { background: #c6bba9; color: $color; } @else if $theme == ocean { background: blue; color: white; } box­shadow: 0 2px 0 if($theme == ocean, #c6bba9, #000); // i } 19

Slide 24

Slide 24 text

TOUJOURS PLUS DE FONCTIONS Functions pour manipulers les couleurs, sortir des valeurs Functions custom en Sass ou Ruby 20

Slide 25

Slide 25 text

LES MIXINS Produisent de la sortie CSS ex: - @mixin position($position, $top: null, $right: null, $bottom: { position: $position; top: $top; right: $right; bottom: $bottom; left: $left; } .fixed­header { @include position(absolute, 0, $left: 0, $right: 0); } gradient tooltip 21

Slide 26

Slide 26 text

COMPASS HUGE Mixin library More Sass functions Extensions 22

Slide 27

Slide 27 text

COMPASS FUNCTIONS adjust­lightness, scale­lightness adjust­saturation, scale­saturation image­url image­height image­width inline­image font­url inline­font­files pi sin cos tan more... 23

Slide 28

Slide 28 text

COMPASS MIXINS ELEMENT STYLES Links, Lists, Float, Tables, Text GENERAL UTILITIES Browser Hacks, Clearfixes, Resets DESIGN PATTERNS Tag Cloud, Sticky footer, Vertical rhythm CSS3 24

Slide 29

Slide 29 text

PLUGINS & EXTENSIONS › Fancy Buttons, Sassy Buttons - easy CSS3 buttons › Animate - CSS3 animation library › RGBApng - Generate alpha pngs from Sass › Compass Magick - Render CSS3 Gradients to png › Many more... 25

Slide 30

Slide 30 text

REMEMBER ? 26 . 1

Slide 31

Slide 31 text

COMPASS RECIPES COMPASS, BUT ANGRY ! 26 . 2

Slide 32

Slide 32 text

COMPASS RECIPES 27 . 1

Slide 33

Slide 33 text

COMPASS RECIPES Layouts, Vertical centering and box layout shortcuts. Media Queries, Shortcuts for media queries. Shadows, A wide collection of shadows which use pseudo elements to create fold effects, etc. Shapes, Geometric and iconic shapes, created only with CSS UI components, Lots of element styling for loader, menu, overlay, separator, tooltip, etc. Utilities, Very usefull utilities, trick, hacks 27 . 2

Slide 34

Slide 34 text

STELLAR LINKS More links My Compass Recipes Follow me on Twitter 28

Slide 35

Slide 35 text

THE END BY @MOOX / MAXIME THIROUIN / MOOX.IO 29