Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Responsive Web Design in Drupal

Responsive Web Design in Drupal

Tweet

More Decks by Emma Jane Hogbin Westby

Other Decks in Technology

Transcript

  1. Agenda • Whirlwind tour of responsive web design. • Crash

    course on base themes in Drupal. • Applying responsive principles to Drupal sites. • Case study #1: responsive retrofit • Case study #2: using Fusion • Awesome give-away
  2. Screen Sizes • 320px / 80px per column = 4

    columns • 480px / 80px = 6 columns • 600px / 80px = 7 columns with extra breathing room • 768px / 80px = 9 columns with extra breathing room • 960px / 80px = 12 columns
  3. Media Queries in CSS @media screen and (max-width: 320px) {

    #content, #nav, #sidebar { width: 100%; } #banner { display: none; } }
  4. Flexible Content • Images, Media • Forms img, iframe, embed,

    object, input, form { max-width: 100%; }
  5. IE8 and Lower • Polyfill: a javascript shim that replicates

    the standard API for older browsers (e.g. for media queries, border radius, etc). • respond.js • adapt.js – doesn’t serve stuff until it can be used by the browser (good for bandwidth) • modernizr
  6. Responsive Media Handling • This is not solved yet. We’re

    still working on what a “best practice” is. • Typically a JS script determines screen size and reports back to the server. • Server then gives predetermined “low bandwidth” content. • However, small screen doesn't always mean “low bandwidth.” It's just easier to make that assumption. • e.g. http://drupal.org/project/responsive_images
  7. Summary • Responsive web sites are “just” sites that squish

    down politely. • The technology is harder because of our expectations of delivering perfect content. • By using existing libraries we can provide an acceptable experience to browsers that don't support modern tech.
  8. Drupal Themes Provides “overrides” for any CSS or HTML markup

    in Drupal core or contrib modules. Occasionally add additional effects.
  9. Base Themes Drupal • Base themes are a set of

    improved theming defaults over Drupal core. • If your base theme doesn't improve Drupal, it's not the right base theme for you. • http://www.designtotheme.com/blog/base-themes
  10. My Fave Base Themes • Zen has amazing documentation. Use

    with Zen Grids for maximum efficiency. • NineSixty is my go-to theme for quickly banging out just about any theme. • Fusion is my go-to theme when I will be handing off the site to someone else to maintain who is tech savvy and may need to update the layout later on.
  11. Responsive + Drupal = ? • Creating a responsive Drupal

    site can be as simple as applying a single style sheet. • http://drupal.org/project/domicile_responsive
  12. Planning the Retrofit • Audit the content on the site.

    • Identify content break points. • Determine page element characteristics for each new width. • Bonus: allocate time for retrofit based on visitor stats.
  13. Planning the Retrofit • Identify the goal of every type

    of page. “Beauty” is not a page goal. (And if it is, you’re doing it wrong.) • Audit the content on the site. • Identify content break points. • Determine page element characteristics for each new width. • Bonus: allocate time for retrofit based on visitor browser stats.
  14. Content Audit • Find all the different kinds of things

    you display on the site. • Make a spreadsheet if you have a big site. • If relevant, note the contextual relationships of content pieces (e.g. user picture + video submission).
  15. Identify Break Points • Retrofit is (sort of) a luxury

    because you have real content. • Use content, not device sizes, to determine break points. • Stretch / expand your browser to find where the design “breaks”.
  16. Page Element Characteristics • Navigation (reflow) • Font sizes (allow

    to adapt) • Imagery (is it necessary to accomplish page goals?)
  17. Flexible Layouts • Add a new CSS file to your

    theme that will override fixed- pixel #ID and .class properties. stylesheets[all][] = responsive­default.css
  18. Media Queries • Based on your content’s break points, set

    up the media queries in your new CSS file. @media screen and (max­width: 960px) {} • Assign new properties and values for containers, fonts and navigation.
  19. Flexible Content • Reset fixed-width content to be fluid. •

    Images, Forms, Video • Maybe also data tables.
  20. Viewport Sizes • Create a new template file html.tpl.php •

    Add the relevant meta tags • Don’t forget to clear Drupal’s cache
  21. Test Your Site • Check content reflows. • Check rich

    media resizes. • Check navigation is usable. • Adjust CSS if necessary.
  22. Retrofit Summary • Define your goals for each page. •

    Ensure your page goals can be met for a variety of device sizes. • Apply relevant CSS media queries to ensure content “squishes”.
  23. Get It For Yourself The responsive Drupal theme, Alloy, is

    available from: http://drupal.org/project/alloy
  24. Fusion • Uses 960gs with 12 columns by default. •

    Uses more than just regions for layout. • Uses “skins” to alter the properties of blocks for layout. • Most configuration done through the admin interface. • Well documented.
  25. Disclaimer Fusion is my favourite GUI-based base theme. • I

    love their team of developers. • The skins are great for clients who want to extend their site. • They don’t rush to market with the latest feature. They get it right the first time.
  26. Responsive Features • Flexible layouts. • Sane media queries with

    four layouts. • Context-aware forms. Need to add responsiveness for rich media. • Supports older browsers with polyfill css3- mediaqueries.js • Focuses on “show all” approach, so there are no hidden elements eating up bandwidth.
  27. Layouts • Desktop only screen and (min-width:1200px) • Tablet (landscape)

    only screen and (max-device-width: 1024px) and (orientation:landscape), only screen and (min-width:960px) and (max- width:1199px) and (min-device-width: 1100px) • Tablet (portrait) only screen and (max-device-width: 1024px) and (orientation:portrait), only screen and (min-width:768px) and (max-width:959px) and (min-device-width: 1100px) • Mobile only screen and (max-width:759px) • These can all be easily adjusted in the UI.
  28. Regions + Blocks • Fusion relies on the 960gs for

    its regions and block configurations. • You may subdivide any region into more columns by assigning the width of a block.
  29. Alloy Responsive • Fusion compresses the wireframe for desktop ->

    tablet. • The mobile layout is linearized. • You can choose the position of the sidebars through the UI for each of the layouts. • With additional CSS you might want to collapse / linearize regions for the the tablet – portrait display.
  30. Navigation • Using superfish JS library. • No additional adjustments

    are made for mobile-friendly navigation. • You can make these adjustments based on the Domicile retrofit. • Or look at the beta superfish options for touch-friendly navigation.
  31. Get It For Yourself The responsive Drupal theme, Alloy, is

    available from: http://drupal.org/project/alloy