33

Sass

Embed Size (px)

Citation preview

Page 1: Sass
Page 2: Sass

Sintaxe CSS

O CSS (Cascading Style Sheet) é uma folha de estilo onde é determinado como será apresentado um documento escrito com uma linguagem de marcação ao usuário

seletor {

propriedade: valor;

propriedade: valor;

}

Page 3: Sass

$nome-da-variável: valor;

O valor pode ser:

● String - ‘Texto’; ● Cor - ‘#333333’● Números - 1em;● Boolean - true;● Lista - a, b, c;

Variáveis

Page 4: Sass

As variáveis podem ser sobreescritas:

$cor-principal: black;

$cor-principal: white;

.titulo { color: $cor-principal; }

Ao final será gerado:

.titulo { color: white; }

Variáveis

Page 5: Sass

.titulo {

$cor: red;

color: $cor;

}

.subtitulo {

color: $cor;

}

Scopo da variável

Page 6: Sass

.titulo {

$cor: red;

color: $cor;

}

.subtitulo {

color: $cor;

}

Scopo da variável

Erro de sintaxeUndefined variable: “$cor”

Page 7: Sass

$cor: red;

.titulo {

$cor: blue;

color: $cor;

}

.subtitulo {

color: $cor;

}

Scopo da variável

Page 8: Sass

$cor: red;

.titulo {

$cor: blue;

color: $cor;

}

.subtitulo {

color: $cor;

}

Scopo da variável

.titulo {

color: blue;

}

.subtitulo {

color: red*;

}

* a partir da versão 3.4.7

Page 9: Sass

#main {

$width: 5em !global;

width: $width;

}

.subtitulo {

width: $width;

}

Valor padrão da variável

Page 10: Sass

#main {

$width: 5em !global;

width: $width;

}

.subtitulo {

width: $width;

}

Valor padrão da variável

#main {

width: 5em;

}

.subtitulo {

width: 5em;

}

Page 11: Sass

$width: 6em;

#main {

$width: 5em !global;

width: $width;

}

.subtitulo {

width: $width;

}

Valor padrão da variável

#main {

width: 6em;

}

.subtitulo {

width: 6em;

}

Page 12: Sass

Sass

.artigo {

.titulo { color: red; }

.subtitulo { color: orange; }

}

Css Gerado

.artigo .titulo { color: red; }

.artigo .subtitulo { color: orange; }

Nesting

Page 13: Sass

Sass

.item a {

color: darkgreen;

&:hover {color: green}

}

Css Gerado

.item a { color: darkgreen; }

.item a:hover { color: green; }

Nesting

Page 14: Sass

Sass

.item {

.submenu & { color: red; }

.menu & { color: orange; }

}

Css Gerado

.submenu .item { color: red; }

.menu .item { color: orange; }

Nesting

Page 15: Sass

Sass

.item {

.submenu & { color: red; }

.menu & { color: orange; }

}

Css Gerado

.submenu .item { color: red; }

.menu .item { color: orange; }

Nesting

Referência ao pai do seletor

Page 16: Sass

Sass

.item {

margin: { top: 1em; bottom: 1em }

}

Css Gerado

.item {

margin-top: 1em;

margin-bottom: 1em

}

Nesting de propriedade

Page 17: Sass

No Sass é possível extender as regras de outras classes através do @extend.

.box {

display: block;

border: 1px solid gray;

}

.alert {

@extend .box;

color: red;

}

Extend

Page 18: Sass

Será gerado:.box, .alert {

display: block;

border: 1px solid gray;

}

.alert {

color: red;

}

Exemplo: http://sassmeister.com/gist/2234c36162872611e16c

Extend

Page 19: Sass

Em alguns momentos, queremos que seja gerado o css apenas quando utilizamos a extensão. Nesse caso utilizamos os placeholders selectors.

Placeholder selectors

Page 20: Sass

%box {

display: block;

border: 1px solid gray;

}

.alert {

color: red;

}

Placeholder selectors

Page 21: Sass

%box {

display: block;

border: 1px solid gray;

}

.alert {

color: red;

}

Placeholder selectors

.alert {

color: red;

}

Page 22: Sass

%box {

display: block;

border: 1px solid gray;

}

.alert {

@extend %box;

color: red;

}

Placeholder selectors

.alert {

display: block;

border: 1px solid gray

}

.alert {

color: red;

}

Page 23: Sass

Mixins cria uma diretiva, semelhante a uma função, a qual agrupa-se um conjunto de regras a qual você gostaria de reutilizar no site. Para declarar é utilizado @mixin e para utilizar o @include.

Um exemplo clássico é utilizá-lo para adicionar prefixos dos browsers.

mixins

Page 24: Sass

Ex.:@mixin border-radius($radius) {

-webkit-border-radius: $radius;

-moz-border-radius: $radius;

-ms-border-radius: $radius;

border-radius: $radius;

}

.box { @include border-radius(10px) }

mixins

Page 25: Sass

É possível adicionar valores padrões aos parâmetros. Ex.:@mixin border-radius($radius: 10px) {

-webkit-border-radius: $radius;

-moz-border-radius: $radius;

-ms-border-radius: $radius;

border-radius: $radius;

}

.box { @include border-radius }

mixins

Page 26: Sass

É possível adicionar valores padrões aos parâmetros. Ex.:@mixin border-radius($radius: 10px) {

-webkit-border-radius: $radius;

-moz-border-radius: $radius;

-ms-border-radius: $radius;

border-radius: $radius;

}

.box { @include border-radius }

mixins

Page 27: Sass

$direcao: ‘top’;

.barra-fixa {

position: fixed;

@if $direcao == ‘top’ {

top: 0;

}

@else {

bottom: 0;

}

}

Condicionais - @if

Page 28: Sass

@for $i from 1 through 5 {

.col-#{$i} {

width: ($i * 100%/5);

}

}

.col-1 { width: 20%;}

.col-2 { width: 40%;}

[...]

.col-5 { width: 100%;}

loop - @for

Page 29: Sass

@each $icon in bola, quadrado, triangulo {

.icon#{$icon} {

background: url(‘#{$icon}.jpg’);

}

}

.icon-bola { background: url(‘bola.jpg’);}

.icon-quadrado { background: url(‘quadrado.jpg’);}

.icon-triangulo { background: url(‘triangulo.jpg’);}

loop - @each

Page 30: Sass

$i: 3;

@while $i > 0 {

.h#{$i} {

font-size: #{$i}em;

}

$i: $i - 1;

}

.h3 { font-size: 3em; }

.h2 { font-size: 2em; }

.h1 { font-size: 1em; }

loop - @each

Page 31: Sass

● darken● ligthen● saturate● grayscale

● round● ceil● percentage

funções

Page 32: Sass

Fim

Page 33: Sass

Obrigada!