SlideShare uma empresa Scribd logo
1 de 99
Baixar para ler offline
Accelerated grid
 theming using NineSixty


                                 +

Todd Nienkerk
DrupalCamp LA | August 6, 2011
Personal introduction
Todd Nienkerk
                         Co-founder, designer, and developer
                         Four Kitchens

                         todd@fourkitchens.com

                         Twitter: @toddross




Photo: Kristin Hillery
What is a grid system?
History of the grid
 ‣   The practice of using a grid to guide design and
     page layout is nearly a century old
 ‣   In the 1910s and 1920s, ornamental design gave
     way to Rationalism and New Objectivity




Source: Grids are Good by Khoi Vinh and Mark Boulton
Photo: kmaraj on Flickr (Creative Commons BY-NC-ND)
Photo: dalydose on Flickr (Creative Commons BY-NC-SA)
‣   This shift in design was part of a much larger
     movement towards function over form




Source: Grids are Good by Khoi Vinh and Mark Boulton
Photo: s.alt on Flickr (Creative Commons BY-NC-ND)
Photo: J. Kleyn on Flickr (Creative Commons BY-ND)
Typographic grids
 ‣   After World War II, many graphic designers
     questioned the relevance of the conventional page
     layout of the time
 ‣   They devised a flexible system to help designers
     achieve coherency in organizing the page




Source: Grid (page layout) on Wikipedia
Source: Grid (page layout) on Wikipedia
Unigrid system by Massimo Vignelli; image source: AisleOne
Unigrid system by Massimo Vignelli; image source: Alki1 on Flickr (Creative Commons BY-NC-ND)
Unigrid system by Massimo Vignelli; image source: Alki1 on Flickr (Creative Commons BY-NC-ND)
Nearly a century ago
 ‣   Modernists looked to build a new aesthetic by...
     ‣   deriving beauty from the innate qualities of the
         machine
     ‣   championing standardization
 ‣   Sound familiar?




Source: Grids are Good by Khoi Vinh and Mark Boulton
Today
 ‣   Web designers have turned to grid-based design
     in order to...
     ‣   derive beauty from the innate qualities of the
         browser
     ‣   champion standardization
 ‣   18 years after the invention of the web, we are
     finally embracing a century-old design philosophy

Source: Grids are Good by Khoi Vinh and Mark Boulton
Grid systems on the web
    ‣   On the web, grid systems usually take the form of
        CSS frameworks
    ‣   A framework is a “reuseable abstraction of code
        wrapped in a well-defined API”1
    ‣   A collection of tools and shortcuts designed to
        minimize code and make your life easier



1   Source: Software framework on Wikipedia
Examples of frameworks
‣   Ruby on Rails is a well-known Ruby framework
‣   jQuery is a JavaScript framework
‣   Drupal itself can be considered a web application
    framework
    ‣   Includes many APIs for working with databases,
        fields, and web forms
CSS frameworks
‣   Apply the principles of software frameworks to
    web design
‣   They provide standardized rules and shortcuts for:
    ‣   browser resets
    ‣   typography
    ‣   navigation
    ‣   print style
    ‣   and...
Layout
‣   When applied to web design, grid systems are CSS
    frameworks that provides standardized rules and
    shortcuts for building a website’s layout
Why use a grid system?
1) Saves time

2) Saves money

3) Reduces frustration
Stop reinventing the
wheel
‣   Reduces the amount of CSS and markup you need
    to duplicate each time you start a project
‣   No need to refer to old projects to figure out how
    to implement layouts
Stop fixing and start
designing
‣   Shortens testing phases by providing built-in
    support for noncompliant browsers
    ‣   Minimize Internet Explorer hacks in your layout
‣   A well-tested grid system will rarely be the source
    of your problems
Stop deconstructing CSS
‣   Understanding someone else’s design is much
    easier when a standard grid system is used
“Embrace constraints”
                                    — Mark Kraemer, Credera management consulting


 ‣   All modern displays
     support at least
     1024×768 resolution
 ‣   Despite the many
     advances in web
     technology, it’s all
     just rectangles



Photo: Aaron Schmidt on Flickr (Creative Commons BY-NC-SA)
Enforcing a grid can
    accelerate design while
    maintaining order
Photo: jontidmarsh on Flickr (Creative Commons BY-SA)
“Our craft is becoming a commodity, and the
   people in charge don’t care about the quality of
   the markup, CSS, or how short our JavaScript is.
   What matters is how fast you can get it to
   market, how many people it reaches, and how
   cheaply it can be built.”

                       —Christian Heilmann, (then) standards evangelist at Yahoo




Think Vitamin | Web development is moving on — Are you?
How do grid systems
work?
Columns
 ‣   Grid systems are built
     using columns
     ‣   Columns are a grid
         system’s smallest unit
         of measurement
 ‣   Most grid systems
     contain 12–16 columns


Example based on 960.gs (12-column)
Column width
 ‣   Page regions (header,
     content, sidebars, etc.)
     are defined by column
     width
 ‣   As in: “The header is
     eight columns wide”




Example based on 960.gs (12-column)
Gutters (margins)
 ‣   Margins or padding are
     used to create gutters
     between columns
 ‣   These gutters provide
     margins between page
     regions




Example based on 960.gs (12-column)
Lean and versatile CSS
‣   A grid system’s CSS should:
    ‣   Be lean and e cient
    ‣   Be versatile and reusable
    ‣   Ensure consistent behavior across all common
        browsers — even IE6
Wrapping <div> elements
‣   In fixed-width grid systems, the entire layout is
    wrapped inside a single <div> element
‣   <div> elements wrap the page regions and define
    their widths according to the number of columns
    they span
    ‣   These <div> elements may be nested to create
        regions within regions
Floating <div> elements
 ‣   The wrapping <div>                         class: grid-12
     elements are assigned
     a column width using a            class:         class:
     CSS class                         grid-4         grid-4
                                                                  class:
                                                                 grid-4
 ‣   Because these classes                class: grid-8
     also float the elements,
     they simply fall into
                                      class: grid-6       class: grid-6
     place on the page


Example based on 960.gs (12-column)
What can grid systems
look like?
Examples of grid-based layouts
Layout A: Content left, sidebar right




Example based on 960.gs (12-column)
Layout B: Content between sidebars




Example based on 960.gs (12-column)
Layout C: Content right with two left sidebars




Example based on 960.gs (12-column)
Layout D: Whatever




Example based on 960.gs (12-column)
Layout E: The Mondriaan




Painting by Piet Mondriaan (later Mondrian)
How 960.gs works
What is 960.gs?
 ‣   960.gs — also known as the 960 Grid System —
     was created by Nathan Smith in order to
     “streamline web development workflow”
 ‣   It’s both a prototyping and development
     framework




Source: 960.gs
What’s in it
 ‣   Download it for free at 960.gs
 ‣   GPL and MIT licensed
 ‣   The 960.gs download includes:
     ‣   Printable sketch sheets for doodling
     ‣   Design templates for all most applications:
         Photoshop, Illustrator, Inkscape, OmniGra e, etc.


Source: 960.gs
Technical specs
 ‣   960px wide with a 940px usable area
 ‣   Two versions: 12- and 16-column
     ‣   These can be implemented separately or
         simultaneously
 ‣   Each column has a 10px margin on the left and
     right, which creates a 20px gutter between
     columns


Source: 960.gs
12-column version
     Columns are 60px wide              Gutters are 20px wide




      10px margin on the left and     Available
      right prevents collision with   working area
      browser chrome                  is 940px wide


Source: 960.gs
16-column version
     Columns are 40px wide




                      Everything else remains the same



Source: 960.gs
Using both versions
simultaneously
‣   12- and 16-column layouts can be used on the
    same page

                                      Halves




                                     Quarters
‣   This flexibility allows designers to work with both
    60px- and 40px-wide columns




‣   If 12 or 16 columns don’t suit you, 960 is also
    divisible by 2, 3, 4, 5, 6, 8, 10, 15, 20, 24, 30, 32, 40,
    48, 60, 64, 80, 96, 120, 160, 192, 240, 320 and 480
CSS and markup
Note: 960.gs uses underscores in its CSS class names. To avoid confusion, the
examples that follow will use hyphens instead, as this is The Drupal Way.
Containers
‣   Grids must be wrapped
    in a container <div>
                            .container-12,
‣   Containers center the   .container-16 {
                              margin-left: auto;
    content and define         margin-right: auto;
    which version of the      width: 960px;
    grid will be            }

    implemented
Grids
‣   Grids are held inside      .grid-1,
    containers and are         .grid-2,
                               .grid-3,
    floated left so they fall     ...
    into place                 .grid-16 {
    automatically                 display: inline;
                                  float: left;
                                  margin-left: 10px;
‣   They also provide 10px
                                  margin-right: 10px;
    margins on the left and    }
    right
Grid widths
‣   The width of each grid
    is determined by the      .container-12 .grid-1 {
    container that wraps it     width: 60px;
                              }
‣   For example, a one-
                              .container-16 .grid-1 {
    column grid is either       width: 40px;
    60px or 40px              }
    depending on whether
    it’s a 12- or 16-column
    layout
‣   Note that grid width does not increase by 60px or
    40px each time
‣   Each increase must account for the 20px gutter
    between grids

       .container-12 .grid-1 {   .container-16 .grid-1 {
         width: 60px;              width: 40px;
       }                         }

       .container-12 .grid-2 {   .container-16 .grid-2 {
         width: 140px;             width: 100px;
       }                         }

       .container-12 .grid-3 {   .container-16 .grid-3 {
         width: 300px;             width: 160px;
       }                         }
Putting containers and
grids together
.container-12



 .grid-3        .grid-6   .grid-3
Prefixes and su xes
‣   If you want to leave
    space between              .container-12 .prefix-1 {
    columns, use a prefix         padding-left: 80px;
    or su x class              }

                               .container-12 .suffix-1 {
‣   Prefix classes add            padding-right: 80px;
    padding to the left of a   }
    column
‣   Su x classes add
    padding to the right
Adding a prefix and su x

.container-12

                 .grid-4
 .grid-3        .prefix-1   .grid-3
                .suffix-1
Multiple rows
.container-12

                .grid-12



                 .grid-4
 .grid-3        .prefix-1   .grid-3
                .suffix-1
Multiple rows: markup
                      <div class="container-12">
The container <div>
 defines the layout      <!-- row 1 -->
                        <div class="grid-12">
     version in use
                          This grid occupies the full width
                        </div>

                        <!-- row 2 -->
                        <div class="grid-3">
                          One wide
    No need to put
                        </div>
each row in its own     <div class="grid-4 prefix-1 suffix-1">
    wrapping <div>        Four wide with a prefix and suffix of one each
                        </div>
                        <div class="grid-3">
                          One wide
                        </div>

                      </div> <!-- /container -->
Stack content vertically
with nested grids
                          .grid-6
.container-12

                .grid-6
 .grid-3                  .grid-3
                .grid-6
‣   Here’s the catch: Because each grid includes a
    10px left and right margin, nesting grids can break
    your layout
                                             .grid-6
    .container-12

                            .grid-6
      .grid-3
                            .grid-6


      .grid-3
Alpha and omega fix
broken nesting
‣   When nesting grids, use the alpha and omega
    classes to remove the margins
    ‣   alpha removes the left margin. It’s the first nested
        grid.
    ‣   omega removes the right margin. It’s the last
        nested grid.
.grid-6
.container-12

               .grid-3      .grid-3
               .alpha       .omega
 .grid-3                                    .grid-3
                       .grid-6
                    .alpha .omega


       .alpha removed          .omega removed
       the left margin        the right margin
The NineSixty theme
drupal.org/project/ninesixty
About NineSixty
 ‣   NineSixty is the Drupal port of 960.gs
 ‣   Developed by Joon Park, aka dvessel on
     Drupal.org
 ‣   Intended to be used as a base theme




Source: Drupal.org
Screenshot from ninesixty.fkdemos.com
NineSixty’s improvements
‣   Content-first layout using “push” and “pull” classes
    ‣   Now part of 960.gs proper
‣   Dynamic grid widths based on context using ns()
‣   Debugging tools and grid visualization
‣   Right-to-left (RTL) language support
Content-first layout
‣   A design convention in which the content is output
    as close to the top of the markup as possible
    ‣   Content should be output before all sidebars
‣   This can be very di cult to achieve on a site with
    one or more left columns
Push and pull classes
‣   Content-first layout can be achieved in NineSixty
    by “pushing” the content grid to the right while
    “pulling” a sidebar to the left
‣   These classes use the same naming convention
    as .grid-X, .prefix-X, and .suffix-X, where X is the
    grid’s width:
    ‣   .push-X and .pull-X
‣   Push and pull values should match the grid value
     of the opposite grid

      <div class="container-12">
        <div id="content" class="grid-6 push-3">
                                                    Match numbers to
          Content
                                                    swap locations
        </div>

         <div id="sidebar-left"   class="grid-3 pull-6">
           Sidebar: Left
         </div>

        <div id="sidebar-right" class="grid-3">
          Sidebar: Right
        </div>
      </div>




Source: NineSixty’s README.txt
Before adding push and pull
.container-12


           #content               #sidebar-left      #sidebar-right
           .grid-6                   .grid-3            .grid-3




         <div class="container-12">
           <div id="content" class="grid-6">
             Content
           </div>
           <div id="sidebar-left" class="grid-3">
             Sidebar: Left
           </div>
           <div id="sidebar-right" class="grid-3">
             Sidebar: Right
           </div>
         </div>
.container-12


           #content   #sidebar-left   #sidebar-right
           .grid-6       .grid-3         .grid-3
.container-12

#sidebar-left   #content
                           #sidebar-right
   .grid-3      .grid-6
                              .grid-3
   .pull-6      .push-3
After adding push and pull
.container-12

 #sidebar-left              #content
                                                  #sidebar-right
    .grid-3                 .grid-6
                                                     .grid-3
    .pull-6                 .push-3



         <div class="container-12">
           <div id="content" class="grid-6 push-3">
             Content
           </div>
           <div id="sidebar-left" class="grid-3 pull-6">
             Sidebar: Left
           </div>
           <div id="sidebar-right" class="grid-3">
             Sidebar: Right
           </div>
         </div>
NineSixty in action
‣   Visit ninesixty.fkdemos.com to see how NineSixty...
    ‣   uses push and pull classes to generate content-
        first layout
    ‣   dynamically assigns grid widths based on
        context
    ‣   can be used to create di erent layouts
Implementing a grid-
based layout
Using NineSixty to build your site
When not to use a grid
‣   Implementing a grid will probably be impossible if
    your site’s layout...
    ‣   uses irregular column sizes
    ‣   has irregular margins or gutters
    ‣   has a width that isn’t divisible by a sane number
‣   Implementing a grid will be di cult — but not
    impossible — if your site’s layout...
    ‣   has gutter widths of odd numbers
    ‣   is fluid
    ‣   wasn’t designed on a grid
Getting started
‣   Do not change the NineSixty theme on your site!
    ‣   Hacking NineSixty is like hacking core: It will
        make upgrading your site very di cult
‣   Instead, subtheme NineSixty or create a totally
    new theme based on NineSixty
Subtheme
‣   This method is best if your site is (or can be)
    960px wide and can utilize 12 or 16 columns
‣   Subtheming instructions and resources on
    Drupal.org: drupal.org/node/225125
Build a new theme
‣   You should build a new theme when your site’s
    layout...
    ‣   isn’t 960px wide
    ‣   doesn’t use 12 or 16 columns
‣   It’s more e cient to use a new theme than to
    override virtually all of NineSixty’s CSS
Do the math
 ‣   Be prepared to crunch numbers
 ‣   Building a new grid can be very confusing
     ‣   Spreadsheets can help you visualize columns,
         margins, and gutters




Image source: Client project
Examples

960.gs as a prototyping
and development system
Refresh Boston: 16 columns




refreshboston.org
Refresh Boston: 16 columns




refreshboston.org
Tapbots: 12 columns




tapbots.com
Tapbots: 12 columns




tapbots.com
Twitter Media blog: 12 columns




media.twitter.com
Twitter Media blog: 12 columns




media.twitter.com
AAFES comp: 12 columns




Credits
AAFES comp: 12 columns




Credits
stopdesign.com 12 columns




stopdesign.com
stopdesign.com 12 columns




stopdesign.com
Drupal.org redesign: 12 columns




infrastructure.drupal.org/drupal.org-style-guide/prototype.html
Drupal.org redesign: 12 columns




infrastructure.drupal.org/drupal.org-style-guide/prototype.html
Questions?
Credits
‣   “History of the grid” slides were   ‣   This presentation was created and
    borrowed heavily from Khoi Vinh         delivered Todd Nienkerk, co-
    and Mark Boulton’s presentation         founder of Four Kitchens, with lots
    Grids are Good and from                 of guidance from Nathan Smith,
    Wikipedia                               creator of the 960 Grid System

‣   Piet Mondriaan painting was found
    somewhere online. Copyright
    holder is unknown

‣   The items listed above are exempt
    from this presentation’s Creative
    Commons license
All content in this presentation, except where noted otherwise, is Creative Commons Attribution-
ShareAlike 3.0 licensed and copyright 2010 Four Kitchen Studios, LLC.

Mais conteúdo relacionado

Semelhante a Accelerated grid theming using NineSixty (DrupalCamp LA 2011)

Accelerated grid theming using NineSixty (DrupalCamp Dallas)
Accelerated grid theming using NineSixty (DrupalCamp Dallas)Accelerated grid theming using NineSixty (DrupalCamp Dallas)
Accelerated grid theming using NineSixty (DrupalCamp Dallas)Four Kitchens
 
Accelerated Grid Theming
Accelerated Grid ThemingAccelerated Grid Theming
Accelerated Grid ThemingNathan Smith
 
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)Four Kitchens
 
What is grid system
What is grid systemWhat is grid system
What is grid systemchetankane
 
MW2011 Grid-based Web Design presentation
MW2011 Grid-based Web Design presentationMW2011 Grid-based Web Design presentation
MW2011 Grid-based Web Design presentationCharlie Moad
 
Grid system- cbil360.com
Grid system- cbil360.comGrid system- cbil360.com
Grid system- cbil360.comPhillip Turner
 
CSS3 for web designer - How to design a visually appealing website
CSS3 for web designer - How to design a visually appealing websiteCSS3 for web designer - How to design a visually appealing website
CSS3 for web designer - How to design a visually appealing websiteMario Hernandez
 
Drupal 960 grid system based theming
Drupal 960 grid system based theming Drupal 960 grid system based theming
Drupal 960 grid system based theming Gaurav Mishra
 
New layout models on the Web (Mobile World Congress 2014)
New layout models on the Web (Mobile World Congress 2014)New layout models on the Web (Mobile World Congress 2014)
New layout models on the Web (Mobile World Congress 2014)Igalia
 
Web I - 07 - CSS Frameworks
Web I - 07 - CSS FrameworksWeb I - 07 - CSS Frameworks
Web I - 07 - CSS FrameworksRandy Connolly
 
MySQL Schema Design in Practice
MySQL Schema Design in PracticeMySQL Schema Design in Practice
MySQL Schema Design in PracticeJaime Crespo
 
CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017
CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017
CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017Morten Rand-Hendriksen
 
CSS Frameworks: Faster Layout, Consistent Results
CSS Frameworks: Faster Layout, Consistent ResultsCSS Frameworks: Faster Layout, Consistent Results
CSS Frameworks: Faster Layout, Consistent ResultsSteve Hong
 
CSS Framework + Progressive Enhacements
CSS Framework + Progressive EnhacementsCSS Framework + Progressive Enhacements
CSS Framework + Progressive EnhacementsMario Hernandez
 
The Future of CSS Layout
The Future of CSS LayoutThe Future of CSS Layout
The Future of CSS LayoutZoe Gillenwater
 
Responsive web design
Responsive web designResponsive web design
Responsive web designpsophy
 

Semelhante a Accelerated grid theming using NineSixty (DrupalCamp LA 2011) (20)

Accelerated grid theming using NineSixty (DrupalCamp Dallas)
Accelerated grid theming using NineSixty (DrupalCamp Dallas)Accelerated grid theming using NineSixty (DrupalCamp Dallas)
Accelerated grid theming using NineSixty (DrupalCamp Dallas)
 
Accelerated Grid Theming
Accelerated Grid ThemingAccelerated Grid Theming
Accelerated Grid Theming
 
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
 
What is grid system
What is grid systemWhat is grid system
What is grid system
 
MW2011 Grid-based Web Design presentation
MW2011 Grid-based Web Design presentationMW2011 Grid-based Web Design presentation
MW2011 Grid-based Web Design presentation
 
Grid system- cbil360.com
Grid system- cbil360.comGrid system- cbil360.com
Grid system- cbil360.com
 
CSS3 for web designer - How to design a visually appealing website
CSS3 for web designer - How to design a visually appealing websiteCSS3 for web designer - How to design a visually appealing website
CSS3 for web designer - How to design a visually appealing website
 
Drupal 960 grid system based theming
Drupal 960 grid system based theming Drupal 960 grid system based theming
Drupal 960 grid system based theming
 
New layout models on the Web (Mobile World Congress 2014)
New layout models on the Web (Mobile World Congress 2014)New layout models on the Web (Mobile World Congress 2014)
New layout models on the Web (Mobile World Congress 2014)
 
Web I - 07 - CSS Frameworks
Web I - 07 - CSS FrameworksWeb I - 07 - CSS Frameworks
Web I - 07 - CSS Frameworks
 
MySQL Schema Design in Practice
MySQL Schema Design in PracticeMySQL Schema Design in Practice
MySQL Schema Design in Practice
 
CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017
CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017
CSS Grid Changes Everything - Keynote at WebCamp Zagreb 2017
 
RWD
RWDRWD
RWD
 
CSS Frameworks: Faster Layout, Consistent Results
CSS Frameworks: Faster Layout, Consistent ResultsCSS Frameworks: Faster Layout, Consistent Results
CSS Frameworks: Faster Layout, Consistent Results
 
CSS Framework + Progressive Enhacements
CSS Framework + Progressive EnhacementsCSS Framework + Progressive Enhacements
CSS Framework + Progressive Enhacements
 
CSS3 Layout
CSS3 LayoutCSS3 Layout
CSS3 Layout
 
Real-world CSS3
Real-world CSS3Real-world CSS3
Real-world CSS3
 
The Future of CSS Layout
The Future of CSS LayoutThe Future of CSS Layout
The Future of CSS Layout
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Grids in Web Design
Grids in Web DesignGrids in Web Design
Grids in Web Design
 

Mais de Four Kitchens

Four Kitchens Presents: Future of the CMS
Four Kitchens Presents: Future of the CMSFour Kitchens Presents: Future of the CMS
Four Kitchens Presents: Future of the CMSFour Kitchens
 
Four Kitchens: We make BIG websites
Four Kitchens: We make BIG websitesFour Kitchens: We make BIG websites
Four Kitchens: We make BIG websitesFour Kitchens
 
No RFPs! Why requests for proposal are bad for business (and how we can stop ...
No RFPs! Why requests for proposal are bad for business (and how we can stop ...No RFPs! Why requests for proposal are bad for business (and how we can stop ...
No RFPs! Why requests for proposal are bad for business (and how we can stop ...Four Kitchens
 
Big Websites for Small Screens: ICANN.org Case Study
Big Websites for Small Screens: ICANN.org Case StudyBig Websites for Small Screens: ICANN.org Case Study
Big Websites for Small Screens: ICANN.org Case StudyFour Kitchens
 
UX design for every screen
UX design for every screenUX design for every screen
UX design for every screenFour Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)
Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)
Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)Four Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)Four Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)Four Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)
Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)
Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)Four Kitchens
 
Building Responsive Websites and Apps with Drupal
Building Responsive Websites and Apps with DrupalBuilding Responsive Websites and Apps with Drupal
Building Responsive Websites and Apps with DrupalFour Kitchens
 
Designing future proof websites
Designing future proof websitesDesigning future proof websites
Designing future proof websitesFour Kitchens
 
Making drupal beautiful with web fonts
Making drupal beautiful with web fontsMaking drupal beautiful with web fonts
Making drupal beautiful with web fontsFour Kitchens
 
The type revolutionary's cookbook
The type revolutionary's cookbookThe type revolutionary's cookbook
The type revolutionary's cookbookFour Kitchens
 
The Web Chef Cookbook
The Web Chef CookbookThe Web Chef Cookbook
The Web Chef CookbookFour Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)Four Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)Four Kitchens
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)Four Kitchens
 

Mais de Four Kitchens (20)

Four Kitchens Presents: Future of the CMS
Four Kitchens Presents: Future of the CMSFour Kitchens Presents: Future of the CMS
Four Kitchens Presents: Future of the CMS
 
Four Kitchens: We make BIG websites
Four Kitchens: We make BIG websitesFour Kitchens: We make BIG websites
Four Kitchens: We make BIG websites
 
No RFPs! Why requests for proposal are bad for business (and how we can stop ...
No RFPs! Why requests for proposal are bad for business (and how we can stop ...No RFPs! Why requests for proposal are bad for business (and how we can stop ...
No RFPs! Why requests for proposal are bad for business (and how we can stop ...
 
Big Websites for Small Screens: ICANN.org Case Study
Big Websites for Small Screens: ICANN.org Case StudyBig Websites for Small Screens: ICANN.org Case Study
Big Websites for Small Screens: ICANN.org Case Study
 
UX design for every screen
UX design for every screenUX design for every screen
UX design for every screen
 
Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)
Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)
Don't Design Websites. Design Web SYSTEMS! (BADCamp 2011)
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon London 2011)
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp LA 2011)
 
Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)
Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)
Don't Design Websites. Design Web SYSTEMS! (Dallas Drupal Days 2011)
 
Building Responsive Websites and Apps with Drupal
Building Responsive Websites and Apps with DrupalBuilding Responsive Websites and Apps with Drupal
Building Responsive Websites and Apps with Drupal
 
Intro to Drush
Intro to DrushIntro to Drush
Intro to Drush
 
Teaching Drupal
Teaching DrupalTeaching Drupal
Teaching Drupal
 
Big Websites
Big WebsitesBig Websites
Big Websites
 
Designing future proof websites
Designing future proof websitesDesigning future proof websites
Designing future proof websites
 
Making drupal beautiful with web fonts
Making drupal beautiful with web fontsMaking drupal beautiful with web fonts
Making drupal beautiful with web fonts
 
The type revolutionary's cookbook
The type revolutionary's cookbookThe type revolutionary's cookbook
The type revolutionary's cookbook
 
The Web Chef Cookbook
The Web Chef CookbookThe Web Chef Cookbook
The Web Chef Cookbook
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCamp Stockholm 2011)
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Chicago 2011)
 
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)
Don't Design Websites. Design Web SYSTEMS! (DrupalCon Copenhagen 2010)
 

Último

Design Inspiration for College by Slidesgo.pptx
Design Inspiration for College by Slidesgo.pptxDesign Inspiration for College by Slidesgo.pptx
Design Inspiration for College by Slidesgo.pptxTusharBahuguna2
 
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...amitlee9823
 
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...SUHANI PANDEY
 
Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard ...
Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard  ...Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard  ...
Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard ...nirzagarg
 
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...Delhi Call girls
 
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...BarusRa
 
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...RitikaRoy32
 
Case Study of Hotel Taj Vivanta, Pune
Case Study of Hotel Taj Vivanta, PuneCase Study of Hotel Taj Vivanta, Pune
Case Study of Hotel Taj Vivanta, PuneLukeKholes
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Jordan_Amanda_DMBS202404_PB1_2024-04.pdf
Jordan_Amanda_DMBS202404_PB1_2024-04.pdfJordan_Amanda_DMBS202404_PB1_2024-04.pdf
Jordan_Amanda_DMBS202404_PB1_2024-04.pdfamanda2495
 
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Call Girls in Nagpur High Profile
 
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...Delhi Call girls
 
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Availabledollysharma2066
 
Editorial design Magazine design project.pdf
Editorial design Magazine design project.pdfEditorial design Magazine design project.pdf
Editorial design Magazine design project.pdftbatkhuu1
 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...Call Girls in Nagpur High Profile
 
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...nirzagarg
 
Booking open Available Pune Call Girls Kirkatwadi 6297143586 Call Hot Indian...
Booking open Available Pune Call Girls Kirkatwadi  6297143586 Call Hot Indian...Booking open Available Pune Call Girls Kirkatwadi  6297143586 Call Hot Indian...
Booking open Available Pune Call Girls Kirkatwadi 6297143586 Call Hot Indian...Call Girls in Nagpur High Profile
 

Último (20)

Design Inspiration for College by Slidesgo.pptx
Design Inspiration for College by Slidesgo.pptxDesign Inspiration for College by Slidesgo.pptx
Design Inspiration for College by Slidesgo.pptx
 
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
 
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
 
Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard ...
Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard  ...Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard  ...
Anamika Escorts Service Darbhanga ❣️ 7014168258 ❣️ High Cost Unlimited Hard ...
 
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
 
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
 
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
 
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
 
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
 
Case Study of Hotel Taj Vivanta, Pune
Case Study of Hotel Taj Vivanta, PuneCase Study of Hotel Taj Vivanta, Pune
Case Study of Hotel Taj Vivanta, Pune
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Jordan_Amanda_DMBS202404_PB1_2024-04.pdf
Jordan_Amanda_DMBS202404_PB1_2024-04.pdfJordan_Amanda_DMBS202404_PB1_2024-04.pdf
Jordan_Amanda_DMBS202404_PB1_2024-04.pdf
 
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
 
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
 
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
 
Editorial design Magazine design project.pdf
Editorial design Magazine design project.pdfEditorial design Magazine design project.pdf
Editorial design Magazine design project.pdf
 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
 
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
 
Booking open Available Pune Call Girls Kirkatwadi 6297143586 Call Hot Indian...
Booking open Available Pune Call Girls Kirkatwadi  6297143586 Call Hot Indian...Booking open Available Pune Call Girls Kirkatwadi  6297143586 Call Hot Indian...
Booking open Available Pune Call Girls Kirkatwadi 6297143586 Call Hot Indian...
 

Accelerated grid theming using NineSixty (DrupalCamp LA 2011)

  • 1. Accelerated grid theming using NineSixty + Todd Nienkerk DrupalCamp LA | August 6, 2011
  • 3. Todd Nienkerk Co-founder, designer, and developer Four Kitchens todd@fourkitchens.com Twitter: @toddross Photo: Kristin Hillery
  • 4. What is a grid system?
  • 5. History of the grid ‣ The practice of using a grid to guide design and page layout is nearly a century old ‣ In the 1910s and 1920s, ornamental design gave way to Rationalism and New Objectivity Source: Grids are Good by Khoi Vinh and Mark Boulton
  • 6. Photo: kmaraj on Flickr (Creative Commons BY-NC-ND)
  • 7. Photo: dalydose on Flickr (Creative Commons BY-NC-SA)
  • 8. This shift in design was part of a much larger movement towards function over form Source: Grids are Good by Khoi Vinh and Mark Boulton
  • 9. Photo: s.alt on Flickr (Creative Commons BY-NC-ND)
  • 10. Photo: J. Kleyn on Flickr (Creative Commons BY-ND)
  • 11. Typographic grids ‣ After World War II, many graphic designers questioned the relevance of the conventional page layout of the time ‣ They devised a flexible system to help designers achieve coherency in organizing the page Source: Grid (page layout) on Wikipedia
  • 12. Source: Grid (page layout) on Wikipedia
  • 13. Unigrid system by Massimo Vignelli; image source: AisleOne
  • 14. Unigrid system by Massimo Vignelli; image source: Alki1 on Flickr (Creative Commons BY-NC-ND)
  • 15. Unigrid system by Massimo Vignelli; image source: Alki1 on Flickr (Creative Commons BY-NC-ND)
  • 16. Nearly a century ago ‣ Modernists looked to build a new aesthetic by... ‣ deriving beauty from the innate qualities of the machine ‣ championing standardization ‣ Sound familiar? Source: Grids are Good by Khoi Vinh and Mark Boulton
  • 17. Today ‣ Web designers have turned to grid-based design in order to... ‣ derive beauty from the innate qualities of the browser ‣ champion standardization ‣ 18 years after the invention of the web, we are finally embracing a century-old design philosophy Source: Grids are Good by Khoi Vinh and Mark Boulton
  • 18. Grid systems on the web ‣ On the web, grid systems usually take the form of CSS frameworks ‣ A framework is a “reuseable abstraction of code wrapped in a well-defined API”1 ‣ A collection of tools and shortcuts designed to minimize code and make your life easier 1 Source: Software framework on Wikipedia
  • 19. Examples of frameworks ‣ Ruby on Rails is a well-known Ruby framework ‣ jQuery is a JavaScript framework ‣ Drupal itself can be considered a web application framework ‣ Includes many APIs for working with databases, fields, and web forms
  • 20. CSS frameworks ‣ Apply the principles of software frameworks to web design ‣ They provide standardized rules and shortcuts for: ‣ browser resets ‣ typography ‣ navigation ‣ print style ‣ and...
  • 21. Layout ‣ When applied to web design, grid systems are CSS frameworks that provides standardized rules and shortcuts for building a website’s layout
  • 22. Why use a grid system?
  • 23. 1) Saves time 2) Saves money 3) Reduces frustration
  • 24. Stop reinventing the wheel ‣ Reduces the amount of CSS and markup you need to duplicate each time you start a project ‣ No need to refer to old projects to figure out how to implement layouts
  • 25. Stop fixing and start designing ‣ Shortens testing phases by providing built-in support for noncompliant browsers ‣ Minimize Internet Explorer hacks in your layout ‣ A well-tested grid system will rarely be the source of your problems
  • 26. Stop deconstructing CSS ‣ Understanding someone else’s design is much easier when a standard grid system is used
  • 27. “Embrace constraints” — Mark Kraemer, Credera management consulting ‣ All modern displays support at least 1024×768 resolution ‣ Despite the many advances in web technology, it’s all just rectangles Photo: Aaron Schmidt on Flickr (Creative Commons BY-NC-SA)
  • 28. Enforcing a grid can accelerate design while maintaining order Photo: jontidmarsh on Flickr (Creative Commons BY-SA)
  • 29. “Our craft is becoming a commodity, and the people in charge don’t care about the quality of the markup, CSS, or how short our JavaScript is. What matters is how fast you can get it to market, how many people it reaches, and how cheaply it can be built.” —Christian Heilmann, (then) standards evangelist at Yahoo Think Vitamin | Web development is moving on — Are you?
  • 30. How do grid systems work?
  • 31. Columns ‣ Grid systems are built using columns ‣ Columns are a grid system’s smallest unit of measurement ‣ Most grid systems contain 12–16 columns Example based on 960.gs (12-column)
  • 32. Column width ‣ Page regions (header, content, sidebars, etc.) are defined by column width ‣ As in: “The header is eight columns wide” Example based on 960.gs (12-column)
  • 33. Gutters (margins) ‣ Margins or padding are used to create gutters between columns ‣ These gutters provide margins between page regions Example based on 960.gs (12-column)
  • 34. Lean and versatile CSS ‣ A grid system’s CSS should: ‣ Be lean and e cient ‣ Be versatile and reusable ‣ Ensure consistent behavior across all common browsers — even IE6
  • 35. Wrapping <div> elements ‣ In fixed-width grid systems, the entire layout is wrapped inside a single <div> element ‣ <div> elements wrap the page regions and define their widths according to the number of columns they span ‣ These <div> elements may be nested to create regions within regions
  • 36. Floating <div> elements ‣ The wrapping <div> class: grid-12 elements are assigned a column width using a class: class: CSS class grid-4 grid-4 class: grid-4 ‣ Because these classes class: grid-8 also float the elements, they simply fall into class: grid-6 class: grid-6 place on the page Example based on 960.gs (12-column)
  • 37. What can grid systems look like? Examples of grid-based layouts
  • 38. Layout A: Content left, sidebar right Example based on 960.gs (12-column)
  • 39. Layout B: Content between sidebars Example based on 960.gs (12-column)
  • 40. Layout C: Content right with two left sidebars Example based on 960.gs (12-column)
  • 41. Layout D: Whatever Example based on 960.gs (12-column)
  • 42. Layout E: The Mondriaan Painting by Piet Mondriaan (later Mondrian)
  • 44. What is 960.gs? ‣ 960.gs — also known as the 960 Grid System — was created by Nathan Smith in order to “streamline web development workflow” ‣ It’s both a prototyping and development framework Source: 960.gs
  • 45. What’s in it ‣ Download it for free at 960.gs ‣ GPL and MIT licensed ‣ The 960.gs download includes: ‣ Printable sketch sheets for doodling ‣ Design templates for all most applications: Photoshop, Illustrator, Inkscape, OmniGra e, etc. Source: 960.gs
  • 46. Technical specs ‣ 960px wide with a 940px usable area ‣ Two versions: 12- and 16-column ‣ These can be implemented separately or simultaneously ‣ Each column has a 10px margin on the left and right, which creates a 20px gutter between columns Source: 960.gs
  • 47. 12-column version Columns are 60px wide Gutters are 20px wide 10px margin on the left and Available right prevents collision with working area browser chrome is 940px wide Source: 960.gs
  • 48. 16-column version Columns are 40px wide Everything else remains the same Source: 960.gs
  • 49. Using both versions simultaneously ‣ 12- and 16-column layouts can be used on the same page Halves Quarters
  • 50. This flexibility allows designers to work with both 60px- and 40px-wide columns ‣ If 12 or 16 columns don’t suit you, 960 is also divisible by 2, 3, 4, 5, 6, 8, 10, 15, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160, 192, 240, 320 and 480
  • 51. CSS and markup Note: 960.gs uses underscores in its CSS class names. To avoid confusion, the examples that follow will use hyphens instead, as this is The Drupal Way.
  • 52. Containers ‣ Grids must be wrapped in a container <div> .container-12, ‣ Containers center the .container-16 { margin-left: auto; content and define margin-right: auto; which version of the width: 960px; grid will be } implemented
  • 53. Grids ‣ Grids are held inside .grid-1, containers and are .grid-2, .grid-3, floated left so they fall ... into place .grid-16 { automatically display: inline; float: left; margin-left: 10px; ‣ They also provide 10px margin-right: 10px; margins on the left and } right
  • 54. Grid widths ‣ The width of each grid is determined by the .container-12 .grid-1 { container that wraps it width: 60px; } ‣ For example, a one- .container-16 .grid-1 { column grid is either width: 40px; 60px or 40px } depending on whether it’s a 12- or 16-column layout
  • 55. Note that grid width does not increase by 60px or 40px each time ‣ Each increase must account for the 20px gutter between grids .container-12 .grid-1 { .container-16 .grid-1 { width: 60px; width: 40px; } } .container-12 .grid-2 { .container-16 .grid-2 { width: 140px; width: 100px; } } .container-12 .grid-3 { .container-16 .grid-3 { width: 300px; width: 160px; } }
  • 56. Putting containers and grids together .container-12 .grid-3 .grid-6 .grid-3
  • 57. Prefixes and su xes ‣ If you want to leave space between .container-12 .prefix-1 { columns, use a prefix padding-left: 80px; or su x class } .container-12 .suffix-1 { ‣ Prefix classes add padding-right: 80px; padding to the left of a } column ‣ Su x classes add padding to the right
  • 58. Adding a prefix and su x .container-12 .grid-4 .grid-3 .prefix-1 .grid-3 .suffix-1
  • 59. Multiple rows .container-12 .grid-12 .grid-4 .grid-3 .prefix-1 .grid-3 .suffix-1
  • 60. Multiple rows: markup <div class="container-12"> The container <div> defines the layout <!-- row 1 --> <div class="grid-12"> version in use This grid occupies the full width </div> <!-- row 2 --> <div class="grid-3"> One wide No need to put </div> each row in its own <div class="grid-4 prefix-1 suffix-1"> wrapping <div> Four wide with a prefix and suffix of one each </div> <div class="grid-3"> One wide </div> </div> <!-- /container -->
  • 61. Stack content vertically with nested grids .grid-6 .container-12 .grid-6 .grid-3 .grid-3 .grid-6
  • 62. Here’s the catch: Because each grid includes a 10px left and right margin, nesting grids can break your layout .grid-6 .container-12 .grid-6 .grid-3 .grid-6 .grid-3
  • 63. Alpha and omega fix broken nesting ‣ When nesting grids, use the alpha and omega classes to remove the margins ‣ alpha removes the left margin. It’s the first nested grid. ‣ omega removes the right margin. It’s the last nested grid.
  • 64. .grid-6 .container-12 .grid-3 .grid-3 .alpha .omega .grid-3 .grid-3 .grid-6 .alpha .omega .alpha removed .omega removed the left margin the right margin
  • 66. About NineSixty ‣ NineSixty is the Drupal port of 960.gs ‣ Developed by Joon Park, aka dvessel on Drupal.org ‣ Intended to be used as a base theme Source: Drupal.org
  • 68. NineSixty’s improvements ‣ Content-first layout using “push” and “pull” classes ‣ Now part of 960.gs proper ‣ Dynamic grid widths based on context using ns() ‣ Debugging tools and grid visualization ‣ Right-to-left (RTL) language support
  • 69. Content-first layout ‣ A design convention in which the content is output as close to the top of the markup as possible ‣ Content should be output before all sidebars ‣ This can be very di cult to achieve on a site with one or more left columns
  • 70. Push and pull classes ‣ Content-first layout can be achieved in NineSixty by “pushing” the content grid to the right while “pulling” a sidebar to the left ‣ These classes use the same naming convention as .grid-X, .prefix-X, and .suffix-X, where X is the grid’s width: ‣ .push-X and .pull-X
  • 71. Push and pull values should match the grid value of the opposite grid <div class="container-12"> <div id="content" class="grid-6 push-3"> Match numbers to Content swap locations </div> <div id="sidebar-left" class="grid-3 pull-6"> Sidebar: Left </div> <div id="sidebar-right" class="grid-3"> Sidebar: Right </div> </div> Source: NineSixty’s README.txt
  • 72. Before adding push and pull .container-12 #content #sidebar-left #sidebar-right .grid-6 .grid-3 .grid-3 <div class="container-12"> <div id="content" class="grid-6"> Content </div> <div id="sidebar-left" class="grid-3"> Sidebar: Left </div> <div id="sidebar-right" class="grid-3"> Sidebar: Right </div> </div>
  • 73. .container-12 #content #sidebar-left #sidebar-right .grid-6 .grid-3 .grid-3
  • 74. .container-12 #sidebar-left #content #sidebar-right .grid-3 .grid-6 .grid-3 .pull-6 .push-3
  • 75. After adding push and pull .container-12 #sidebar-left #content #sidebar-right .grid-3 .grid-6 .grid-3 .pull-6 .push-3 <div class="container-12"> <div id="content" class="grid-6 push-3"> Content </div> <div id="sidebar-left" class="grid-3 pull-6"> Sidebar: Left </div> <div id="sidebar-right" class="grid-3"> Sidebar: Right </div> </div>
  • 76. NineSixty in action ‣ Visit ninesixty.fkdemos.com to see how NineSixty... ‣ uses push and pull classes to generate content- first layout ‣ dynamically assigns grid widths based on context ‣ can be used to create di erent layouts
  • 77. Implementing a grid- based layout Using NineSixty to build your site
  • 78. When not to use a grid ‣ Implementing a grid will probably be impossible if your site’s layout... ‣ uses irregular column sizes ‣ has irregular margins or gutters ‣ has a width that isn’t divisible by a sane number
  • 79. Implementing a grid will be di cult — but not impossible — if your site’s layout... ‣ has gutter widths of odd numbers ‣ is fluid ‣ wasn’t designed on a grid
  • 80. Getting started ‣ Do not change the NineSixty theme on your site! ‣ Hacking NineSixty is like hacking core: It will make upgrading your site very di cult ‣ Instead, subtheme NineSixty or create a totally new theme based on NineSixty
  • 81. Subtheme ‣ This method is best if your site is (or can be) 960px wide and can utilize 12 or 16 columns ‣ Subtheming instructions and resources on Drupal.org: drupal.org/node/225125
  • 82. Build a new theme ‣ You should build a new theme when your site’s layout... ‣ isn’t 960px wide ‣ doesn’t use 12 or 16 columns ‣ It’s more e cient to use a new theme than to override virtually all of NineSixty’s CSS
  • 83. Do the math ‣ Be prepared to crunch numbers ‣ Building a new grid can be very confusing ‣ Spreadsheets can help you visualize columns, margins, and gutters Image source: Client project
  • 84. Examples 960.gs as a prototyping and development system
  • 85. Refresh Boston: 16 columns refreshboston.org
  • 86. Refresh Boston: 16 columns refreshboston.org
  • 89. Twitter Media blog: 12 columns media.twitter.com
  • 90. Twitter Media blog: 12 columns media.twitter.com
  • 91. AAFES comp: 12 columns Credits
  • 92. AAFES comp: 12 columns Credits
  • 95. Drupal.org redesign: 12 columns infrastructure.drupal.org/drupal.org-style-guide/prototype.html
  • 96. Drupal.org redesign: 12 columns infrastructure.drupal.org/drupal.org-style-guide/prototype.html
  • 98. Credits ‣ “History of the grid” slides were ‣ This presentation was created and borrowed heavily from Khoi Vinh delivered Todd Nienkerk, co- and Mark Boulton’s presentation founder of Four Kitchens, with lots Grids are Good and from of guidance from Nathan Smith, Wikipedia creator of the 960 Grid System ‣ Piet Mondriaan painting was found somewhere online. Copyright holder is unknown ‣ The items listed above are exempt from this presentation’s Creative Commons license
  • 99. All content in this presentation, except where noted otherwise, is Creative Commons Attribution- ShareAlike 3.0 licensed and copyright 2010 Four Kitchen Studios, LLC.