SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
CSS Preprocessors Time!
    - with SASS, LESS and Stylus -
           (and Finn and Jake)




                                     @nahuelsotelo
Hola.           Soy
        Nahuel Sotelo
            @nahuelsotelo

        machaco teclados en
¿Qué son?



Una forma más eficiente de escribir CSS.
¿Qué son?


            .scss / .less / .styl
                   COMPILA



                    .css
¿Qué necesito
para empezar?
¿Qué necesito?
   Un archivo de texto con una extensión determinada
   (.scss, .less, .styl).
   Un editor de código que reconozca el lenguaje.
   Alguna manera de compilarlo en CSS.
¿Qué necesito?
   Hay varias maneras de compilar:
   En servidor (ruby)
   En cliente (JavaScript)
   En local (Compass, Codekit, Scout, less.app)
¿Qué necesito?

          Mi recomendación:
¿Qué necesito?
Codekit:
   Compila automáticamente al guardar en tu editor.
   Puede definirse el nivel de compresión del CSS.
   Settings por proyecto.
   Reporta errores.
   Actualiza los preprocesadores automáticamente.
   Bonus track: ¡Optimiza Imágenes!
Ventajas de los
preprocesadores
Ventajas
   Mejora el workflow de trabajo.
   Produce un código más legible y mantenible.
   Tienen una curva de aprendizaje muy amigable.
   Prototipado rápido con frameworks como Compass,
   Bourbon, Foundation o Twitter Bootstrap.
Pero no todo es
 color de rosa
Desventajas
   Si se usan sintaxis extremas luego puede costar volver
   al CSS normal.
   En equipos de varias personas, o todos o nadie.
   Si se trabaja en más de un equipo, todos tienen que tener
   la misma configuración.
   Si no se tiene cuidado puede resultar en un código
   ineficiente. ¡DRY!
Sintaxis (SCSS)
Variables
SCSS:
   $main: #FF54DC;
   $sans: Arial, Helvetica, sans-serif;

   .finn {
      border: 1px solid $main;
      color: $main;
      font-family: $sans;
   }
   .jake {
      background: $main;
   }
Variables
CSS:
   .finn {
      border: 1px solid #FF54DC;
      color: #FF54DC;
      font-family: Arial, Helvetica, sans-serif;
   }
   .jake {
      background: #FF54DC;
   }
Nesting
SCSS:
   .nav {
      border: 1px solid #666;
      padding: 1em;
      li {
           float: left;
           a{
             text-decoration: none;
             &:hover {
                text-decoration: underline;
             }
           }
      }
   }
Nesting
CSS:
   .nav {
      border: 1px solid #666;
      padding: 1em;
   }
   .nav li {
      float: left;
   }
   .nav li a {
      text-decoration: none;
   }
   .nav li a:hover {
      text-decoration: underline;
   }
Mixins
SCSS:
   @mixin font($size) {
     font-size: $size;
     font-size: $size/16px+0rem;
   }

   /* ======================= */

   .finn {
      @include font(14px);
   }
Mixins
CSS:
   .finn {
     font-size: 14px;
     font-size: 0.875rem;
   }
Mixins
SCSS:
   @mixin gradient($color1, $color2, $fall, $start, $end) {
      background: $fall;
      background-image: -webkit-gradient(linear, left top, left bottom, color-stop($start,$color1), color-
   stop($end,$color2));
      background-image: -webkit-linear-gradient(top, $color1 $start, $color2 $end);
      background-image: -moz-linear-gradient(top, $color1 $start, $color2 $end);
      background-image:     -ms-linear-gradient(top, $color1 $start, $color2 $end);
      background-image:       -o-linear-gradient(top, $color1 $start, $color2 $end);
      background-image:         linear-gradient(top, $color1 $start, $color2 $end);
   }

   /* ======================= */

   .finn {
      @include gradient(red,yellow, orange, 0%,100%);
   }
Mixins
CSS:
   .finn {
      background: orange;
      background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, red), color-
   stop(100%, yellow));
      background-image: -webkit-linear-gradient(top, red 0%, yellow 100%);
      background-image: -moz-linear-gradient(top, red 0%, yellow 100%);
      background-image: -ms-linear-gradient(top, red 0%, yellow 100%);
      background-image: -o-linear-gradient(top, red 0%, yellow 100%);
      background-image: linear-gradient(top, red 0%, yellow 100%);
   }
Operaciones con colores
SCSS:
   .a {
      color: #F00;
   }
   .a:hover {
      color: lighten(#F00, 20%);
   }
Operaciones con colores
CSS:
   .a {
      color: #F00;
   }
   .a:hover {
      color: #FF6666;
   }
Mates
SCSS:
   .body {
     margin: (14px/2);
     top: 50px + 100px;
     right: 100px - 50px;
     left: 10px * 10px;
   }
Mates
CSS:
   .body {
     margin: 7px;
     top: 150px;
     right: 50px;
     left: 100px;
   }
Y es sólo la
punta del icberg
     Functions
   Conditionals
   Interpolation
       Grids
         ...
Recursos
      PREPROCESADORES:
  •   SASS: http://sass-lang.com/
  •   LESS: http://lesscss.org/
  •   STYLUS: http://learnboost.github.com/stylus/

      HERRAMIENTAS:
  •   CODEKIT: http://incident57.com/codekit/
  •   SCOUT: http://mhs.github.com/scout-app/
  •   LESS APP: http://incident57.com/less/
Recursos
      FRAMEWORKS:
  •   COMPASS: http://compass-style.org/
  •   BOURBON: http://thoughtbot.com/bourbon/
  •   ZURB FOUNDATION: http://foundation.zurb.com/
  •   TWITTER BOOTSTRAP: http://twitter.github.com/bootstrap/

      GRID SYSTEMS:
  •   SINGULARITY: http://singularity.gs/
  •   SEMANTIC: http://semantic.gs/
  •   SUSY: http://susy.oddbird.net/
¡Gracias!




Imagenes de Adventure Time cortesía de Google y TM & © 2012 Cartoon Network. A Time Warner Company. All Rights Reserved.

Contenu connexe

Similaire à "CSS Preprocessors Time!" por @nahuelsotelo

Frameworks CSS
Frameworks CSSFrameworks CSS
Frameworks CSS
betabeers
 

Similaire à "CSS Preprocessors Time!" por @nahuelsotelo (20)

Sass: CSS con Superpoderes
Sass: CSS con SuperpoderesSass: CSS con Superpoderes
Sass: CSS con Superpoderes
 
Adaptando CSS a los programadores: SASS y Compass
Adaptando CSS a los programadores: SASS y CompassAdaptando CSS a los programadores: SASS y Compass
Adaptando CSS a los programadores: SASS y Compass
 
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio CarracedoPHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
 
Desarrollo web inteligente
Desarrollo web inteligenteDesarrollo web inteligente
Desarrollo web inteligente
 
Sass - Preprocesador de CSS
Sass  - Preprocesador de CSSSass  - Preprocesador de CSS
Sass - Preprocesador de CSS
 
Guia N3 Proyectos Web Php Css, Js
Guia N3   Proyectos Web   Php Css, JsGuia N3   Proyectos Web   Php Css, Js
Guia N3 Proyectos Web Php Css, Js
 
Css3
Css3Css3
Css3
 
Laboratorio 03
Laboratorio 03Laboratorio 03
Laboratorio 03
 
Frameworks CSS
Frameworks CSSFrameworks CSS
Frameworks CSS
 
Introducción a los Frameworks CSS
Introducción a los Frameworks CSSIntroducción a los Frameworks CSS
Introducción a los Frameworks CSS
 
WordPress y Grunt
WordPress y GruntWordPress y Grunt
WordPress y Grunt
 
CSS3
CSS3CSS3
CSS3
 
Semana 3 Maquetación CSS
Semana 3   Maquetación CSSSemana 3   Maquetación CSS
Semana 3 Maquetación CSS
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - Sass
 
Hipervinculos
HipervinculosHipervinculos
Hipervinculos
 
LESS y SEO (TechFest)
LESS y SEO (TechFest)LESS y SEO (TechFest)
LESS y SEO (TechFest)
 
Arquitectura frontend para proyectos con preprocesadores CSS
Arquitectura frontend para proyectos con preprocesadores CSSArquitectura frontend para proyectos con preprocesadores CSS
Arquitectura frontend para proyectos con preprocesadores CSS
 
CSS Preprocessors - Sass
CSS Preprocessors - SassCSS Preprocessors - Sass
CSS Preprocessors - Sass
 
2014 04 padrino
2014 04 padrino2014 04 padrino
2014 04 padrino
 
Conferencia HTML5 y CSS3 por Alexandra García Milan
Conferencia HTML5 y CSS3 por Alexandra García MilanConferencia HTML5 y CSS3 por Alexandra García Milan
Conferencia HTML5 y CSS3 por Alexandra García Milan
 

Plus de webcat

Plus de webcat (20)

"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
"Inception" por @CarlosTheSailor
"Inception" por @CarlosTheSailor"Inception" por @CarlosTheSailor
"Inception" por @CarlosTheSailor
 
"Cómo hicimos la web responsive y accesible de cierto equipo de fútbol y otro...
"Cómo hicimos la web responsive y accesible de cierto equipo de fútbol y otro..."Cómo hicimos la web responsive y accesible de cierto equipo de fútbol y otro...
"Cómo hicimos la web responsive y accesible de cierto equipo de fútbol y otro...
 
"unoStringSynth: hack musical con Arduino" por @unoStringSynth
"unoStringSynth: hack musical con Arduino" por @unoStringSynth"unoStringSynth: hack musical con Arduino" por @unoStringSynth
"unoStringSynth: hack musical con Arduino" por @unoStringSynth
 
"UX en 10 películas" por @nunile
"UX en 10 películas" por @nunile"UX en 10 películas" por @nunile
"UX en 10 películas" por @nunile
 
"Continuous Deployment" por @fredfigueiredo
"Continuous Deployment" por @fredfigueiredo"Continuous Deployment" por @fredfigueiredo
"Continuous Deployment" por @fredfigueiredo
 
"WebView, the fifth element" por @fernando_cejas
"WebView, the fifth element" por @fernando_cejas"WebView, the fifth element" por @fernando_cejas
"WebView, the fifth element" por @fernando_cejas
 
"Pushing the boundaries" por @danielguillan
"Pushing the boundaries" por @danielguillan"Pushing the boundaries" por @danielguillan
"Pushing the boundaries" por @danielguillan
 
"One size fits none" por @martuishere
"One size fits none" por @martuishere"One size fits none" por @martuishere
"One size fits none" por @martuishere
 
"Designing digital products for kids" por @karinai
"Designing digital products for kids" por @karinai"Designing digital products for kids" por @karinai
"Designing digital products for kids" por @karinai
 
"How to write better User Stories" por @jrhuerta
"How to write better User Stories" por @jrhuerta"How to write better User Stories" por @jrhuerta
"How to write better User Stories" por @jrhuerta
 
"GTD & Pomodoro Technique" por @deambulando
"GTD & Pomodoro Technique" por @deambulando"GTD & Pomodoro Technique" por @deambulando
"GTD & Pomodoro Technique" por @deambulando
 
"Esqueuomorfismo: la ruptura de la metáfora" por @omixam
"Esqueuomorfismo: la ruptura de la metáfora" por @omixam"Esqueuomorfismo: la ruptura de la metáfora" por @omixam
"Esqueuomorfismo: la ruptura de la metáfora" por @omixam
 
"The work I love" por @karinai
"The work I love" por @karinai"The work I love" por @karinai
"The work I love" por @karinai
 
"APIS, como reutilizar contenidos en tu web" por @daniel_julia
"APIS, como reutilizar contenidos en tu web" por @daniel_julia"APIS, como reutilizar contenidos en tu web" por @daniel_julia
"APIS, como reutilizar contenidos en tu web" por @daniel_julia
 
"Web performance optimization for everyone" por @abellonch
"Web performance optimization for everyone" por @abellonch"Web performance optimization for everyone" por @abellonch
"Web performance optimization for everyone" por @abellonch
 
"HTML & CSS apps & internet powered TV" por @JeronimJackson
"HTML & CSS apps & internet powered TV" por @JeronimJackson"HTML & CSS apps & internet powered TV" por @JeronimJackson
"HTML & CSS apps & internet powered TV" por @JeronimJackson
 
"Cuadro de mandos para UX. El método HEART" por @galu
"Cuadro de mandos para UX. El método HEART" por @galu"Cuadro de mandos para UX. El método HEART" por @galu
"Cuadro de mandos para UX. El método HEART" por @galu
 
"Wordpress for web designers. What, when, how, where" por @nuriarai
"Wordpress for web designers. What, when, how, where" por @nuriarai"Wordpress for web designers. What, when, how, where" por @nuriarai
"Wordpress for web designers. What, when, how, where" por @nuriarai
 
"Humans.txt" por @JuanjoBernabeu y @lafabricaverde
"Humans.txt" por @JuanjoBernabeu y @lafabricaverde"Humans.txt" por @JuanjoBernabeu y @lafabricaverde
"Humans.txt" por @JuanjoBernabeu y @lafabricaverde
 

Dernier

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 

Dernier (20)

Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docx
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blog
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
CARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbx
CARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbxCARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbx
CARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbx
 

"CSS Preprocessors Time!" por @nahuelsotelo

  • 1. CSS Preprocessors Time! - with SASS, LESS and Stylus - (and Finn and Jake) @nahuelsotelo
  • 2. Hola. Soy Nahuel Sotelo @nahuelsotelo machaco teclados en
  • 3. ¿Qué son? Una forma más eficiente de escribir CSS.
  • 4. ¿Qué son? .scss / .less / .styl COMPILA .css
  • 6. ¿Qué necesito? Un archivo de texto con una extensión determinada (.scss, .less, .styl). Un editor de código que reconozca el lenguaje. Alguna manera de compilarlo en CSS.
  • 7. ¿Qué necesito? Hay varias maneras de compilar: En servidor (ruby) En cliente (JavaScript) En local (Compass, Codekit, Scout, less.app)
  • 8. ¿Qué necesito? Mi recomendación:
  • 9. ¿Qué necesito? Codekit: Compila automáticamente al guardar en tu editor. Puede definirse el nivel de compresión del CSS. Settings por proyecto. Reporta errores. Actualiza los preprocesadores automáticamente. Bonus track: ¡Optimiza Imágenes!
  • 11. Ventajas Mejora el workflow de trabajo. Produce un código más legible y mantenible. Tienen una curva de aprendizaje muy amigable. Prototipado rápido con frameworks como Compass, Bourbon, Foundation o Twitter Bootstrap.
  • 12. Pero no todo es color de rosa
  • 13. Desventajas Si se usan sintaxis extremas luego puede costar volver al CSS normal. En equipos de varias personas, o todos o nadie. Si se trabaja en más de un equipo, todos tienen que tener la misma configuración. Si no se tiene cuidado puede resultar en un código ineficiente. ¡DRY!
  • 15. Variables SCSS: $main: #FF54DC; $sans: Arial, Helvetica, sans-serif; .finn { border: 1px solid $main; color: $main; font-family: $sans; } .jake { background: $main; }
  • 16. Variables CSS: .finn { border: 1px solid #FF54DC; color: #FF54DC; font-family: Arial, Helvetica, sans-serif; } .jake { background: #FF54DC; }
  • 17. Nesting SCSS: .nav { border: 1px solid #666; padding: 1em; li { float: left; a{ text-decoration: none; &:hover { text-decoration: underline; } } } }
  • 18. Nesting CSS: .nav { border: 1px solid #666; padding: 1em; } .nav li { float: left; } .nav li a { text-decoration: none; } .nav li a:hover { text-decoration: underline; }
  • 19. Mixins SCSS: @mixin font($size) { font-size: $size; font-size: $size/16px+0rem; } /* ======================= */ .finn { @include font(14px); }
  • 20. Mixins CSS: .finn { font-size: 14px; font-size: 0.875rem; }
  • 21. Mixins SCSS: @mixin gradient($color1, $color2, $fall, $start, $end) { background: $fall; background-image: -webkit-gradient(linear, left top, left bottom, color-stop($start,$color1), color- stop($end,$color2)); background-image: -webkit-linear-gradient(top, $color1 $start, $color2 $end); background-image: -moz-linear-gradient(top, $color1 $start, $color2 $end); background-image: -ms-linear-gradient(top, $color1 $start, $color2 $end); background-image: -o-linear-gradient(top, $color1 $start, $color2 $end); background-image: linear-gradient(top, $color1 $start, $color2 $end); } /* ======================= */ .finn { @include gradient(red,yellow, orange, 0%,100%); }
  • 22. Mixins CSS: .finn { background: orange; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, red), color- stop(100%, yellow)); background-image: -webkit-linear-gradient(top, red 0%, yellow 100%); background-image: -moz-linear-gradient(top, red 0%, yellow 100%); background-image: -ms-linear-gradient(top, red 0%, yellow 100%); background-image: -o-linear-gradient(top, red 0%, yellow 100%); background-image: linear-gradient(top, red 0%, yellow 100%); }
  • 23. Operaciones con colores SCSS: .a { color: #F00; } .a:hover { color: lighten(#F00, 20%); }
  • 24. Operaciones con colores CSS: .a { color: #F00; } .a:hover { color: #FF6666; }
  • 25. Mates SCSS: .body {   margin: (14px/2);   top: 50px + 100px;   right: 100px - 50px;   left: 10px * 10px; }
  • 26. Mates CSS: .body {   margin: 7px;   top: 150px;   right: 50px;   left: 100px; }
  • 27. Y es sólo la punta del icberg Functions Conditionals Interpolation Grids ...
  • 28. Recursos PREPROCESADORES: • SASS: http://sass-lang.com/ • LESS: http://lesscss.org/ • STYLUS: http://learnboost.github.com/stylus/ HERRAMIENTAS: • CODEKIT: http://incident57.com/codekit/ • SCOUT: http://mhs.github.com/scout-app/ • LESS APP: http://incident57.com/less/
  • 29. Recursos FRAMEWORKS: • COMPASS: http://compass-style.org/ • BOURBON: http://thoughtbot.com/bourbon/ • ZURB FOUNDATION: http://foundation.zurb.com/ • TWITTER BOOTSTRAP: http://twitter.github.com/bootstrap/ GRID SYSTEMS: • SINGULARITY: http://singularity.gs/ • SEMANTIC: http://semantic.gs/ • SUSY: http://susy.oddbird.net/
  • 30. ¡Gracias! Imagenes de Adventure Time cortesía de Google y TM & © 2012 Cartoon Network. A Time Warner Company. All Rights Reserved.