SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
una introducción rápida a
                            Sintactically Awsome Stylesheets
                                                  gotardo gonzález




viernes 27 de julio de 12
¿y si...?

                :root {
                ! var-main-color: blue;                              ¿variables?
                }                                                        ¿while?
                                                                           ¿for?
                h1 {                                                   ¿foreach?
                ! color: $main-color;                                    ¿class?
                }                                                    ¿funciones?




                            CSS Variables Module Level 1
                            Editor's Draft 15 June 2012
                            http://dev.w3.org/csswg/css-variables/



viernes 27 de julio de 12
Sass es un intérprete de sintaxis escrito
                            en Ruby que nos permite utilizar
                            recursos propios de los lenguajes de
                            programación para facilitarnos la
                            escritura y mantenimiento del código
                            CSS.




viernes 27 de julio de 12
instalación

                            gem install sass

                            mv style.css style.scss

                            sass --watch style.scss:style.css




viernes 27 de julio de 12
sintaxis
                            SaSS vs. SCSS
         SaSS                                             SCSS
         una sintaxis indentada          bloques definidos en llaves
         similar a haml                             idéntica a CSS
         ya no tiene soporte
                                                       ¡nos quedamos
                                                          con scss!




viernes 27 de julio de 12
nested rules
                                                                         CSS
            Anidar selectores:
                                                    #navbar {
                                                      width: 80%;
                                                      height: 23px;
             SCSS                                   }

                                                    #navbar ul {
              #navbar {                                 list-style-type: none;
                width: 80%;                         }
                height: 23px;
                                                    #navbar li {
                    ul { list-style-type: none; }       float: left;
                    li {                            }
                      float: left;
                      a { font-weight: bold; }      #navbar li a {
                    }                                     font-weight: bold;
              }                                     }

viernes 27 de julio de 12
nested rules
            Definir pseudoselectores
            con el operador ‘&’ de SaSS
                                                                       CSS
             SCSS
                                                 a {
                                                   color: #ce4dd6;
                                                 }

                                                 a:hover {
                                                     color: #ffb3ff;
               a {                               }
                 color: #ce4dd6;
                 &:hover { color: #ffb3ff; }     a:visited {
                 &:visited { color: #c458cb; }       color: #c458cb;
               }                                 }

viernes 27 de julio de 12
variables :)
           SCSS                                              SCSS

              $width: 960px;             $color: #333;
              $margen: 12px;
                                         tr {
              .wrapper {                 color: $color - #111;
              width: $width - $margen;   }
              margin: $margen * 2;
              padding: $margen;          tr {
              border-radius: $margen;    color: darken($color, 25%);
              }                          }




viernes 27 de julio de 12
@import

          mi proyecto                           style.scss
             .                  @import “reset”;
             ..                 @import “vars”;
             _mixins.scss       @import “mixins”;
             _reset.scss
             _vars.scss         body {
             style.scss           background-color: $bgcolor;
                                  color: $color;
                                  wrapper {
                                    width: $width;
                                  }
                                }




viernes 27 de julio de 12
mixins !
          CSS
            .boton {
              border-radius: 5px;
              -moz-border-radius: 5px;                            SCSS
              -webkit-border-radius: 5px;
              behavior: url(radius.htc);    @mixin borderRadius($radius) {
                                              border-radius: 5px;
                    /* ... */                 -moz-border-radius: 5px;
            }                                 -webkit-border-radius: 5px;
                                              behavior: url(radius.htc);
            .widget {                       }
              border-radius: 5px;
              -moz-border-radius: 5px;      .boton {
              -webkit-border-radius: 5px;     @include borderRadius(5px);
              behavior: url(radius.htc);    }

                    /* ... */               .widget {
            }                                 @include borderRadius(5px);
                                            }

viernes 27 de julio de 12
extend !!
        SCSS                                                     SCSS
          .boton {                         .guardar {
            @include border-radius(5px);      @extend .boton;
          }                                   background-color: #369;
                                           }


                                           .borrar {
                                              @extend .boton;
                                              background-color: #a00;
                                           }




viernes 27 de julio de 12
extend !!
        SCSS                                                     SCSS
          .boton {                         .guardar {
            @include border-radius(5px);      @extend .boton;
          }                                   background-color: #369;
                                           }


                                           .borrar {
                                              @extend .boton;
                                              background-color: #a00;
                                           }




viernes 27 de julio de 12
functions !!!! :)_

        SCSS

          $grid-width: 40px;
          $gutter-width: 10px;

          @function grid-width($n) {
            @return $n * $grid-width + ($n - 1) * $gutter-width;
          }

          #sidebar { width: grid-width(5); }


                                                      Sayonara, <div class=”grid-5”>




viernes 27 de julio de 12
y mucho más
        for                               while
                                          $i: 6;
          @for $i from 1 through 3 {      @while $i > 0 {
            .item-#{$i} {                   .item-#{$i} {
                width: 2em * $i;               width: 2em * $i;
            }                               }
          }                                 $i: $i - 2;
                                          }


        each
           @each $animal in puma, sea-slug, egret, salamander {
             .#{$animal}-icon {
               background-image: url('/images/#{$animal}.png');
             }
           }

viernes 27 de julio de 12
y más, y más
                            Depuración y control de errores:

                            @debug
                            @warn

                            formatos de salida:

                            :nested
                            :expanded
                            :compact
                            :compressed




viernes 27 de julio de 12
Frameworks!
                                                                                                  Compass
                                                                   Basado en SaSS, se puede instalar como gem

                                                                                       http://compass-style.org/
              320 and Up
              incluye varias opciones de preprocesado
              (LESS, SaSS, SaSS + Compass,
              ScSS, ScSS + Compass ...)

              http://stuffandnonsense.co.uk/projects/320andup/
                                                                                              Foundation 3
                                                                    tiene una edición escrita en Sass + Compass

                                                                 http://foundation.zurb.com/docs/gem-install.php




viernes 27 de julio de 12
Para saber más...
                            SaSS Reference
                            http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html




                                                                           Pragmatic guide to SaSS
                                                     http://pragprog.com/book/pg_sass/pragmatic-guide-to-sass




viernes 27 de julio de 12
muchas gracias
                                 Gotardo González
                                          27 / 7 / 2012




viernes 27 de julio de 12

Más contenido relacionado

Similar a Introducción a SASS

Variables nativas CSS, Front-End con superpoderes para tu WordPress
Variables nativas CSS, Front-End con superpoderes para tu WordPressVariables nativas CSS, Front-End con superpoderes para tu WordPress
Variables nativas CSS, Front-End con superpoderes para tu WordPressWordPress Tarragona
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - SassNadal Soler
 
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
 
CSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y ModularCSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y Modularrodboc
 
Desarrollo web inteligente
Desarrollo web inteligenteDesarrollo web inteligente
Desarrollo web inteligenteMax Kraszewski
 
Css: bases y buenas prácticas
Css: bases y buenas prácticasCss: bases y buenas prácticas
Css: bases y buenas prácticasferwalker
 

Similar a Introducción a SASS (12)

Sngular - Sass: Vitamina tu CSS
Sngular - Sass: Vitamina tu CSSSngular - Sass: Vitamina tu CSS
Sngular - Sass: Vitamina tu CSS
 
Variables nativas CSS, Front-End con superpoderes para tu WordPress
Variables nativas CSS, Front-End con superpoderes para tu WordPressVariables nativas CSS, Front-End con superpoderes para tu WordPress
Variables nativas CSS, Front-End con superpoderes para tu WordPress
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - Sass
 
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
 
Semana 3 Maquetación CSS
Semana 3   Maquetación CSSSemana 3   Maquetación CSS
Semana 3 Maquetación CSS
 
CSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y ModularCSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y Modular
 
Estilo & CSS3
Estilo & CSS3Estilo & CSS3
Estilo & CSS3
 
Css3
Css3Css3
Css3
 
Desarrollo web inteligente
Desarrollo web inteligenteDesarrollo web inteligente
Desarrollo web inteligente
 
Presentación css
Presentación cssPresentación css
Presentación css
 
Css: bases y buenas prácticas
Css: bases y buenas prácticasCss: bases y buenas prácticas
Css: bases y buenas prácticas
 

Más de betabeers

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformabetabeers
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)betabeers
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lagebetabeers
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavillabetabeers
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbaobetabeers
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu appbetabeers
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)betabeers
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)betabeers
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)betabeers
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)betabeers
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Usobetabeers
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startupbetabeers
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.betabeers
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización webbetabeers
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrumbetabeers
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottambetabeers
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTbetabeers
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015betabeers
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015betabeers
 

Más de betabeers (20)

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataforma
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lage
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Uso
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startup
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización web
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrum
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottam
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoT
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
 

Introducción a SASS

  • 1. una introducción rápida a Sintactically Awsome Stylesheets gotardo gonzález viernes 27 de julio de 12
  • 2. ¿y si...? :root { ! var-main-color: blue; ¿variables? } ¿while? ¿for? h1 { ¿foreach? ! color: $main-color; ¿class? } ¿funciones? CSS Variables Module Level 1 Editor's Draft 15 June 2012 http://dev.w3.org/csswg/css-variables/ viernes 27 de julio de 12
  • 3. Sass es un intérprete de sintaxis escrito en Ruby que nos permite utilizar recursos propios de los lenguajes de programación para facilitarnos la escritura y mantenimiento del código CSS. viernes 27 de julio de 12
  • 4. instalación gem install sass mv style.css style.scss sass --watch style.scss:style.css viernes 27 de julio de 12
  • 5. sintaxis SaSS vs. SCSS SaSS SCSS una sintaxis indentada bloques definidos en llaves similar a haml idéntica a CSS ya no tiene soporte ¡nos quedamos con scss! viernes 27 de julio de 12
  • 6. nested rules CSS Anidar selectores: #navbar { width: 80%; height: 23px; SCSS } #navbar ul { #navbar { list-style-type: none; width: 80%; } height: 23px; #navbar li { ul { list-style-type: none; } float: left; li { } float: left; a { font-weight: bold; } #navbar li a { } font-weight: bold; } } viernes 27 de julio de 12
  • 7. nested rules Definir pseudoselectores con el operador ‘&’ de SaSS CSS SCSS a { color: #ce4dd6; } a:hover { color: #ffb3ff; a { } color: #ce4dd6; &:hover { color: #ffb3ff; } a:visited { &:visited { color: #c458cb; } color: #c458cb; } } viernes 27 de julio de 12
  • 8. variables :) SCSS SCSS $width: 960px; $color: #333; $margen: 12px; tr { .wrapper { color: $color - #111; width: $width - $margen; } margin: $margen * 2; padding: $margen; tr { border-radius: $margen; color: darken($color, 25%); } } viernes 27 de julio de 12
  • 9. @import mi proyecto style.scss . @import “reset”; .. @import “vars”; _mixins.scss @import “mixins”; _reset.scss _vars.scss body { style.scss background-color: $bgcolor; color: $color; wrapper { width: $width; } } viernes 27 de julio de 12
  • 10. mixins ! CSS .boton { border-radius: 5px; -moz-border-radius: 5px; SCSS -webkit-border-radius: 5px; behavior: url(radius.htc); @mixin borderRadius($radius) { border-radius: 5px; /* ... */ -moz-border-radius: 5px; } -webkit-border-radius: 5px; behavior: url(radius.htc); .widget { } border-radius: 5px; -moz-border-radius: 5px; .boton { -webkit-border-radius: 5px; @include borderRadius(5px); behavior: url(radius.htc); } /* ... */ .widget { } @include borderRadius(5px); } viernes 27 de julio de 12
  • 11. extend !! SCSS SCSS .boton { .guardar { @include border-radius(5px); @extend .boton; } background-color: #369; } .borrar { @extend .boton; background-color: #a00; } viernes 27 de julio de 12
  • 12. extend !! SCSS SCSS .boton { .guardar { @include border-radius(5px); @extend .boton; } background-color: #369; } .borrar { @extend .boton; background-color: #a00; } viernes 27 de julio de 12
  • 13. functions !!!! :)_ SCSS $grid-width: 40px; $gutter-width: 10px; @function grid-width($n) { @return $n * $grid-width + ($n - 1) * $gutter-width; } #sidebar { width: grid-width(5); } Sayonara, <div class=”grid-5”> viernes 27 de julio de 12
  • 14. y mucho más for while $i: 6; @for $i from 1 through 3 { @while $i > 0 { .item-#{$i} { .item-#{$i} { width: 2em * $i; width: 2em * $i; } } } $i: $i - 2; } each @each $animal in puma, sea-slug, egret, salamander { .#{$animal}-icon { background-image: url('/images/#{$animal}.png'); } } viernes 27 de julio de 12
  • 15. y más, y más Depuración y control de errores: @debug @warn formatos de salida: :nested :expanded :compact :compressed viernes 27 de julio de 12
  • 16. Frameworks! Compass Basado en SaSS, se puede instalar como gem http://compass-style.org/ 320 and Up incluye varias opciones de preprocesado (LESS, SaSS, SaSS + Compass, ScSS, ScSS + Compass ...) http://stuffandnonsense.co.uk/projects/320andup/ Foundation 3 tiene una edición escrita en Sass + Compass http://foundation.zurb.com/docs/gem-install.php viernes 27 de julio de 12
  • 17. Para saber más... SaSS Reference http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html Pragmatic guide to SaSS http://pragprog.com/book/pg_sass/pragmatic-guide-to-sass viernes 27 de julio de 12
  • 18. muchas gracias Gotardo González 27 / 7 / 2012 viernes 27 de julio de 12