SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
FROM CSS
TO SASS IN
WORDPRESS
James Steinbach WP Summit 2014
@jdsteinbach #wpsummit .
1
BENEFITS OF SASS
•  Code organization (partials, nesting)
•  Faster styling (mixins, functions)
•  Scalable code (logic, variables)
2
NOT LIKE THIS:
3
MORE LIKE THIS:
4
CONVERT A STYLESHEET TO
SASS
So where do we even start?
5
THE BARE MINIMUM
•  CSS is valid Sass:
–  change style.css to style.scss
–  edit
–  compile back to style.css
6
SETTING UP PARTIALS
•  Copy each “section” of style.css to a separate
.scss file in your /sass/ folder.
•  Name the file after what it does with an
underscore prefix.
–  Example: styles relating to your navigation go to
_navigation.scss
•  Import that partial in your main style.scss file.
–  @import 'navigation';
7
REFACTOR AS NECESSARY
.header .logo {
//styles
}
.header .tagline {
//styles
}
.header .menu {
//styles
}
.header {
.logo {
//styles
}
.tagline {
//styles
}
.menu {
//styles
}
}
8
REFACTOR AS NECESSARY
.menu a {
-webkit-transition: color 0.2s;
-moz-transition: color 0.2s;
transition: color 0.2s;
}
.menu a {
@include transition(color 0.2s);
}
9
COMPILE YOUR SASS FOR
WP
Now that we broke it down, how do we
put it back together?
10
WP REQUIREMENTS
•  Theme root contains style.css with WP
comments
•  All Sass files in a subdirectory to keep theme root
clean
•  Ability to compress output for deployed code
•  Avoid long, complex command line code
11
CLI COMPILE METHODS
•  Sass CLI
–  Compile:
sass style.scss style.css
–  Watch:
sass --watch style.scss style.css
•  Compass CLI
–  Watch:
compass watch
12
GUI COMPILE METHODS
•  Codekit: incident57.com/codekit
•  Koala: koala-app.com
•  Scout: mhs.github.io/scout-app
•  Compass.app: compass.kkbox.com
13
COMPASS WATCH
•  Easiest CLI syntax:
compass watch
•  Config.rb file for options:
–  File path (keep style.css in the right place)
–  Output
expanded
compressed
14
MY COMPASS CONFIG.RB
•  Lives in /theme/sass/
–  style.css goes up a level to theme root
css_dir = '..'
–  sass files live in same /sass/ directory as config.rb
sass_dir = ''
–  development setting
output_style = :expanded
–  deployment setting
output_style = :compressed
15
WP STYLE.CSS COMMENTS
•  style.scss in /theme/sass/
•  Include '!' to preserve comments in :compressed output
/*!
Theme Name: Sassy Theme
Theme URI: http://jamessteinbach.com/
Author: James Steinbach
Author URI: http://jamessteinbach.com
Description: From CSS to Sass
*/
@import 'variables';
@import 'bourbon/bourbon';
//etc all your other imports…
16
ORGANIZE YOUR PARTIALS
Can I make all these new files easier to
maintain?
17
CASCADES STILL MATTER
•  Import your broadest styles first.
•  Import your most specific styles last.
18
USE FOLDERS
•  Group your .scss partials into folders:
–  Base (variables, mixins, reset, typography)
–  Layout (grid, header, footer)
–  Components (buttons, menus, forms, widgets)
–  Pages (home, landing page, portfolio)
–  3rd Party (plugins, vendors, etc)
19
FULL DISCLOSURE
•  My Sass folder structure is not usually this
detailed.
–  /bourbon/
–  /neat/
–  /underscores/ (blank theme styles)
–  All my partials (from _variables.scss to _home.scss)
20
TRY THESE SASS TOOLS
Are there any other tricks for making this
workflow better?
21
BOURBON
•  Advanced Measurement/Color Functions
–  golden-ratio(16px, 1);
returns 25.888px
–  strip-units(12px);
returns 12
–  tint(#330000, 50%);
returns #997f7f;
–  rem(24px);
default $em-base: 16px, returns 1.5rem
22
BOURBON
•  Prefixing Mixins
–  @include animation();
–  @include background-image();
–  @include columns();
–  @include flexbox();
–  @include transform();
–  @include font-feature-settings();
23
BOURBON NEAT
$grid-columns: 12;
$gutter: 1em;
.container {
@include outer-container();
}
.grid-item {
@include span-columns(3);
}
24
MY MIXINS: BREAKPOINTS
$breakpoints: (small: 600px, large: 920px);
@mixin breakpoint($name) {
@if not index(map-keys($breakpoints),
$name) {
@warn "Invalid breakpoint '#{$name}'.";
} @else {
@media (min-width: map-
get($breakpoints, $name)) {
@content;
}
}
}
25
MY MIXINS: FONT SIZES
$font-sizes: (sm: 14, p: 16, bq: 20,
ssh: 24, sh: 30, h: 32, hero: 48);
@each $label, $size in $font-sizes {
%#{$label} {
font-size: $size * 1px;
font-size: rem($size);
}
.page-title { @extend %h; }
26
MY MIXINS: ABS. POSITION
@mixin abs($t,$r,$b,$l) {

position: absolute;
top: $t;
right: $r;

bottom: $b;
left: $l;
}
27
MY MIXINS: FONT-SMOOTHING
@mixin font-smoothing($val) {
@if $val == 'antialiased' or $val ==
'subpixel-antialiased' {
-webkit-font-smoothing: $val;
-moz-osx-font-smoothing: $val;
} @else {

 @warn 'Invalid value.'
}
}
28
RESOURCES
Where do I get more information?
29
ADDITIONAL READING
•  “Compass Compiling and WordPress Themes,” Chris
Coyier - css-tricks.com/compass-compiling-and-
wordpress-themes/
•  “How to Use Sass with WordPress,” Andy Leverenz -
elegantthemes.com/blog/tips-tricks/how-to-use-sass-
with-wordpress-a-step-by-step-guide
•  “Get Your Sass in Line,” Micah Godbolt - godbolt.me/
blog/get-your-sass-in-line.html
•  “Architecture for a Sass Project,” Hugo Giraudel -
sitepoint.com/architecture-sass-project/
30
DOCUMENTATION
•  Sass: sass-lang.com
•  Compass: compass-style.org
•  Bourbon: bourbon.io/docs
•  Bourbon Neat: neat.bourbon.io/docs
•  SassMeister App: sassmeister.com
31
JAMES STEINBACH
Senior Front End Developer
The Idea People in Charlotte, NC
@jdsteinbach | jamessteinbach.com/blog
32

Más contenido relacionado

La actualidad más candente

La actualidad más candente (11)

Sass and compass workshop
Sass and compass workshopSass and compass workshop
Sass and compass workshop
 
Semantics, less and sarcasm
Semantics, less and sarcasmSemantics, less and sarcasm
Semantics, less and sarcasm
 
Deep dive into sass
Deep dive into sassDeep dive into sass
Deep dive into sass
 
Sass presentation
Sass presentationSass presentation
Sass presentation
 
Why less?
Why less?Why less?
Why less?
 
.Less - CSS done right
.Less - CSS done right.Less - CSS done right
.Less - CSS done right
 
Sass presentation
Sass presentationSass presentation
Sass presentation
 
Authoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & SassAuthoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & Sass
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
SASS - Syntactically Awesome Stylesheet
SASS - Syntactically Awesome StylesheetSASS - Syntactically Awesome Stylesheet
SASS - Syntactically Awesome Stylesheet
 
Cat stand up </div>
Cat stand up </div>Cat stand up </div>
Cat stand up </div>
 

Similar a From CSS to Sass in WordPress

SASS is more than LESS
SASS is more than LESSSASS is more than LESS
SASS is more than LESS
Itai Koren
 
Advanced Technology for Web Application Design
Advanced Technology for Web Application DesignAdvanced Technology for Web Application Design
Advanced Technology for Web Application Design
Bryce Kerley
 
Dallas Drupal Days 2012 - Introduction to less sass-compass
Dallas Drupal Days 2012  - Introduction to less sass-compassDallas Drupal Days 2012  - Introduction to less sass-compass
Dallas Drupal Days 2012 - Introduction to less sass-compass
Chris Lee
 

Similar a From CSS to Sass in WordPress (20)

Create SASSy web parts in SPFx
Create SASSy web parts in SPFxCreate SASSy web parts in SPFx
Create SASSy web parts in SPFx
 
[Bauer] SASSy web parts with SPFX
[Bauer] SASSy web parts with SPFX[Bauer] SASSy web parts with SPFX
[Bauer] SASSy web parts with SPFX
 
SASS is more than LESS
SASS is more than LESSSASS is more than LESS
SASS is more than LESS
 
SASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, GreensockSASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, Greensock
 
CSS Workflow. Pre & Post
CSS Workflow. Pre & PostCSS Workflow. Pre & Post
CSS Workflow. Pre & Post
 
Getting Started with Sass & Compass
Getting Started with Sass & CompassGetting Started with Sass & Compass
Getting Started with Sass & Compass
 
Syntactically awesome stylesheets (Sass)
Syntactically awesome stylesheets (Sass)Syntactically awesome stylesheets (Sass)
Syntactically awesome stylesheets (Sass)
 
LESS(CSS Pre Processor) introduction
LESS(CSS Pre Processor) introductionLESS(CSS Pre Processor) introduction
LESS(CSS Pre Processor) introduction
 
Preprocessor presentation
Preprocessor presentationPreprocessor presentation
Preprocessor presentation
 
UNIT 3.ppt
UNIT 3.pptUNIT 3.ppt
UNIT 3.ppt
 
Doing More With Less
Doing More With LessDoing More With Less
Doing More With Less
 
LESS : The dynamic stylesheet language
LESS : The dynamic stylesheet languageLESS : The dynamic stylesheet language
LESS : The dynamic stylesheet language
 
Advanced Technology for Web Application Design
Advanced Technology for Web Application DesignAdvanced Technology for Web Application Design
Advanced Technology for Web Application Design
 
CSS 開發加速指南-Sass & Compass
CSS 開發加速指南-Sass & CompassCSS 開發加速指南-Sass & Compass
CSS 開發加速指南-Sass & Compass
 
CSS Preprocessors: LESS is more or look SASS-y trying
CSS Preprocessors: LESS is more or look SASS-y tryingCSS Preprocessors: LESS is more or look SASS-y trying
CSS Preprocessors: LESS is more or look SASS-y trying
 
CSS3
CSS3CSS3
CSS3
 
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
 
CSS Extenders
CSS ExtendersCSS Extenders
CSS Extenders
 
Advanced sass
Advanced sassAdvanced sass
Advanced sass
 
Dallas Drupal Days 2012 - Introduction to less sass-compass
Dallas Drupal Days 2012  - Introduction to less sass-compassDallas Drupal Days 2012  - Introduction to less sass-compass
Dallas Drupal Days 2012 - Introduction to less sass-compass
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

From CSS to Sass in WordPress

  • 1. FROM CSS TO SASS IN WORDPRESS James Steinbach WP Summit 2014 @jdsteinbach #wpsummit . 1
  • 2. BENEFITS OF SASS •  Code organization (partials, nesting) •  Faster styling (mixins, functions) •  Scalable code (logic, variables) 2
  • 5. CONVERT A STYLESHEET TO SASS So where do we even start? 5
  • 6. THE BARE MINIMUM •  CSS is valid Sass: –  change style.css to style.scss –  edit –  compile back to style.css 6
  • 7. SETTING UP PARTIALS •  Copy each “section” of style.css to a separate .scss file in your /sass/ folder. •  Name the file after what it does with an underscore prefix. –  Example: styles relating to your navigation go to _navigation.scss •  Import that partial in your main style.scss file. –  @import 'navigation'; 7
  • 8. REFACTOR AS NECESSARY .header .logo { //styles } .header .tagline { //styles } .header .menu { //styles } .header { .logo { //styles } .tagline { //styles } .menu { //styles } } 8
  • 9. REFACTOR AS NECESSARY .menu a { -webkit-transition: color 0.2s; -moz-transition: color 0.2s; transition: color 0.2s; } .menu a { @include transition(color 0.2s); } 9
  • 10. COMPILE YOUR SASS FOR WP Now that we broke it down, how do we put it back together? 10
  • 11. WP REQUIREMENTS •  Theme root contains style.css with WP comments •  All Sass files in a subdirectory to keep theme root clean •  Ability to compress output for deployed code •  Avoid long, complex command line code 11
  • 12. CLI COMPILE METHODS •  Sass CLI –  Compile: sass style.scss style.css –  Watch: sass --watch style.scss style.css •  Compass CLI –  Watch: compass watch 12
  • 13. GUI COMPILE METHODS •  Codekit: incident57.com/codekit •  Koala: koala-app.com •  Scout: mhs.github.io/scout-app •  Compass.app: compass.kkbox.com 13
  • 14. COMPASS WATCH •  Easiest CLI syntax: compass watch •  Config.rb file for options: –  File path (keep style.css in the right place) –  Output expanded compressed 14
  • 15. MY COMPASS CONFIG.RB •  Lives in /theme/sass/ –  style.css goes up a level to theme root css_dir = '..' –  sass files live in same /sass/ directory as config.rb sass_dir = '' –  development setting output_style = :expanded –  deployment setting output_style = :compressed 15
  • 16. WP STYLE.CSS COMMENTS •  style.scss in /theme/sass/ •  Include '!' to preserve comments in :compressed output /*! Theme Name: Sassy Theme Theme URI: http://jamessteinbach.com/ Author: James Steinbach Author URI: http://jamessteinbach.com Description: From CSS to Sass */ @import 'variables'; @import 'bourbon/bourbon'; //etc all your other imports… 16
  • 17. ORGANIZE YOUR PARTIALS Can I make all these new files easier to maintain? 17
  • 18. CASCADES STILL MATTER •  Import your broadest styles first. •  Import your most specific styles last. 18
  • 19. USE FOLDERS •  Group your .scss partials into folders: –  Base (variables, mixins, reset, typography) –  Layout (grid, header, footer) –  Components (buttons, menus, forms, widgets) –  Pages (home, landing page, portfolio) –  3rd Party (plugins, vendors, etc) 19
  • 20. FULL DISCLOSURE •  My Sass folder structure is not usually this detailed. –  /bourbon/ –  /neat/ –  /underscores/ (blank theme styles) –  All my partials (from _variables.scss to _home.scss) 20
  • 21. TRY THESE SASS TOOLS Are there any other tricks for making this workflow better? 21
  • 22. BOURBON •  Advanced Measurement/Color Functions –  golden-ratio(16px, 1); returns 25.888px –  strip-units(12px); returns 12 –  tint(#330000, 50%); returns #997f7f; –  rem(24px); default $em-base: 16px, returns 1.5rem 22
  • 23. BOURBON •  Prefixing Mixins –  @include animation(); –  @include background-image(); –  @include columns(); –  @include flexbox(); –  @include transform(); –  @include font-feature-settings(); 23
  • 24. BOURBON NEAT $grid-columns: 12; $gutter: 1em; .container { @include outer-container(); } .grid-item { @include span-columns(3); } 24
  • 25. MY MIXINS: BREAKPOINTS $breakpoints: (small: 600px, large: 920px); @mixin breakpoint($name) { @if not index(map-keys($breakpoints), $name) { @warn "Invalid breakpoint '#{$name}'."; } @else { @media (min-width: map- get($breakpoints, $name)) { @content; } } } 25
  • 26. MY MIXINS: FONT SIZES $font-sizes: (sm: 14, p: 16, bq: 20, ssh: 24, sh: 30, h: 32, hero: 48); @each $label, $size in $font-sizes { %#{$label} { font-size: $size * 1px; font-size: rem($size); } .page-title { @extend %h; } 26
  • 27. MY MIXINS: ABS. POSITION @mixin abs($t,$r,$b,$l) { position: absolute; top: $t; right: $r; bottom: $b; left: $l; } 27
  • 28. MY MIXINS: FONT-SMOOTHING @mixin font-smoothing($val) { @if $val == 'antialiased' or $val == 'subpixel-antialiased' { -webkit-font-smoothing: $val; -moz-osx-font-smoothing: $val; } @else { @warn 'Invalid value.' } } 28
  • 29. RESOURCES Where do I get more information? 29
  • 30. ADDITIONAL READING •  “Compass Compiling and WordPress Themes,” Chris Coyier - css-tricks.com/compass-compiling-and- wordpress-themes/ •  “How to Use Sass with WordPress,” Andy Leverenz - elegantthemes.com/blog/tips-tricks/how-to-use-sass- with-wordpress-a-step-by-step-guide •  “Get Your Sass in Line,” Micah Godbolt - godbolt.me/ blog/get-your-sass-in-line.html •  “Architecture for a Sass Project,” Hugo Giraudel - sitepoint.com/architecture-sass-project/ 30
  • 31. DOCUMENTATION •  Sass: sass-lang.com •  Compass: compass-style.org •  Bourbon: bourbon.io/docs •  Bourbon Neat: neat.bourbon.io/docs •  SassMeister App: sassmeister.com 31
  • 32. JAMES STEINBACH Senior Front End Developer The Idea People in Charlotte, NC @jdsteinbach | jamessteinbach.com/blog 32