SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Making CSS fun again :)
About
○ Front end developer at Conrad Caine
○ Analysis and development of systems at SENAC
This is my first presentation and everything can be boring...
                      so let's drink beer!
I will talk about
○ CSS weaknesses
○ Syntax
○ Features
○ Techniques
○ ...
CSS WEAKNESSES
What's wrong with CSS?
○ No variables
○ Prefixes
○ Lack of abstraction
○ Hard to maintain (mainly in big css files)
THE SOLUTION
CSS Preprocessors
○ Sass
○ Less
○ Stylus




            They are the most popular.
WHAT ARE CSS
PREPROCESSORS?
What are CSS Preprocessor?
"CSS preprocessors take code written in the preprocessed
language and then convert that code into the same old css
we’ve been writing for years."
STARTING WITH SASS
About
○ Syntactically Awesome StyleSheets
○ Sass makes CSS fun again
○ Sass get installed as Ruby gem, then you need to have
   Ruby on your machine.
Installing
gem install sass
The Process
○ Create a .scss file
○ Watch this .scss
○ Sass will create your .css
○ Be happy!
Watching a .scss file
sass --watch dev.scss:style.css
Output style
Sass allows you to choose between four different output
styles using the --style command-line flag.


sass --watch dev.scss:style.css   --style nested
sass --watch dev.scss:style.css   --style expanded
sass --watch dev.scss:style.css   --style compact
sass --watch dev.scss:style.css   --style compressed
VARIABLES
How can we do this today?
Variables
/* dev.scss */        /* output */
$width: 100px;        .side {
$color: #00214D;        width: 100px;
$size: 16px;          }

.side {               .bar {
  width: $width;        width: 100px;
}                       font-size: 16px;
                        color: #00214D;
.bar {                }
  width: $width;
  font-size: $size;
  color: $color;
}
Math operations
/* dev.scss */              /* output */
$width: 600px;              .nav li {
$length: 3;                   width: 200px;
                            }
.nav li {
  width: $width / $length
}
Color functions
/* dev.scss */                     /* output */
$color: #ce4dd6;                   .nav a {
                                     color: #e5a0e9;
                                   }
.nav a {
                                   .nav a:hover {
  color: lighten($color, 20%);       color: #d976e0;
  &:hover {                        }
    color: lighten($color, 10%);
  }
}
NESTING
We are accustomed to do this:
/* primate.css */
.nav li {
  list-style:none;
  float:left;
}

.nav li a {
  display:block;
  padding:5px;
}
Now we can do this:
/* dev.scss */          /* output */
.nav {                  .nav li {
  li {                    list-style: none;
                          float: left;
    list-style:none;
                        }
    float:left;
    a {                 .nav li a {
       display:block;     display: block;
       color:blue;        color: blue;
    }                   }
  }
}
Parent Reference
/* dev.scss */          /* output */
.nav {                  .nav li {
  li {                    list-style: none;
                          float: left;
    list-style:none;
                        }
    float:left;
    a {                 .nav li a {
       display:block;     display: block;
       color:blue;        color: blue;
       &:hover {        }
         color:red;
                        .nav li a:hover {
       }
                          display: block;
    }                     color: red;
  }                     }
}
MIXINS
Mixins
/* primate.css */
.nav li a {
  padding: 5px;
  border: 1px solid red;
  -moz-border-radius: 10px;
  -webkit-border-radius:
10px;
  border-radius: 10px;
}
Mixins
/* dev.scss */               /* output */
@mixin borderRadius {        .nav li a {
 -moz-border-radius: 10px;     padding: 5px;
                               border: 1px solid red;
 -webkit-border-radius:
10px;                          -moz-border-radius: 10px;
                               -webkit-border-radius:
 border-radius: 10px;        10px;
}                              border-radius: 10px;
                             }
.nav li a {
 padding: 5px;
 border: 1px solid red;
 @include borderRadius;
}
Arguments
/* dev.scss */            /* output */
@mixin title($size) {     article h2 {
  font: {                   font-family: arial;
                            font-size: 40px;
    family: arial;
                            font-weight: bold;
    size: $size;          }
    weight: bold;
  }
}

article h2 {
  @include title(40px);
}
INHERITANCE
Inheritance
/* dev.scss */              /* output */
.nav {                      .nav, .category {
   background: #CCC;          background: #CCC;
                              border: 1px solid red;
   border: 1px solid red;
                            }
}

.category {
   @extend .nav;
}
INTERPOLATION
Interpolation
/* dev.scss */            /* output */
$name: box;               p.box {
$attr: border;              border-color: blue;
                          }
p.#{$name} {
  #{$attr}-color: blue;
}
@import
@import




     core.css   fonts.css   reset.css   footer.css
@import
/* dev.scss */           /* output */
@import "reset.scss";
@import "fonts.scss";    /* reset */
@import "footer.scss";   html {}

                         /* fonts */
                         @font-face {}

                         /* footer */
                         footer {}
Control Directives
@if
/* dev.scss */                /* output */
$type: 'games';
                              p {
p {                             color: blue;
  @if $type == sports {       }
    color: green;
  }
  @else if $type == games {
    color: blue;
  }
  @else {
    color: red;
  }
}
@for
/* dev.scss */               /* output */
@for $i from 1 through 3 {   .item-1 {
  .item-#{$i} {                font-size: 12px;
                             }
    font-size: 12px * $i;
  }                          .item-2 {
}                              font-size: 24px;
                             }

                             .item-3 {
                               font-size: 36px;
                             }
@each
/* dev.scss */              /* output */
@each $type in a, b, c {    .a-icon {
  .#{$type}-icon {            background-image: url
                            ("/images/a.png");
    background-image: url
('/images/#{$type}.png');   }
  }                         .b-icon {
}                             background-image: url
                            ("/images/b.png");
                            }

                            .c-icon {
                              background-image: url
                            ("/images/c.png");
                            }
@while
/* dev.scss */                 /* output */
$i: 6;                         .item-6 {
@while $i > 0 {                  width: 12px;
                               }
  .item-#{$i} { width: 2px *
$i; }
                               .item-4 {
  $i: $i - 2;                    width: 8px;
}                              }

                               .item-2 {
                                 width: 4px;
                               }
Thank you!
○ gabrielneutzling@gmail.com
○ facebook.com/gneutzling
○ @gneutzling

Weitere ähnliche Inhalte

Was ist angesagt?

DBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちDBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちRyo Miyake
 
Make your own wp cli command in 10min
Make your own wp cli command in 10minMake your own wp cli command in 10min
Make your own wp cli command in 10minIvelina Dimova
 
Theming Ext JS 4
Theming Ext JS 4Theming Ext JS 4
Theming Ext JS 4Sencha
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid PrototypingEven Wu
 
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)Chih-cheng Wang
 
JSON Schema in Web Frontend #insideFE
JSON Schema in Web Frontend #insideFEJSON Schema in Web Frontend #insideFE
JSON Schema in Web Frontend #insideFEHiroyuki Anai
 
Google Cloud Challenge - PHP - DevFest GDG-Cairo
Google Cloud Challenge - PHP - DevFest GDG-Cairo Google Cloud Challenge - PHP - DevFest GDG-Cairo
Google Cloud Challenge - PHP - DevFest GDG-Cairo Haitham Nabil
 
CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書拓樹 谷
 
Auto tools
Auto toolsAuto tools
Auto tools祺 周
 
Shortcodes In-Depth
Shortcodes In-DepthShortcodes In-Depth
Shortcodes In-DepthMicah Wood
 
R57php 1231677414471772-2
R57php 1231677414471772-2R57php 1231677414471772-2
R57php 1231677414471772-2ady36
 
Bouncingballs sh
Bouncingballs shBouncingballs sh
Bouncingballs shBen Pope
 
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tMojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tCosimo Streppone
 
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)Dotan Dimet
 

Was ist angesagt? (19)

DBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちDBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たち
 
Make your own wp cli command in 10min
Make your own wp cli command in 10minMake your own wp cli command in 10min
Make your own wp cli command in 10min
 
Theming Ext JS 4
Theming Ext JS 4Theming Ext JS 4
Theming Ext JS 4
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid Prototyping
 
CGI.pm - 3ло?!
CGI.pm - 3ло?!CGI.pm - 3ло?!
CGI.pm - 3ло?!
 
PhoneGap: Local Storage
PhoneGap: Local StoragePhoneGap: Local Storage
PhoneGap: Local Storage
 
SQL Injection Part 2
SQL Injection Part 2SQL Injection Part 2
SQL Injection Part 2
 
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
 
CSS3 Refresher
CSS3 RefresherCSS3 Refresher
CSS3 Refresher
 
Jina Bolton
Jina BoltonJina Bolton
Jina Bolton
 
JSON Schema in Web Frontend #insideFE
JSON Schema in Web Frontend #insideFEJSON Schema in Web Frontend #insideFE
JSON Schema in Web Frontend #insideFE
 
Google Cloud Challenge - PHP - DevFest GDG-Cairo
Google Cloud Challenge - PHP - DevFest GDG-Cairo Google Cloud Challenge - PHP - DevFest GDG-Cairo
Google Cloud Challenge - PHP - DevFest GDG-Cairo
 
CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書
 
Auto tools
Auto toolsAuto tools
Auto tools
 
Shortcodes In-Depth
Shortcodes In-DepthShortcodes In-Depth
Shortcodes In-Depth
 
R57php 1231677414471772-2
R57php 1231677414471772-2R57php 1231677414471772-2
R57php 1231677414471772-2
 
Bouncingballs sh
Bouncingballs shBouncingballs sh
Bouncingballs sh
 
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tMojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
 
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
 

Ähnlich wie Sass - Making CSS fun again.

Mobile-first OOCSS, Sass & Compass at BBC Responsive News
Mobile-first OOCSS, Sass & Compass at BBC Responsive NewsMobile-first OOCSS, Sass & Compass at BBC Responsive News
Mobile-first OOCSS, Sass & Compass at BBC Responsive NewsKaelig Deloumeau-Prigent
 
Wrangling the CSS Beast with Sass
Wrangling the CSS Beast  with SassWrangling the CSS Beast  with Sass
Wrangling the CSS Beast with SassRob Friesel
 
Work and play with SASS & Compass
Work and play with SASS & CompassWork and play with SASS & Compass
Work and play with SASS & CompassAndreas Dantz
 
Software programming tools for creating/managing CSS files
Software programming tools for creating/managing CSS filesSoftware programming tools for creating/managing CSS files
Software programming tools for creating/managing CSS filesDinu Suman
 
Preprocessor presentation
Preprocessor presentationPreprocessor presentation
Preprocessor presentationMario Noble
 
Curso CSS3 com Sass e Compass - Aula 01 - Introducão
Curso CSS3 com Sass e Compass - Aula 01 - IntroducãoCurso CSS3 com Sass e Compass - Aula 01 - Introducão
Curso CSS3 com Sass e Compass - Aula 01 - IntroducãoLoiane Groner
 
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and CompassBringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and CompassClaudina Sarahe
 
Sass and Compass - Getting Started
Sass and Compass - Getting StartedSass and Compass - Getting Started
Sass and Compass - Getting Startededgincvg
 
LessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG MeetingLessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG MeetingMyles Braithwaite
 
Finding a Better Way to CSS: Navigating Sass with Compass
Finding a Better Way to CSS: Navigating Sass with CompassFinding a Better Way to CSS: Navigating Sass with Compass
Finding a Better Way to CSS: Navigating Sass with CompassClaudina Sarahe
 
Doing more with LESS
Doing more with LESSDoing more with LESS
Doing more with LESSjsmith92
 
Getting Started with Sass & Compass
Getting Started with Sass & CompassGetting Started with Sass & Compass
Getting Started with Sass & CompassRob Davarnia
 
Ext js saas&compass
Ext js saas&compassExt js saas&compass
Ext js saas&compasselitonweb
 

Ähnlich wie Sass - Making CSS fun again. (20)

Mobile-first OOCSS, Sass & Compass at BBC Responsive News
Mobile-first OOCSS, Sass & Compass at BBC Responsive NewsMobile-first OOCSS, Sass & Compass at BBC Responsive News
Mobile-first OOCSS, Sass & Compass at BBC Responsive News
 
CSS Extenders
CSS ExtendersCSS Extenders
CSS Extenders
 
Wrangling the CSS Beast with Sass
Wrangling the CSS Beast  with SassWrangling the CSS Beast  with Sass
Wrangling the CSS Beast with Sass
 
Work and play with SASS & Compass
Work and play with SASS & CompassWork and play with SASS & Compass
Work and play with SASS & Compass
 
Sass&compass
Sass&compassSass&compass
Sass&compass
 
Theming and Sass
Theming and SassTheming and Sass
Theming and Sass
 
Css frameworks
Css frameworksCss frameworks
Css frameworks
 
Sencha Touch
Sencha TouchSencha Touch
Sencha Touch
 
Software programming tools for creating/managing CSS files
Software programming tools for creating/managing CSS filesSoftware programming tools for creating/managing CSS files
Software programming tools for creating/managing CSS files
 
Preprocessor presentation
Preprocessor presentationPreprocessor presentation
Preprocessor presentation
 
Curso CSS3 com Sass e Compass - Aula 01 - Introducão
Curso CSS3 com Sass e Compass - Aula 01 - IntroducãoCurso CSS3 com Sass e Compass - Aula 01 - Introducão
Curso CSS3 com Sass e Compass - Aula 01 - Introducão
 
Accelerated Stylesheets
Accelerated StylesheetsAccelerated Stylesheets
Accelerated Stylesheets
 
Less & Sass
Less & SassLess & Sass
Less & Sass
 
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and CompassBringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
 
Sass and Compass - Getting Started
Sass and Compass - Getting StartedSass and Compass - Getting Started
Sass and Compass - Getting Started
 
LessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG MeetingLessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG Meeting
 
Finding a Better Way to CSS: Navigating Sass with Compass
Finding a Better Way to CSS: Navigating Sass with CompassFinding a Better Way to CSS: Navigating Sass with Compass
Finding a Better Way to CSS: Navigating Sass with Compass
 
Doing more with LESS
Doing more with LESSDoing more with LESS
Doing more with LESS
 
Getting Started with Sass & Compass
Getting Started with Sass & CompassGetting Started with Sass & Compass
Getting Started with Sass & Compass
 
Ext js saas&compass
Ext js saas&compassExt js saas&compass
Ext js saas&compass
 

Kürzlich hochgeladen

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Kürzlich hochgeladen (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Sass - Making CSS fun again.

  • 1. Making CSS fun again :)
  • 2. About ○ Front end developer at Conrad Caine ○ Analysis and development of systems at SENAC
  • 3. This is my first presentation and everything can be boring... so let's drink beer!
  • 4. I will talk about ○ CSS weaknesses ○ Syntax ○ Features ○ Techniques ○ ...
  • 6. What's wrong with CSS? ○ No variables ○ Prefixes ○ Lack of abstraction ○ Hard to maintain (mainly in big css files)
  • 8. CSS Preprocessors ○ Sass ○ Less ○ Stylus They are the most popular.
  • 10. What are CSS Preprocessor? "CSS preprocessors take code written in the preprocessed language and then convert that code into the same old css we’ve been writing for years."
  • 12. About ○ Syntactically Awesome StyleSheets ○ Sass makes CSS fun again ○ Sass get installed as Ruby gem, then you need to have Ruby on your machine.
  • 14. The Process ○ Create a .scss file ○ Watch this .scss ○ Sass will create your .css ○ Be happy!
  • 15. Watching a .scss file sass --watch dev.scss:style.css
  • 16. Output style Sass allows you to choose between four different output styles using the --style command-line flag. sass --watch dev.scss:style.css --style nested sass --watch dev.scss:style.css --style expanded sass --watch dev.scss:style.css --style compact sass --watch dev.scss:style.css --style compressed
  • 18. How can we do this today?
  • 19. Variables /* dev.scss */ /* output */ $width: 100px; .side { $color: #00214D; width: 100px; $size: 16px; } .side { .bar { width: $width; width: 100px; } font-size: 16px; color: #00214D; .bar { } width: $width; font-size: $size; color: $color; }
  • 20. Math operations /* dev.scss */ /* output */ $width: 600px; .nav li { $length: 3; width: 200px; } .nav li { width: $width / $length }
  • 21. Color functions /* dev.scss */ /* output */ $color: #ce4dd6; .nav a { color: #e5a0e9; } .nav a { .nav a:hover { color: lighten($color, 20%); color: #d976e0; &:hover { } color: lighten($color, 10%); } }
  • 23. We are accustomed to do this: /* primate.css */ .nav li { list-style:none; float:left; } .nav li a { display:block; padding:5px; }
  • 24. Now we can do this: /* dev.scss */ /* output */ .nav { .nav li { li { list-style: none; float: left; list-style:none; } float:left; a { .nav li a { display:block; display: block; color:blue; color: blue; } } } }
  • 25. Parent Reference /* dev.scss */ /* output */ .nav { .nav li { li { list-style: none; float: left; list-style:none; } float:left; a { .nav li a { display:block; display: block; color:blue; color: blue; &:hover { } color:red; .nav li a:hover { } display: block; } color: red; } } }
  • 27. Mixins /* primate.css */ .nav li a { padding: 5px; border: 1px solid red; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; }
  • 28. Mixins /* dev.scss */ /* output */ @mixin borderRadius { .nav li a { -moz-border-radius: 10px; padding: 5px; border: 1px solid red; -webkit-border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: border-radius: 10px; 10px; } border-radius: 10px; } .nav li a { padding: 5px; border: 1px solid red; @include borderRadius; }
  • 29. Arguments /* dev.scss */ /* output */ @mixin title($size) { article h2 { font: { font-family: arial; font-size: 40px; family: arial; font-weight: bold; size: $size; } weight: bold; } } article h2 { @include title(40px); }
  • 31. Inheritance /* dev.scss */ /* output */ .nav { .nav, .category { background: #CCC; background: #CCC; border: 1px solid red; border: 1px solid red; } } .category { @extend .nav; }
  • 33. Interpolation /* dev.scss */ /* output */ $name: box; p.box { $attr: border; border-color: blue; } p.#{$name} { #{$attr}-color: blue; }
  • 35. @import core.css fonts.css reset.css footer.css
  • 36. @import /* dev.scss */ /* output */ @import "reset.scss"; @import "fonts.scss"; /* reset */ @import "footer.scss"; html {} /* fonts */ @font-face {} /* footer */ footer {}
  • 38. @if /* dev.scss */ /* output */ $type: 'games'; p { p { color: blue; @if $type == sports { } color: green; } @else if $type == games { color: blue; } @else { color: red; } }
  • 39. @for /* dev.scss */ /* output */ @for $i from 1 through 3 { .item-1 { .item-#{$i} { font-size: 12px; } font-size: 12px * $i; } .item-2 { } font-size: 24px; } .item-3 { font-size: 36px; }
  • 40. @each /* dev.scss */ /* output */ @each $type in a, b, c { .a-icon { .#{$type}-icon { background-image: url ("/images/a.png"); background-image: url ('/images/#{$type}.png'); } } .b-icon { } background-image: url ("/images/b.png"); } .c-icon { background-image: url ("/images/c.png"); }
  • 41. @while /* dev.scss */ /* output */ $i: 6; .item-6 { @while $i > 0 { width: 12px; } .item-#{$i} { width: 2px * $i; } .item-4 { $i: $i - 2; width: 8px; } } .item-2 { width: 4px; }
  • 42. Thank you! ○ gabrielneutzling@gmail.com ○ facebook.com/gneutzling ○ @gneutzling