SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
#RWD WITH SASS+COMPASS
                              Come On Get Sassy




Sunday, July 22, 12
WHO AM I?
                      Sam Richard             Organizer of NYC
                                              Responsive Web Design
                      Frontend Developer      Meetup

                      @Snugug on Twitter      Co-Organizer of NYC Sass
                                              Meetup
                      Snugug on D.O.
                                              Co-Organizer of SassConf
                      Very Sassy Man




Sunday, July 22, 12
WHAT IS THIS SESSION?
                      I WILL:                     I WON’T:

                        Give you an overview of     Try and convince you
                        some tools and              to start building
                        techniques for RWD          Responsively

                        Show you how to use         Teach the basics of
                        Sass+Compass in new         Sass+Compass
                        and exciting ways for
                        RWD and Progressive         Show you how to
                        Enhancement                 compile Sass with
                                                    Drupal


Sunday, July 22, 12
WHAT FEATURES DO YOU NEED FOR
                 RESPONSIVE WEB DESIGN?

                      As outlined in Ethan Marcotte’s Phrase-Coining A List Apart
                      article, Responsive Web Design needs the three following
                      things:
                           Fluid Grids
                           Media Queries
                           Flexible Media



Sunday, July 22, 12
WHAT PRINCIPLES DO YOU NEED
                      FOR RESPONSIVE WEB DESIGN?
                      Design your websites for Mobile First
                      Make Content and Navigation primary concerns over visual flair
                      and social sharing
                      Embrace Progressive Enhancement and build on standard
                      Web technologies (HTML/CSS/JS)
                      Design on a grid, ideally one specific to your design
                      Design in Browser



Sunday, July 22, 12
You can’t articulate fluidity on
                                  paper.
                                               Brad Frost




Sunday, July 22, 12
THE TOOLS OF THE TRADE
                      Sass+Compass                      Modern Web Browser (I like
                                                        Google Chrome)
                         Susy Compass Extension
                                                        LiveReload
                         Breakpoint / Respond-to
                         Compass Extensions             Adobe Shadow + Devices

                         Toolkit Compass Extension      Illustrator for creating vector
                                                        graphics
                      Modernizr

                      Text Editor (I like TextMate or
                      Sublime Text)


Sunday, July 22, 12
STUFF TO AVOID

                      Browser Plugins (like Flash and Silverlight)
                      Single browser prefixes (just -webkit, just -moz, etc…)
                      CSS Frameworks
                      The phrase “Pixel Perfect”
                      Photoshop
                      Designing around known devices
                      Device Detection



Sunday, July 22, 12
The web is an inherently unstable
                                  medium
                                             Ethan Marcotte




Sunday, July 22, 12
Brad Frost

Sunday, July 22, 12
The point of creating [responsive] sites is to create
                  functional (and hopefully optimal) user experiences for a
                   growing number of web-enabled devices and contexts.
                                                             Brad Frost




Sunday, July 22, 12
Repeat after me: Responsive Web Design isn’t
                  about current devices and known unknowns, it’s
                   about future devices and unknown unknowns.
                                                 Donald Rumsfeld




Sunday, July 22, 12
Your device detection is bad and
                            you should feel bad
                                           Dr. John A. Zoidberg




Sunday, July 22, 12
BEFORE YOU GO ANYWHERE, LET’S
                         CHEAT AT CSS
                 @import 'compass';


                 * { @include box-sizing('border-box'); }
                 // From Paul Irish's Blog Post




Sunday, July 22, 12
SUSY
                        FLUID GRIDS FULL OF WIN
                 > gem install susy --pre


                 require 'susy'


                 @import "susy";


                 $total-columns: 12;
                 $column-width: 4em;
                 $gutter-width: 1em;
                 $grid-padding: $gutter-width;




Sunday, July 22, 12
SUSY
                        FLUID GRIDS FULL OF WIN
                 #page-wrapper {
                   @include container;
                 }

                 #main {
                   @include span-columns(8);
                 }

                 #sidebar-first {
                   @include span-columns(4 omega);
                 }




Sunday, July 22, 12
SUSY
                         FLUID GRIDS FULL OF WIN
                 #page-wrapper {         #main {
                   *zoom: 1;               width: 66.102%;
                   max-width: 59em;        float: left;
                   _width: 59em;           margin-right: 1.695%;
                   margin-left: auto;      display: inline;
                   margin-right: auto;   }
                   padding-left: 1em;
                   padding-right: 1em;   #sidebar-first {
                 }                         width: 32.203%;
                                           float: right;
                 #page-wrapper:after {     margin-right: 0;
                   content: "";            #margin-left: -1em;
                   display: table;         display: inline;
                   clear: both;          }
                 }




Sunday, July 22, 12
SUSY
                        FLUID GRIDS FULL OF WIN
                 #user-name {
                   @include span-columns(3, 4);
                 }

                 #social {
                   @include span-columns(1 omega, 4);
                 }




Sunday, July 22, 12
SUSY
                        FLUID GRIDS FULL OF WIN
                 #user-name {              #social {
                   width: 73.684%;           width: 21.053%;
                   float: left;              float: right;
                   margin-right: 5.263%;     margin-right: 0;
                   display: inline;          #margin-left: -1em;
                 }                           display: inline;
                                           }




Sunday, July 22, 12
BREAKPOINT
                      MEDIA QUERIES MADE EASY
                 > gem install breakpoint


                 require 'breakpoint'


                 @import "breakpoint";


                 $breakpoint-default-media: 'all';
                 $breakpoint-default-feature: 'min-width';
                 $breakpoint-default-pair: 'width';
                 $breakpoint-to-ems: false;




Sunday, July 22, 12
Start with the small screen first,
                      then expand until it looks like shit.
                         TIME FOR A BREAKPOINT!
                                                    Stephen Hay




Sunday, July 22, 12
BREAKPOINT
                             MEDIA QUERIES MADE EASY
                 $main-nav-inline: 482px;
                 $main-nav-inline-right: 823px;

                 #main-nav {
                   clear: both;

                      li {
                        display: block;

                          @include breakpoint($main-nav-inline) {
                            display: inline-block;
                          }
                      }

                      @include breakpoint($main-nav-inline-large) {
                        @include span-columns(9 omega);
                      }
                 }


Sunday, July 22, 12
BREAKPOINT
                      MEDIA QUERIES MADE EASY
                 #main-nav {         @media (min-width: 482px) {
                   clear: both;        #main-nav li {
                 }                       display: inline-block
                                       }
                 #main-nav li {      }
                   display: block;
                 }                   @media (min-width: 823px) {
                                       #main-nav {
                                         width: 74.576%;
                                         float: right;
                                         margin-right: 0;
                                         #margin-left: -1em;
                                         display: inline;
                                       }
                                     }


Sunday, July 22, 12
BREAKPOINT
                      MEDIA QUERIES MADE EASY
                 $breakpoint-to-ems: true;   @media (min-width: 30.125em) {
                                               #main-nav li {
                                                 display: inline-block
                 #main-nav {
                                               }
                   clear: both;
                                             }
                 }

                                             @media (min-width: 51.438em) {
                 #main-nav li {
                                               #main-nav {
                   display: block;
                                                 width: 74.576%;
                 }
                                                 float: right;
                                                 margin-right: 0;
                                                 #margin-left: -1em;
                                                 display: inline;
                                               }
                                             }


Sunday, July 22, 12
RESPOND-TO
                      SEMANTIC BREAKPOINT NAMING
                 $breakpoints: 'inline main navigation' (482px),
                               'inline main navigation, floated right' (823px);

                 #main-nav {
                   clear: both;

                      li {
                        display: block;

                          @include respond-to('inline main navigation') {
                            display: inline-block;
                          }

                          @include respond-to('inline main navigation, floated right') {
                            @include span-columns(9 omega);
                          }
                      }
                 }


Sunday, July 22, 12
TOOLKIT
                  FOR MODERN WEB DEVELOPMENT
                 > gem install toolkit


                 require 'toolkit'




Sunday, July 22, 12
A NOTE ON RESPONSIVE MEDIA

                      Sass will not magically give you Responsive Media. Neither will
                      Compass, Modernizr, any CSS or JS Framework, or even Drupal.
                      For Responsive Media to be a reality, we need a new browser
                      based standard. There are currently some proposed solutions
                      for Images, and Apple is forging ahead with a non-standard
                      solution in iOS6, but until then, everything is a hack.
                      There are some tricks you can do in CSS to make media Fluid,
                      however, and Sass rocks at this.



Sunday, July 22, 12
TOOLKIT
                               FOR FLUID MEDIA
                 @import "toolkit/fluid-media";


                 // Included Automatically
                 img {
                   max-width: 100%;
                   height: auto;
                 }

                                              .bar {
                 .foo {
                                                @include scale-
                   @include scale-elements;
                                              elements($ratio: 4/3);
                 }
                                              }




Sunday, July 22, 12
TOOLKIT
                               FOR FLUID MEDIA
                 .foo, .bar {            .foo {
                   position: relative;     padding-top: 56.25%;
                   height: 0;              width: 100%;
                 }                       }

                 .foo > *, .bar > * {    .bar {
                   display: block;         padding-top: 75%;
                   position: absolute;     width: 100%;
                   width: 100%;          }
                   height: 100%;
                   top: 0;
                   margin: 0;
                   padding: 0;
                 }

Sunday, July 22, 12
TOOLKIT
                      FOR PROGRESSIVE ENHANCEMENT
                 Download a custom build of Modernizr


                 @import "toolkit/pe";


                 .foo {
                   @include enhance-with('touch') {
                     min-height: 44px;
                   }

                      @include degrade-from('touch') {
                        min-height: 20px;
                      }
                 }


Sunday, July 22, 12
TOOLKIT
                      FOR PROGRESSIVE ENHANCEMENT
                 .touch .foo {
                   min-height: 44px;
                 }
                 .no-touch .foo, .no-js .foo {
                   min-height: 20px;
                 }




Sunday, July 22, 12
TOOLKIT
                      FOR PROGRESSIVE ENHANCEMENT
                 $user-bar-icons: "assets/user-bar/*.png";
                 @include sprite-map-generator($user-bar-icons);

                 .bar {
                   @include replace-text-pe($user-bar-icons, 'user');
                 }

                 .baz {
                   @include replace-text-pe($user-bar-icons, 'necktie',
                 $inline-svg: false);
                 }




Sunday, July 22, 12
TOOLKIT
                      FOR PROGRESSIVE ENHANCEMENT
                 > create images/assets/user-bar-s01cf12a717.png          .bar {
                                                                            width: 24px;
                                                                            height: 21px;
                                                                          }
                                                                          .svg .bar {
                 .bar, .baz {                                               background-image: url('data:image/svg
                   text-indent: 110%;                                     +xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0…');
                   white-space: nowrap;                                     background-size: 24px 21px;
                   overflow: hidden;                                      }
                 }                                                        .no-svg .bar, .no-js .bar {
                                                                            background-position: 0 -18px;
                 .no-svg .bar, .no-js .bar, .no-svg .baz, .no-js .baz {   }
                   background-image: url('../images/assets/user-bar-
                 s01cf12a717.png');
                   background-repeat: no-repeat;
                                                                          .baz {
                 }
                                                                            width: 8px;
                                                                            height: 27px;
                                                                          }
                                                                          .svg .baz {
                                                                            background-image: url('../images/assets/user-bar/
                                                                          necktie.svg?1341407937');
                                                                            background-size: 8px 27px;
                                                                          }
                                                                          .no-svg .baz, .no-js .baz {
                                                                            background-position: 0 -39px;
                                                                          }




Sunday, July 22, 12
TOOLKIT
               TO KICKSTART YOUR DEVELOPMENT
                 Existing Project
                 require 'toolkit'

                 > compass install toolkit
                 - or -
                 > compass install toolkit/respond-to

                 New Project
                 > compass create <my_project> -r toolkit --using toolkit
                 - or -
                 > compass create <my_project> -r toolkit --using
                 toolkit/respond-to




Sunday, July 22, 12
TOOLKIT
               TO KICKSTART YOUR DEVELOPMENT
                      Compass                Development Modernizr
                                             Build with yepnope
                      Toolkit
                                             loader.js to hold yepnope
                      Susy                   tests

                      Either Breakpoint or   hammer.js for touch events
                      Respond-to
                                             Sass stylesheets and
                      Border Box Box Model   default, empty partials




Sunday, July 22, 12
DID I MENTION…



                      Everything you just saw? Yah, it’s all backend independent. You
                      can use it anywhere, with anything, for any project. Sass Rocks.




Sunday, July 22, 12
GO FORTH, BE RESPONSIVE, AND
                         MAY THE SASS BE WITH YOU
                      People to Follow:                   If you liked this talk, I’m Sam
                      @Snugug, @Compass, @TheSassWay,     Richard. If not, I was Mason
                      @GoTeamSass, @CodingDesigner,
                      @ScottKellum, @ItsMissCS,           Wendell.
                      @ChrisEppstein, @nex3, @beep,
                      @lukew, @brad_frost, @globalmoxie
                                                          If you have questions, come
                                                          to my BoFs tomorrow or
                      Things to Read:
                      http://snugug.com/rwd               find me. I’m happy to talk.
                      http://snugug.com/pe-pattern
                      http://snugug.com/breakpoint
                      http://snugug.com/toolkit
                                                          Please rate this session
                      http://snugug.com/rwd-mobile        (and all of the others)!
                      http://snugug.com/munich            Thank you!



Sunday, July 22, 12

Contenu connexe

En vedette

Q3 Spring Release Feature Round Up
Q3 Spring Release Feature Round UpQ3 Spring Release Feature Round Up
Q3 Spring Release Feature Round UpMarketo
 
Attract More Customers with Inbound and Outbound Marketing
Attract More Customers with Inbound and Outbound MarketingAttract More Customers with Inbound and Outbound Marketing
Attract More Customers with Inbound and Outbound MarketingMarketo
 
Marketo User Groups: Account-Based Marketing
Marketo User Groups: Account-Based MarketingMarketo User Groups: Account-Based Marketing
Marketo User Groups: Account-Based MarketingMarketo
 
Quarterly Feature Round Up Webinar
Quarterly Feature Round Up WebinarQuarterly Feature Round Up Webinar
Quarterly Feature Round Up WebinarMarketo
 
5 Marketing Strategies for Customer Engagement
5 Marketing Strategies for Customer Engagement5 Marketing Strategies for Customer Engagement
5 Marketing Strategies for Customer EngagementMarketo
 
10 Best Productivity Hacks for Customer Service
10 Best Productivity Hacks for Customer Service10 Best Productivity Hacks for Customer Service
10 Best Productivity Hacks for Customer ServiceAdam Toporek
 
So you want to quit your day job and make a connected product
So you want to quit your day job and make a connected productSo you want to quit your day job and make a connected product
So you want to quit your day job and make a connected productAlexandra Deschamps-Sonsino
 
The New Assembly Line: 3 Best Practices for Building (Secure) Connected Cars
The New Assembly Line: 3 Best Practices for Building (Secure) Connected CarsThe New Assembly Line: 3 Best Practices for Building (Secure) Connected Cars
The New Assembly Line: 3 Best Practices for Building (Secure) Connected CarsLookout
 

En vedette (8)

Q3 Spring Release Feature Round Up
Q3 Spring Release Feature Round UpQ3 Spring Release Feature Round Up
Q3 Spring Release Feature Round Up
 
Attract More Customers with Inbound and Outbound Marketing
Attract More Customers with Inbound and Outbound MarketingAttract More Customers with Inbound and Outbound Marketing
Attract More Customers with Inbound and Outbound Marketing
 
Marketo User Groups: Account-Based Marketing
Marketo User Groups: Account-Based MarketingMarketo User Groups: Account-Based Marketing
Marketo User Groups: Account-Based Marketing
 
Quarterly Feature Round Up Webinar
Quarterly Feature Round Up WebinarQuarterly Feature Round Up Webinar
Quarterly Feature Round Up Webinar
 
5 Marketing Strategies for Customer Engagement
5 Marketing Strategies for Customer Engagement5 Marketing Strategies for Customer Engagement
5 Marketing Strategies for Customer Engagement
 
10 Best Productivity Hacks for Customer Service
10 Best Productivity Hacks for Customer Service10 Best Productivity Hacks for Customer Service
10 Best Productivity Hacks for Customer Service
 
So you want to quit your day job and make a connected product
So you want to quit your day job and make a connected productSo you want to quit your day job and make a connected product
So you want to quit your day job and make a connected product
 
The New Assembly Line: 3 Best Practices for Building (Secure) Connected Cars
The New Assembly Line: 3 Best Practices for Building (Secure) Connected CarsThe New Assembly Line: 3 Best Practices for Building (Secure) Connected Cars
The New Assembly Line: 3 Best Practices for Building (Secure) Connected Cars
 

Plus de nyccamp

Drupal As A Jigsaw
Drupal As A JigsawDrupal As A Jigsaw
Drupal As A Jigsawnyccamp
 
A/B Testing and Optimizely Module
A/B Testing and Optimizely ModuleA/B Testing and Optimizely Module
A/B Testing and Optimizely Modulenyccamp
 
Behat - human-readable automated testing
Behat - human-readable automated testingBehat - human-readable automated testing
Behat - human-readable automated testingnyccamp
 
ALL YOUR BASE (THEMES) ARE BELONG TO US
ALL YOUR BASE (THEMES) ARE BELONG TO USALL YOUR BASE (THEMES) ARE BELONG TO US
ALL YOUR BASE (THEMES) ARE BELONG TO USnyccamp
 
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...nyccamp
 
Promotions Vouchers and Offers in Drupal Commerce
Promotions Vouchers and Offers in Drupal CommercePromotions Vouchers and Offers in Drupal Commerce
Promotions Vouchers and Offers in Drupal Commercenyccamp
 
Workbench: Managing Content Management
Workbench: Managing Content ManagementWorkbench: Managing Content Management
Workbench: Managing Content Managementnyccamp
 
Deployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and ConfigurationsDeployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and Configurationsnyccamp
 
Drupal Aware Design: Good Techniques for Better Themes
Drupal Aware Design: Good Techniques for Better ThemesDrupal Aware Design: Good Techniques for Better Themes
Drupal Aware Design: Good Techniques for Better Themesnyccamp
 
Drupal and Higher Education
Drupal and Higher EducationDrupal and Higher Education
Drupal and Higher Educationnyccamp
 
A New Theme Layer for Drupal 8
A New Theme Layer for Drupal 8A New Theme Layer for Drupal 8
A New Theme Layer for Drupal 8nyccamp
 
Mobile and Responsive Design with Sass
Mobile and Responsive Design with SassMobile and Responsive Design with Sass
Mobile and Responsive Design with Sassnyccamp
 
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your Site
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your SiteDrupal and Apache Solr Search Go Together Like Pizza and Beer for Your Site
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your Sitenyccamp
 
Building Social Networks
Building Social NetworksBuilding Social Networks
Building Social Networksnyccamp
 
The State of Drupal 8
The State of Drupal 8The State of Drupal 8
The State of Drupal 8nyccamp
 
Building Social Networks
Building Social NetworksBuilding Social Networks
Building Social Networksnyccamp
 
Move Into Drupal Using The Migrate Module
Move Into Drupal Using The Migrate ModuleMove Into Drupal Using The Migrate Module
Move Into Drupal Using The Migrate Modulenyccamp
 
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)nyccamp
 
Drulenium - Testing Made Easy
Drulenium - Testing Made EasyDrulenium - Testing Made Easy
Drulenium - Testing Made Easynyccamp
 
Node Access in Drupal 7 (and Drupal 8)
Node Access in Drupal 7 (and Drupal 8)Node Access in Drupal 7 (and Drupal 8)
Node Access in Drupal 7 (and Drupal 8)nyccamp
 

Plus de nyccamp (20)

Drupal As A Jigsaw
Drupal As A JigsawDrupal As A Jigsaw
Drupal As A Jigsaw
 
A/B Testing and Optimizely Module
A/B Testing and Optimizely ModuleA/B Testing and Optimizely Module
A/B Testing and Optimizely Module
 
Behat - human-readable automated testing
Behat - human-readable automated testingBehat - human-readable automated testing
Behat - human-readable automated testing
 
ALL YOUR BASE (THEMES) ARE BELONG TO US
ALL YOUR BASE (THEMES) ARE BELONG TO USALL YOUR BASE (THEMES) ARE BELONG TO US
ALL YOUR BASE (THEMES) ARE BELONG TO US
 
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...
 
Promotions Vouchers and Offers in Drupal Commerce
Promotions Vouchers and Offers in Drupal CommercePromotions Vouchers and Offers in Drupal Commerce
Promotions Vouchers and Offers in Drupal Commerce
 
Workbench: Managing Content Management
Workbench: Managing Content ManagementWorkbench: Managing Content Management
Workbench: Managing Content Management
 
Deployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and ConfigurationsDeployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and Configurations
 
Drupal Aware Design: Good Techniques for Better Themes
Drupal Aware Design: Good Techniques for Better ThemesDrupal Aware Design: Good Techniques for Better Themes
Drupal Aware Design: Good Techniques for Better Themes
 
Drupal and Higher Education
Drupal and Higher EducationDrupal and Higher Education
Drupal and Higher Education
 
A New Theme Layer for Drupal 8
A New Theme Layer for Drupal 8A New Theme Layer for Drupal 8
A New Theme Layer for Drupal 8
 
Mobile and Responsive Design with Sass
Mobile and Responsive Design with SassMobile and Responsive Design with Sass
Mobile and Responsive Design with Sass
 
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your Site
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your SiteDrupal and Apache Solr Search Go Together Like Pizza and Beer for Your Site
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your Site
 
Building Social Networks
Building Social NetworksBuilding Social Networks
Building Social Networks
 
The State of Drupal 8
The State of Drupal 8The State of Drupal 8
The State of Drupal 8
 
Building Social Networks
Building Social NetworksBuilding Social Networks
Building Social Networks
 
Move Into Drupal Using The Migrate Module
Move Into Drupal Using The Migrate ModuleMove Into Drupal Using The Migrate Module
Move Into Drupal Using The Migrate Module
 
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
 
Drulenium - Testing Made Easy
Drulenium - Testing Made EasyDrulenium - Testing Made Easy
Drulenium - Testing Made Easy
 
Node Access in Drupal 7 (and Drupal 8)
Node Access in Drupal 7 (and Drupal 8)Node Access in Drupal 7 (and Drupal 8)
Node Access in Drupal 7 (and Drupal 8)
 

Dernier

Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 

Dernier (20)

Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

Responsive Web Design (RWD) with Sass+Compass

  • 1. #RWD WITH SASS+COMPASS Come On Get Sassy Sunday, July 22, 12
  • 2. WHO AM I? Sam Richard Organizer of NYC Responsive Web Design Frontend Developer Meetup @Snugug on Twitter Co-Organizer of NYC Sass Meetup Snugug on D.O. Co-Organizer of SassConf Very Sassy Man Sunday, July 22, 12
  • 3. WHAT IS THIS SESSION? I WILL: I WON’T: Give you an overview of Try and convince you some tools and to start building techniques for RWD Responsively Show you how to use Teach the basics of Sass+Compass in new Sass+Compass and exciting ways for RWD and Progressive Show you how to Enhancement compile Sass with Drupal Sunday, July 22, 12
  • 4. WHAT FEATURES DO YOU NEED FOR RESPONSIVE WEB DESIGN? As outlined in Ethan Marcotte’s Phrase-Coining A List Apart article, Responsive Web Design needs the three following things: Fluid Grids Media Queries Flexible Media Sunday, July 22, 12
  • 5. WHAT PRINCIPLES DO YOU NEED FOR RESPONSIVE WEB DESIGN? Design your websites for Mobile First Make Content and Navigation primary concerns over visual flair and social sharing Embrace Progressive Enhancement and build on standard Web technologies (HTML/CSS/JS) Design on a grid, ideally one specific to your design Design in Browser Sunday, July 22, 12
  • 6. You can’t articulate fluidity on paper. Brad Frost Sunday, July 22, 12
  • 7. THE TOOLS OF THE TRADE Sass+Compass Modern Web Browser (I like Google Chrome) Susy Compass Extension LiveReload Breakpoint / Respond-to Compass Extensions Adobe Shadow + Devices Toolkit Compass Extension Illustrator for creating vector graphics Modernizr Text Editor (I like TextMate or Sublime Text) Sunday, July 22, 12
  • 8. STUFF TO AVOID Browser Plugins (like Flash and Silverlight) Single browser prefixes (just -webkit, just -moz, etc…) CSS Frameworks The phrase “Pixel Perfect” Photoshop Designing around known devices Device Detection Sunday, July 22, 12
  • 9. The web is an inherently unstable medium Ethan Marcotte Sunday, July 22, 12
  • 11. The point of creating [responsive] sites is to create functional (and hopefully optimal) user experiences for a growing number of web-enabled devices and contexts. Brad Frost Sunday, July 22, 12
  • 12. Repeat after me: Responsive Web Design isn’t about current devices and known unknowns, it’s about future devices and unknown unknowns. Donald Rumsfeld Sunday, July 22, 12
  • 13. Your device detection is bad and you should feel bad Dr. John A. Zoidberg Sunday, July 22, 12
  • 14. BEFORE YOU GO ANYWHERE, LET’S CHEAT AT CSS @import 'compass'; * { @include box-sizing('border-box'); } // From Paul Irish's Blog Post Sunday, July 22, 12
  • 15. SUSY FLUID GRIDS FULL OF WIN > gem install susy --pre require 'susy' @import "susy"; $total-columns: 12; $column-width: 4em; $gutter-width: 1em; $grid-padding: $gutter-width; Sunday, July 22, 12
  • 16. SUSY FLUID GRIDS FULL OF WIN #page-wrapper { @include container; } #main { @include span-columns(8); } #sidebar-first { @include span-columns(4 omega); } Sunday, July 22, 12
  • 17. SUSY FLUID GRIDS FULL OF WIN #page-wrapper { #main { *zoom: 1; width: 66.102%; max-width: 59em; float: left; _width: 59em; margin-right: 1.695%; margin-left: auto; display: inline; margin-right: auto; } padding-left: 1em; padding-right: 1em; #sidebar-first { } width: 32.203%; float: right; #page-wrapper:after { margin-right: 0; content: ""; #margin-left: -1em; display: table; display: inline; clear: both; } } Sunday, July 22, 12
  • 18. SUSY FLUID GRIDS FULL OF WIN #user-name { @include span-columns(3, 4); } #social { @include span-columns(1 omega, 4); } Sunday, July 22, 12
  • 19. SUSY FLUID GRIDS FULL OF WIN #user-name { #social { width: 73.684%; width: 21.053%; float: left; float: right; margin-right: 5.263%; margin-right: 0; display: inline; #margin-left: -1em; } display: inline; } Sunday, July 22, 12
  • 20. BREAKPOINT MEDIA QUERIES MADE EASY > gem install breakpoint require 'breakpoint' @import "breakpoint"; $breakpoint-default-media: 'all'; $breakpoint-default-feature: 'min-width'; $breakpoint-default-pair: 'width'; $breakpoint-to-ems: false; Sunday, July 22, 12
  • 21. Start with the small screen first, then expand until it looks like shit. TIME FOR A BREAKPOINT! Stephen Hay Sunday, July 22, 12
  • 22. BREAKPOINT MEDIA QUERIES MADE EASY $main-nav-inline: 482px; $main-nav-inline-right: 823px; #main-nav { clear: both; li { display: block; @include breakpoint($main-nav-inline) { display: inline-block; } } @include breakpoint($main-nav-inline-large) { @include span-columns(9 omega); } } Sunday, July 22, 12
  • 23. BREAKPOINT MEDIA QUERIES MADE EASY #main-nav { @media (min-width: 482px) { clear: both; #main-nav li { } display: inline-block } #main-nav li { } display: block; } @media (min-width: 823px) { #main-nav { width: 74.576%; float: right; margin-right: 0; #margin-left: -1em; display: inline; } } Sunday, July 22, 12
  • 24. BREAKPOINT MEDIA QUERIES MADE EASY $breakpoint-to-ems: true; @media (min-width: 30.125em) { #main-nav li { display: inline-block #main-nav { } clear: both; } } @media (min-width: 51.438em) { #main-nav li { #main-nav { display: block; width: 74.576%; } float: right; margin-right: 0; #margin-left: -1em; display: inline; } } Sunday, July 22, 12
  • 25. RESPOND-TO SEMANTIC BREAKPOINT NAMING $breakpoints: 'inline main navigation' (482px), 'inline main navigation, floated right' (823px); #main-nav { clear: both; li { display: block; @include respond-to('inline main navigation') { display: inline-block; } @include respond-to('inline main navigation, floated right') { @include span-columns(9 omega); } } } Sunday, July 22, 12
  • 26. TOOLKIT FOR MODERN WEB DEVELOPMENT > gem install toolkit require 'toolkit' Sunday, July 22, 12
  • 27. A NOTE ON RESPONSIVE MEDIA Sass will not magically give you Responsive Media. Neither will Compass, Modernizr, any CSS or JS Framework, or even Drupal. For Responsive Media to be a reality, we need a new browser based standard. There are currently some proposed solutions for Images, and Apple is forging ahead with a non-standard solution in iOS6, but until then, everything is a hack. There are some tricks you can do in CSS to make media Fluid, however, and Sass rocks at this. Sunday, July 22, 12
  • 28. TOOLKIT FOR FLUID MEDIA @import "toolkit/fluid-media"; // Included Automatically img { max-width: 100%; height: auto; } .bar { .foo { @include scale- @include scale-elements; elements($ratio: 4/3); } } Sunday, July 22, 12
  • 29. TOOLKIT FOR FLUID MEDIA .foo, .bar { .foo { position: relative; padding-top: 56.25%; height: 0; width: 100%; } } .foo > *, .bar > * { .bar { display: block; padding-top: 75%; position: absolute; width: 100%; width: 100%; } height: 100%; top: 0; margin: 0; padding: 0; } Sunday, July 22, 12
  • 30. TOOLKIT FOR PROGRESSIVE ENHANCEMENT Download a custom build of Modernizr @import "toolkit/pe"; .foo { @include enhance-with('touch') { min-height: 44px; } @include degrade-from('touch') { min-height: 20px; } } Sunday, July 22, 12
  • 31. TOOLKIT FOR PROGRESSIVE ENHANCEMENT .touch .foo { min-height: 44px; } .no-touch .foo, .no-js .foo { min-height: 20px; } Sunday, July 22, 12
  • 32. TOOLKIT FOR PROGRESSIVE ENHANCEMENT $user-bar-icons: "assets/user-bar/*.png"; @include sprite-map-generator($user-bar-icons); .bar { @include replace-text-pe($user-bar-icons, 'user'); } .baz { @include replace-text-pe($user-bar-icons, 'necktie', $inline-svg: false); } Sunday, July 22, 12
  • 33. TOOLKIT FOR PROGRESSIVE ENHANCEMENT > create images/assets/user-bar-s01cf12a717.png .bar { width: 24px; height: 21px; } .svg .bar { .bar, .baz { background-image: url('data:image/svg text-indent: 110%; +xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0…'); white-space: nowrap; background-size: 24px 21px; overflow: hidden; } } .no-svg .bar, .no-js .bar { background-position: 0 -18px; .no-svg .bar, .no-js .bar, .no-svg .baz, .no-js .baz { } background-image: url('../images/assets/user-bar- s01cf12a717.png'); background-repeat: no-repeat; .baz { } width: 8px; height: 27px; } .svg .baz { background-image: url('../images/assets/user-bar/ necktie.svg?1341407937'); background-size: 8px 27px; } .no-svg .baz, .no-js .baz { background-position: 0 -39px; } Sunday, July 22, 12
  • 34. TOOLKIT TO KICKSTART YOUR DEVELOPMENT Existing Project require 'toolkit' > compass install toolkit - or - > compass install toolkit/respond-to New Project > compass create <my_project> -r toolkit --using toolkit - or - > compass create <my_project> -r toolkit --using toolkit/respond-to Sunday, July 22, 12
  • 35. TOOLKIT TO KICKSTART YOUR DEVELOPMENT Compass Development Modernizr Build with yepnope Toolkit loader.js to hold yepnope Susy tests Either Breakpoint or hammer.js for touch events Respond-to Sass stylesheets and Border Box Box Model default, empty partials Sunday, July 22, 12
  • 36. DID I MENTION… Everything you just saw? Yah, it’s all backend independent. You can use it anywhere, with anything, for any project. Sass Rocks. Sunday, July 22, 12
  • 37. GO FORTH, BE RESPONSIVE, AND MAY THE SASS BE WITH YOU People to Follow: If you liked this talk, I’m Sam @Snugug, @Compass, @TheSassWay, Richard. If not, I was Mason @GoTeamSass, @CodingDesigner, @ScottKellum, @ItsMissCS, Wendell. @ChrisEppstein, @nex3, @beep, @lukew, @brad_frost, @globalmoxie If you have questions, come to my BoFs tomorrow or Things to Read: http://snugug.com/rwd find me. I’m happy to talk. http://snugug.com/pe-pattern http://snugug.com/breakpoint http://snugug.com/toolkit Please rate this session http://snugug.com/rwd-mobile (and all of the others)! http://snugug.com/munich Thank you! Sunday, July 22, 12