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

Sass: CSS con Superpoderes
Sass: CSS con SuperpoderesSass: CSS con Superpoderes
Sass: CSS con SuperpoderesEdgar Parada
 
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 CompassParadigma Digital
 
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 CarracedoPHP Vigo
 
Desarrollo web inteligente
Desarrollo web inteligenteDesarrollo web inteligente
Desarrollo web inteligenteMax Kraszewski
 
Sass - Preprocesador de CSS
Sass  - Preprocesador de CSSSass  - Preprocesador de CSS
Sass - Preprocesador de CSSJavier Herrera
 
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, JsJose Ponce
 
Frameworks CSS
Frameworks CSSFrameworks CSS
Frameworks CSSbetabeers
 
Introducción a los Frameworks CSS
Introducción a los Frameworks CSSIntroducción a los Frameworks CSS
Introducción a los Frameworks CSSLuis Miguel Martín
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - SassNadal Soler
 
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 CSSAlberto Portolés Coscojuela
 
CSS Preprocessors - Sass
CSS Preprocessors - SassCSS Preprocessors - Sass
CSS Preprocessors - SassLourdes Montano
 
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 MilanAndres Karp
 

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

"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
"Inception" por @CarlosTheSailor
"Inception" por @CarlosTheSailor"Inception" por @CarlosTheSailor
"Inception" por @CarlosTheSailorwebcat
 
"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...webcat
 
"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 @unoStringSynthwebcat
 
"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 @nunilewebcat
 
"Continuous Deployment" por @fredfigueiredo
"Continuous Deployment" por @fredfigueiredo"Continuous Deployment" por @fredfigueiredo
"Continuous Deployment" por @fredfigueiredowebcat
 
"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_cejaswebcat
 
"Pushing the boundaries" por @danielguillan
"Pushing the boundaries" por @danielguillan"Pushing the boundaries" por @danielguillan
"Pushing the boundaries" por @danielguillanwebcat
 
"One size fits none" por @martuishere
"One size fits none" por @martuishere"One size fits none" por @martuishere
"One size fits none" por @martuisherewebcat
 
"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 @karinaiwebcat
 
"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 @jrhuertawebcat
 
"GTD & Pomodoro Technique" por @deambulando
"GTD & Pomodoro Technique" por @deambulando"GTD & Pomodoro Technique" por @deambulando
"GTD & Pomodoro Technique" por @deambulandowebcat
 
"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 @omixamwebcat
 
"The work I love" por @karinai
"The work I love" por @karinai"The work I love" por @karinai
"The work I love" por @karinaiwebcat
 
"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_juliawebcat
 
"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 @abellonchwebcat
 
"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 @JeronimJacksonwebcat
 
"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 @galuwebcat
 
"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 @nuriaraiwebcat
 
"Humans.txt" por @JuanjoBernabeu y @lafabricaverde
"Humans.txt" por @JuanjoBernabeu y @lafabricaverde"Humans.txt" por @JuanjoBernabeu y @lafabricaverde
"Humans.txt" por @JuanjoBernabeu y @lafabricaverdewebcat
 

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

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 

Dernier (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

"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.