This "framework" theme is based on the 960 Grid System created by Nathan Smith. The CSS framework is licenced under GPL and MIT. This Drupal theme is licensed under GPL. Homepage and download for 960: http://960.gs/ Background information on 960: http://sonspring.com/journal/960-grid-system Write-up from DivitoDesign: http://www.divitodesign.com/2008/12/960-css-framework-learn-basics/ Write-up from Nettus: http://nettuts.com/videos/screencasts/a-detailed-look-at-the-960-css-framework/ http://nettuts.com/tutorials/html-css-techniques/prototyping-with-the-grid-960-css-framework/ General idea behind a CSS framework: http://www.alistapart.com/articles/frameworksfordesigners Extensive overview on working within grids: http://www.smashingmagazine.com/2007/04/14/designing-with-grid-based-approach/ ============================================================================== Modifications: - The 960 Grid System package has been modified so it conforms to Drupal's coding standards. Tabs were removed for double spaces and underscores changed to hyphens. - Additional .push-x and .pull-x classes have been added. update: The push and pull classes have been incorporated into 960.gs source. - Right-to-left languages are supported. It does not use the RTL styles included with 960.gs source due to the way Drupal core handles RTL styles. - The ".clear" class from 960.css repurposed to clear blocks with content. The br.clear method can be used in its place while .clear can be applied to elements that contain content. - Removed the "outline:0;" rule from reset.css. Adding it back manually prevents OS specific outline styles from being used. Specifically Webkit and possibly others. Also removed the "a:focus {outline: 1px dotted invert;}" from text.css where it's reapplied. - Removed the large left margin for list items inside text.css. It interferes in many places. - From this point forward, any modifications to the source 960.gs files will will be noted at the top of each file. ============================================================================== Notes and rules to play nice with the grids: - The class .container-[N] ([N] being a numeric value) is a subdivision of the overall width (960 pixels). It can be .container-12, .container-16 or .container-24. Depending on which is used, each grid unit (.grid-[N] class) will be a certain width: .container-12 .grid-1 = 80px [ 10px margin | 60px width | 10px margin ] .grid-2 = 160px [ 10px margin | 140px width | 10px margin ] .grid-3 = 240px [ 10px margin | 220px width | 10px margin ] .container-16 .grid-1 = 60px [ 10px margin | 40px width | 10px margin ] .grid-2 = 120px [ 10px margin | 100px width | 10px margin ] .grid-3 = 180px [ 10px margin | 160px width | 10px margin ] .container-24 .grid-1 = 40px [ 5px margin | 30px width | 5px margin ] .grid-2 = 80px [ 5px margin | 70px width | 5px margin ] .grid-3 = 120px [ 5px margin | 110px width | 5px margin ] Note the progression of the inner width and the constant margins of the 12 and 16 versions vs. what's used for the 24 column version. - 12 and 16 columns can be used in tandem on a single page given that they stay within their own containers. The 24 column version encompasses both the 12, 16 and beyond in terms of its ability to subdivide the layout so mixing .container-24 with the other two is not recommended. The margins also differ which will throw off your layout be 5 pixels. - The default 960 style includes both 12 and 16 column containers. You can tell your theme to pick an alternate version with a simple .info entry in your theme. settings[ns_columns_select] = 12 settings[ns_columns_select] = 16 settings[ns_columns_select] = 24 settings[ns_columns_select] = 12+16 ; the default set by ninesixty base - Use the .push-[N] and .pull-[N] classes so the order the layout is presented does not depend on source order. For example, if the source order was this: [content][side-1][side-2], and the desired presentation order was this: [side-1][content][side-2]. Adding a .pull-[N] class to #side-1 with the same numeric grid value as #content and adding a .push-[N] class to #content with the same numeric grid value of #side-1 will swap their positions. These classes can also be used for the general shifting of content when needed.
... \ /
\/ Match numeric values to swap. /\
...
...
- Use the .prefix-[N] and .suffix-[N] classes to pad an empty space. Do not confuse this with the push/pull classes which are for positioning. - When embedding a grid within a grid, use .alpha and .omega classes. The first block must be assigned .alpha and the last, .omega. This will chop off the margin so it fits neatly into the grid. - When using push/pull in combination with the alpha/omega classes, Which element you apply the alpha/omega classes depends more on the presentation order than the source order. As long as you stay within the framework, any positioning quirks especially from Internet Explorer 6 and 7 should be minimal. ============================================================================== Adding classes based on context: The function "ns()" can be used to add classes contextually. The first argument should be the default class with the highest possible unit. The rest of the arguments are paired by a variable and its unit used in an adjacent block of markup.
[default] | | | |
|- pair -| |- pair -| | | | |