Pré-processadores são programas que recebem uma entrada, normalmente um texto, efetuando conversões em seu conteúdo que podem incluir substituições e inclusões condicionais.
São basicamente ferramentas alternativas para escrever CSS de uma forma mais dinâmica, organizada e flexível. Facilitando a vida do desenvolvedor.
O principal benefício dos pré-processadores é o ganho na produtividade, seja na criação ou manutenção de estilos, gerando aplicações com estilo organizado e sem duplicação de código.
NECESSIDADES!!!
Inicialmente o CSS foi projetado para ser uma linguagem simples para estilizar páginas web. Muitas vezes ela nos limita em algum aspecto, as tarefas do desenvolvedor front-end tem se tornado cada vez mais complexas, com uma infinidade de itens que precisam da nossa atenção, como por exemplo:
Para suprir essa necessidade surgiram os pré-processadores.
Com os pré-processadores é possível declarar variáveis, fazer operações matemáticas, criar condições para os estilos, e muito mais…
// scss
$color-base: #08f;
.box {
background-color: $color-base;
}// css
.box {
background-color: #08f;
}// scss
$font-default: 16px;
.big {
font-size: $font-default * 2;
}
.small {
font-size: $font-default - 4px;
}// css
.big {
font-size: 32px;
}
.small {
font-size: 14px;
}// scss
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
.box {
@include border-radius(5px);
}// css
.box {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
border-radius: 5px;
}// scss
header {
margin: 20px auto;
text-align: center;
h1 {
font-size: 18px;
}
.top {
border: 2px solid red;
p {
color: red;
}
}
}// css
header {
margin: 20px auto;
text-align: center;
}
header h1 {
font-size: 18px;
}
header .top {
border: 2px solid red;
}
header .top p {
color: red;
}// scss
a {
color: red;
&:hover {
color: blue;
}
}// css
a {
color: red;
}
a:hover {
color: blue;
}// scss
/* Esse comentário vai
* aparecer no css gerado
*/
// Esse não vai//css
/* Esse comentário vai
* aparecer no css gerado
*/// scss
%btn {
border-radius: 5px;
padding: 0;
}
.btn-primary {
@extend %btn;
background-color: red;
font-size: 16px;
}
.btn-big {
@extend .btn-primary;
font-size: 22px;
}//css
.btn-primary, .btn-big {
border-radius: 5px;
padding: 0;
background-color: red;
font-size: 16px;
}
.btn-big {
font-size: 22px;
}
// scss
$color-base : #08f;
$color-dark : darken($color-base, 10%);
$color-light: lighten($color-base, 10%);
a {
background-color: $color-base;
&:hover {
background-color: $color-dark;
}
&:link {
color: $color-light;
}
}//css
a {
background-color: #08f;
}
a:hover {
background-color: #006dcc;
}
a:link {
color: #33a0ff;
}
sass --watch app/sass:public/stylesheetsCom o sass
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
return gulp.src('./sass/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./css'));
});
gulp.task('sass:watch', function () {
gulp.watch('./sass/**/*.scss', ['sass']);
});Com o Gulp
gulp sass
gulp watchReferências: http://matheusazzi.com/pre-processadores-css/