SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Nath Paiva
Dev. Front-end @ GetNinjas
Twitter: @NathPaiva
Github: @NathPaiva
William Costa
Dev. Front-end @ GetNinjas
Twitter: @wilcosta_dev
Github: @williamcosta
PRÉ PROCESSADORES
O que é?
O Pre processador são programas que
recebem um valor de entrada, que passa
pelo processador que faz alterações no
conteúdo recebido entregando um outro
valor.
Basicamente com o pré processador no CSS
é a mesma coisa.
Escrevemos o nosso código na sintaxe que
é interpretada pelo nosso pré processador,
no qual após compilado nada mais é do que
o nosso velho e bom CSS.
Quais são?
Qual vamos usar?
Syntax
// Sintaxe SCSS e LESS
body {
font: 100% $font-stack;
color: $primary-color;
}
// Sintaxe SASS
body
font: 100% $font-stack;
color: $primary-color;
// Sintaxe Stylus
body
font 100% $font-stack
color $primary-color
Variables
// Variâveis SCSS e SASS
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
// Variáveis LESS
@font-stack: Helvetica, sans-serif;
@primary-color: #333;
//Variáveis Stylus
font-stack = Helvetica, sans-serif;
primary-color = #333;
$font-stack = Helvetica, sans-serif;
$primary-color = #333;
Nested
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
Mixin
@mixin border-radius($radius: 5px) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
.box-1 { @include border-radius(); }
.box-2 { @include border-radius(10px); }
.box-1 {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
border-radius: 5px;
}
.box-2 {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
Function
$grid-width: 40px;
$gutter-width: 10px;
@function grid-width($n) {
@return $n * $grid-width + ($n - 1) * $gutter-width;
}
#sidebar { width: grid-width(5); }
#sidebar {
width: 240px;
}
Extends
%message {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success {
@extend %message;
border-color: green;
}
.error {
@extend %message;
border-color: red;
}
.warning {
@extend %message;
border-color: yellow;
}
.message, .success, .error, .warning {
border: 1px solid #cccccc;
padding: 10px;
color: #333;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
.warning {
border-color: yellow;
}
Metodologia
Metodologias
Aqui temos as principais metodologias
para organizarmos nosso CSS:
OOCSS (Oriented Object CSS)
SMACSS
ITCSS
BEM
DRY CSS
Atomic
$lighten: #FFF;
$darken: #626262;
.header {
position: relative;
background-color: $lighten;
&__brand {
padding: 20px 0;
fill: $darken;
}
&--fixed {
position: fixed;
}
&--darken {
background-color: $darken;
.header__brand {
fill: $lighten;
}
}
}
.header {
position: relative;
background-color: #FFF;
}
.header__brand {
padding: 20px 0;
fill: #626262;
}
.header--fixed {
position: fixed;
}
.header--darken {
background-color: #626262;
}
.header--darken .header__brand {
fill: #FFF;
}
MAS PERA…
CUIDADO!
PostCss
O que é?
O PostCss é uma ferramenta baseada
em plugins de JS que cria rotinas para
o CSS.
Sem a necessidade de escrever em uma
syntax diferente .
Basicamente o PostCSS transforma o
CSS em código que o JS consegue
interpretar, para dessa forma aplicar
modificações nele.
Como funciona?
parser
plugins
stringfier
.css
Alguns Plugins
Autoprefixer
https://github.com/postcss/autoprefixer
$ npm install —-save-dev autoprefixer
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
gulp.task('postcss', function () {
return gulp.src('./style.css')
.pipe(postcss([autoprefixer]))
.pipe(gulp.dest('./prod'));
});
cssnext
http://cssnext.io/
$ npm install —-save-dev postcss-cssnext
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var cssnext = require('postcss-cssnext');
gulp.task('postcss', function () {
return gulp.src(‘./style.css')
.pipe(postcss([cssnext({browsers: ['last 1 version']})]))
.pipe(gulp.dest('./prod'));
});
cssnano
http://cssnano.co/
$ npm install —-save-dev cssnano
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var cssnano = require('cssnano');
gulp.task('postcss', function () {
return gulp.src('./style.css')
.pipe(postcss([cssnano]))
.pipe(gulp.dest('./prod'));
});
Font Magician
https://github.com/jonathantneal/postcss-font-magician
$ npm install —-save-dev postcss-font-magician
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var magician = require('postcss-font-magician');
gulp.task('postcss', function () {
return gulp.src('./style.css')
.pipe(postcss([magician]))
.pipe(gulp.dest('./prod'));
});
PostCSS Nested
https://github.com/postcss/postcss-nested
$ npm install —-save-dev postcss-nested
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var nested = require('postcss-nested');
gulp.task('postcss', function () {
return gulp.src('./style.css')
.pipe(postcss([nested]))
.pipe(gulp.dest('./prod'));
});
Lost Grid
http://lostgrid.org/
$ npm install lost
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var lost = require('lost');
gulp.task('postcss', function () {
return gulp.src('./style.css')
.pipe(postcss([lost]))
.pipe(gulp.dest('./prod'));
});
MAS PERA…
CUIDADO!
E o futuro… é CSS
Temos o CSS4 vindo ai e algumas features que encontramos em Pré e Pós Processadores já
estarão presentes. Algumas que estão na nova versão do CSS:
:root {
--mainColor: #E5E5E5;
}
!ul > li {
background-color: red;
}
a[href='foo' i] {
}
:not() | :has() | ::matches()
:read-only | :read-write
:required | :optional
:column(selector) | :nth-column(n) | :nth-last-column(n)
Variáveis
Subject Selector
Attribute Case-Sensitivity
Pseudo Classes
Structural Pseudo Classes
Referências
• http://sass-lang.com/
• https://medium.com/@neysimes
• https://www.youtube.com/watch?v=hWNzhKIa34w&t=1s
• https://www.postcss.parts
• http://postcss.org/
• http://css4.rocks/
• https://drafts.csswg.org/selectors-4/#overview
• https://css4-selectors.com/selectors/
Sem perguntas certo?
valeu pessoal 😬

Mais conteúdo relacionado

Semelhante a Pre vs Pos

CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012André Paulovich
 
Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix Nayara Felix
 
Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Conheça o Sass, mehor amigo do seu CSS - Nayara FelixConheça o Sass, mehor amigo do seu CSS - Nayara Felix
Conheça o Sass, mehor amigo do seu CSS - Nayara FelixNayara Felix
 
SASS e Compass, O CSS Ninja Workflow
SASS e Compass, O CSS Ninja WorkflowSASS e Compass, O CSS Ninja Workflow
SASS e Compass, O CSS Ninja WorkflowBeto Muniz
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
CSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano
CSS in JS - Escrevendo CSS no JavaScript - Dan VitorianoCSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano
CSS in JS - Escrevendo CSS no JavaScript - Dan VitorianoDan Vitoriano
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Sérgio Vilar
 
CSS Básico - Webdesign - 2021-01
CSS Básico - Webdesign - 2021-01CSS Básico - Webdesign - 2021-01
CSS Básico - Webdesign - 2021-01Renato Melo
 
Speed up! Critical css to the rescue
Speed up! Critical css to the rescueSpeed up! Critical css to the rescue
Speed up! Critical css to the rescuemelidevelopers
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptAndre Baltieri
 
CSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoCSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoAnyssa Ferreira
 
CSS: Introdução no Webdesign
CSS: Introdução no WebdesignCSS: Introdução no Webdesign
CSS: Introdução no WebdesignRenato Melo
 
CSS No Webdesign - Aula 06 - Webdesign - 2020-01
CSS No Webdesign - Aula 06 - Webdesign - 2020-01CSS No Webdesign - Aula 06 - Webdesign - 2020-01
CSS No Webdesign - Aula 06 - Webdesign - 2020-01Renato Melo
 
Introdução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webIntrodução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webCarlos Eduardo Kadu
 
Agilizando o desenvolvimento web com SASS
Agilizando o desenvolvimento web com SASSAgilizando o desenvolvimento web com SASS
Agilizando o desenvolvimento web com SASSRenato Galvão
 
Funcionalidades do SASS
Funcionalidades do SASSFuncionalidades do SASS
Funcionalidades do SASSLaís Lima
 
Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Afonso Gomes
 

Semelhante a Pre vs Pos (20)

CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Atualização da Palestra - Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
 
Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Conheça o Sass, mehor amigo do seu CSS - Nayara FelixConheça o Sass, mehor amigo do seu CSS - Nayara Felix
Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
 
SASS e Compass, O CSS Ninja Workflow
SASS e Compass, O CSS Ninja WorkflowSASS e Compass, O CSS Ninja Workflow
SASS e Compass, O CSS Ninja Workflow
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
CSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano
CSS in JS - Escrevendo CSS no JavaScript - Dan VitorianoCSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano
CSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)
 
CSS Básico - Webdesign - 2021-01
CSS Básico - Webdesign - 2021-01CSS Básico - Webdesign - 2021-01
CSS Básico - Webdesign - 2021-01
 
Speed up! Critical css to the rescue
Speed up! Critical css to the rescueSpeed up! Critical css to the rescue
Speed up! Critical css to the rescue
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScript
 
CSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoCSS - Cansei de Ser Subestimado
CSS - Cansei de Ser Subestimado
 
Arquitetura CSS
Arquitetura CSSArquitetura CSS
Arquitetura CSS
 
CSS: Introdução no Webdesign
CSS: Introdução no WebdesignCSS: Introdução no Webdesign
CSS: Introdução no Webdesign
 
Less
LessLess
Less
 
CSS No Webdesign - Aula 06 - Webdesign - 2020-01
CSS No Webdesign - Aula 06 - Webdesign - 2020-01CSS No Webdesign - Aula 06 - Webdesign - 2020-01
CSS No Webdesign - Aula 06 - Webdesign - 2020-01
 
Introdução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webIntrodução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento web
 
Agilizando o desenvolvimento web com SASS
Agilizando o desenvolvimento web com SASSAgilizando o desenvolvimento web com SASS
Agilizando o desenvolvimento web com SASS
 
Funcionalidades do SASS
Funcionalidades do SASSFuncionalidades do SASS
Funcionalidades do SASS
 
Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2
 

Pre vs Pos

  • 1.
  • 2. Nath Paiva Dev. Front-end @ GetNinjas Twitter: @NathPaiva Github: @NathPaiva William Costa Dev. Front-end @ GetNinjas Twitter: @wilcosta_dev Github: @williamcosta
  • 4. O que é? O Pre processador são programas que recebem um valor de entrada, que passa pelo processador que faz alterações no conteúdo recebido entregando um outro valor. Basicamente com o pré processador no CSS é a mesma coisa. Escrevemos o nosso código na sintaxe que é interpretada pelo nosso pré processador, no qual após compilado nada mais é do que o nosso velho e bom CSS.
  • 8. // Sintaxe SCSS e LESS body { font: 100% $font-stack; color: $primary-color; } // Sintaxe SASS body font: 100% $font-stack; color: $primary-color; // Sintaxe Stylus body font 100% $font-stack color $primary-color
  • 10. // Variâveis SCSS e SASS $font-stack: Helvetica, sans-serif; $primary-color: #333; // Variáveis LESS @font-stack: Helvetica, sans-serif; @primary-color: #333; //Variáveis Stylus font-stack = Helvetica, sans-serif; primary-color = #333; $font-stack = Helvetica, sans-serif; $primary-color = #333;
  • 12. nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } } nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
  • 13. Mixin
  • 14. @mixin border-radius($radius: 5px) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius: $radius; border-radius: $radius; } .box-1 { @include border-radius(); } .box-2 { @include border-radius(10px); } .box-1 { -webkit-border-radius: 5px; -moz-border-radius: 5px; -ms-border-radius: 5px; border-radius: 5px; } .box-2 { -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; }
  • 16. $grid-width: 40px; $gutter-width: 10px; @function grid-width($n) { @return $n * $grid-width + ($n - 1) * $gutter-width; } #sidebar { width: grid-width(5); } #sidebar { width: 240px; }
  • 18. %message { border: 1px solid #ccc; padding: 10px; color: #333; } .success { @extend %message; border-color: green; } .error { @extend %message; border-color: red; } .warning { @extend %message; border-color: yellow; } .message, .success, .error, .warning { border: 1px solid #cccccc; padding: 10px; color: #333; } .success { border-color: green; } .error { border-color: red; } .warning { border-color: yellow; }
  • 20. Metodologias Aqui temos as principais metodologias para organizarmos nosso CSS: OOCSS (Oriented Object CSS) SMACSS ITCSS BEM DRY CSS Atomic
  • 21. $lighten: #FFF; $darken: #626262; .header { position: relative; background-color: $lighten; &__brand { padding: 20px 0; fill: $darken; } &--fixed { position: fixed; } &--darken { background-color: $darken; .header__brand { fill: $lighten; } } } .header { position: relative; background-color: #FFF; } .header__brand { padding: 20px 0; fill: #626262; } .header--fixed { position: fixed; } .header--darken { background-color: #626262; } .header--darken .header__brand { fill: #FFF; }
  • 24. O que é? O PostCss é uma ferramenta baseada em plugins de JS que cria rotinas para o CSS. Sem a necessidade de escrever em uma syntax diferente . Basicamente o PostCSS transforma o CSS em código que o JS consegue interpretar, para dessa forma aplicar modificações nele.
  • 28.
  • 29. $ npm install —-save-dev autoprefixer var gulp = require('gulp'); var postcss = require('gulp-postcss'); var autoprefixer = require('autoprefixer'); gulp.task('postcss', function () { return gulp.src('./style.css') .pipe(postcss([autoprefixer])) .pipe(gulp.dest('./prod')); });
  • 31.
  • 32. $ npm install —-save-dev postcss-cssnext var gulp = require('gulp'); var postcss = require('gulp-postcss'); var cssnext = require('postcss-cssnext'); gulp.task('postcss', function () { return gulp.src(‘./style.css') .pipe(postcss([cssnext({browsers: ['last 1 version']})])) .pipe(gulp.dest('./prod')); });
  • 34.
  • 35. $ npm install —-save-dev cssnano var gulp = require('gulp'); var postcss = require('gulp-postcss'); var cssnano = require('cssnano'); gulp.task('postcss', function () { return gulp.src('./style.css') .pipe(postcss([cssnano])) .pipe(gulp.dest('./prod')); });
  • 37.
  • 38. $ npm install —-save-dev postcss-font-magician var gulp = require('gulp'); var postcss = require('gulp-postcss'); var magician = require('postcss-font-magician'); gulp.task('postcss', function () { return gulp.src('./style.css') .pipe(postcss([magician])) .pipe(gulp.dest('./prod')); });
  • 40.
  • 41. $ npm install —-save-dev postcss-nested var gulp = require('gulp'); var postcss = require('gulp-postcss'); var nested = require('postcss-nested'); gulp.task('postcss', function () { return gulp.src('./style.css') .pipe(postcss([nested])) .pipe(gulp.dest('./prod')); });
  • 43.
  • 44. $ npm install lost var gulp = require('gulp'); var postcss = require('gulp-postcss'); var lost = require('lost'); gulp.task('postcss', function () { return gulp.src('./style.css') .pipe(postcss([lost])) .pipe(gulp.dest('./prod')); });
  • 46. E o futuro… é CSS Temos o CSS4 vindo ai e algumas features que encontramos em Pré e Pós Processadores já estarão presentes. Algumas que estão na nova versão do CSS: :root { --mainColor: #E5E5E5; } !ul > li { background-color: red; } a[href='foo' i] { } :not() | :has() | ::matches() :read-only | :read-write :required | :optional :column(selector) | :nth-column(n) | :nth-last-column(n) Variáveis Subject Selector Attribute Case-Sensitivity Pseudo Classes Structural Pseudo Classes
  • 47. Referências • http://sass-lang.com/ • https://medium.com/@neysimes • https://www.youtube.com/watch?v=hWNzhKIa34w&t=1s • https://www.postcss.parts • http://postcss.org/ • http://css4.rocks/ • https://drafts.csswg.org/selectors-4/#overview • https://css4-selectors.com/selectors/