compass-edge 0.9.4 → 0.9.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. data/CHANGELOG.markdown +32 -2
  2. data/README.markdown +12 -2
  3. data/REVISION +1 -1
  4. data/Rakefile +3 -1
  5. data/VERSION.yml +1 -2
  6. data/examples/blueprint_default/index.html.haml +3 -3
  7. data/examples/blueprint_default/parts/forms.html.haml +2 -0
  8. data/examples/blueprint_default/src/screen.sass +1 -1
  9. data/examples/blueprint_plugins/index.html.haml +6 -6
  10. data/examples/blueprint_plugins/src/buttons.sass +2 -2
  11. data/examples/blueprint_plugins/src/link_icons.sass +1 -1
  12. data/examples/blueprint_plugins/src/rtl_screen.sass +3 -3
  13. data/examples/blueprint_plugins/src/screen.sass +2 -2
  14. data/examples/blueprint_semantic/src/liquid.sass +4 -4
  15. data/examples/blueprint_semantic/src/screen.sass +3 -3
  16. data/examples/compass/bootstrap.rb +3 -0
  17. data/examples/compass/extensions/yui/stylesheets/_yui.sass +7 -0
  18. data/examples/compass/extensions/yui/stylesheets/yui/modules/_base.sass +70 -0
  19. data/examples/compass/extensions/yui/stylesheets/yui/modules/_fonts.sass +45 -0
  20. data/examples/compass/extensions/yui/stylesheets/yui/modules/_grids.sass +385 -0
  21. data/examples/compass/extensions/yui/stylesheets/yui/modules/_reset.sass +61 -0
  22. data/examples/compass/extensions/yui/templates/project/manifest.rb +1 -0
  23. data/examples/compass/extensions/yui/templates/project/screen.sass +4 -0
  24. data/examples/compass/src/utilities.sass +2 -2
  25. data/examples/css3/config.rb +6 -0
  26. data/examples/css3/extensions/fancy-fonts/templates/project/Vtks Revolt.ttf +0 -0
  27. data/examples/css3/extensions/fancy-fonts/templates/project/angelina.ttf +0 -0
  28. data/examples/css3/extensions/fancy-fonts/templates/project/fancy-fonts.sass +7 -0
  29. data/examples/css3/extensions/fancy-fonts/templates/project/manifest.rb +5 -0
  30. data/examples/css3/images/fresh-peas.jpg +0 -0
  31. data/examples/css3/index.html.haml +55 -0
  32. data/examples/css3/src/_base.sass +14 -0
  33. data/examples/css3/src/fancy-fonts.sass +7 -0
  34. data/examples/css3/src/gradient.sass +10 -0
  35. data/examples/css3/src/main.sass +80 -0
  36. data/examples/css3/stylesheets/fonts/Vtks Revolt.ttf +0 -0
  37. data/examples/css3/stylesheets/fonts/angelina.ttf +0 -0
  38. data/examples/downloader.rb +2 -2
  39. data/examples/ninesixty/extensions/ninesixty/README.mkdn +56 -0
  40. data/examples/ninesixty/extensions/ninesixty/compass-960-plugin.gemspec +36 -0
  41. data/examples/ninesixty/extensions/ninesixty/lib/ninesixty.rb +1 -0
  42. data/examples/ninesixty/extensions/ninesixty/lib/ninesixty/compass_plugin.rb +5 -0
  43. data/examples/ninesixty/extensions/ninesixty/sass/960/_grid.sass +64 -0
  44. data/examples/ninesixty/extensions/ninesixty/sass/960/_text.sass +59 -0
  45. data/examples/ninesixty/extensions/ninesixty/templates/project/grid.sass +34 -0
  46. data/examples/ninesixty/extensions/ninesixty/templates/project/manifest.rb +2 -0
  47. data/examples/ninesixty/extensions/ninesixty/templates/project/text.sass +10 -0
  48. data/examples/susy/bootstrap.rb +3 -0
  49. data/examples/susy/config.rb +9 -0
  50. data/examples/susy/extensions/susy/LICENSE.txt +28 -0
  51. data/examples/susy/extensions/susy/README.mkdn +235 -0
  52. data/examples/susy/extensions/susy/compass-susy-plugin.gemspec +35 -0
  53. data/examples/susy/extensions/susy/docs/tutorial/build.sh +141 -0
  54. data/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/_defaults.sass +100 -0
  55. data/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/screen.sass +98 -0
  56. data/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/_defaults.sass +147 -0
  57. data/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/screen.sass +19 -0
  58. data/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/_defaults.sass +147 -0
  59. data/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/screen.sass +48 -0
  60. data/examples/susy/extensions/susy/docs/tutorial/code/_common/config.rb +14 -0
  61. data/examples/susy/extensions/susy/docs/tutorial/code/_common/images/grid.png +0 -0
  62. data/examples/susy/extensions/susy/docs/tutorial/code/_common/images/susy_logo.png +0 -0
  63. data/examples/susy/extensions/susy/docs/tutorial/code/_common/src/_base.sass +63 -0
  64. data/examples/susy/extensions/susy/docs/tutorial/code/_tools/Markdown.pl +1450 -0
  65. data/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass +100 -0
  66. data/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass +91 -0
  67. data/examples/susy/extensions/susy/docs/tutorial/figures/susy_element.png +0 -0
  68. data/examples/susy/extensions/susy/docs/tutorial/figures/susy_grid.png +0 -0
  69. data/examples/susy/extensions/susy/docs/tutorial/index.mkdn +301 -0
  70. data/examples/susy/extensions/susy/lib/susy.rb +2 -0
  71. data/examples/susy/extensions/susy/lib/susy/compass_plugin.rb +5 -0
  72. data/examples/susy/extensions/susy/lib/susy/sass_extensions.rb +79 -0
  73. data/examples/susy/extensions/susy/sass/susy/_grid.sass +128 -0
  74. data/examples/susy/extensions/susy/sass/susy/_reset.sass +7 -0
  75. data/examples/susy/extensions/susy/sass/susy/_susy.sass +23 -0
  76. data/examples/susy/extensions/susy/sass/susy/_text.sass +15 -0
  77. data/examples/susy/extensions/susy/sass/susy/_utils.sass +81 -0
  78. data/examples/susy/extensions/susy/templates/project/_base.sass +62 -0
  79. data/examples/susy/extensions/susy/templates/project/_defaults.sass +147 -0
  80. data/examples/susy/extensions/susy/templates/project/ie.sass +9 -0
  81. data/examples/susy/extensions/susy/templates/project/manifest.rb +5 -0
  82. data/examples/susy/extensions/susy/templates/project/print.sass +7 -0
  83. data/examples/susy/extensions/susy/templates/project/screen.sass +44 -0
  84. data/examples/susy/src/_base.sass +62 -0
  85. data/examples/susy/src/_defaults.sass +148 -0
  86. data/examples/susy/src/screen.sass +114 -0
  87. data/examples/yui/extensions/yui/stylesheets/_yui.sass +7 -0
  88. data/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass +70 -0
  89. data/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass +45 -0
  90. data/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass +385 -0
  91. data/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass +61 -0
  92. data/examples/yui/extensions/yui/templates/project/manifest.rb +1 -0
  93. data/examples/yui/extensions/yui/templates/project/screen.sass +4 -0
  94. data/lib/compass/app_integration/rails/configuration_defaults.rb +9 -1
  95. data/lib/compass/commands/watch_project.rb +1 -1
  96. data/lib/compass/compiler.rb +9 -1
  97. data/lib/compass/configuration.rb +23 -18
  98. data/lib/compass/configuration/adapters.rb +1 -1
  99. data/lib/compass/configuration/defaults.rb +30 -0
  100. data/lib/compass/frameworks.rb +1 -1
  101. data/lib/compass/frameworks/blueprint/stylesheets/_blueprint.sass +29 -1
  102. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.sass +84 -0
  103. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_colors.sass +33 -0
  104. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_debug.sass +9 -0
  105. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass +82 -0
  106. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_form.sass +56 -0
  107. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_grid.sass +179 -0
  108. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_ie.sass +2 -2
  109. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.sass +58 -0
  110. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass +44 -0
  111. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.sass +141 -0
  112. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_print.sass +1 -4
  113. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_reset.sass +57 -2
  114. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.sass +123 -0
  115. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass +49 -0
  116. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_screen.sass +2 -29
  117. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_typography.sass +162 -0
  118. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.sass +37 -0
  119. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass +2 -84
  120. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass +2 -33
  121. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass +2 -9
  122. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +2 -82
  123. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +2 -55
  124. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +2 -178
  125. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass +2 -58
  126. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass +2 -44
  127. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass +2 -140
  128. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +2 -56
  129. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +2 -122
  130. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +2 -47
  131. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +2 -160
  132. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass +2 -37
  133. data/lib/compass/frameworks/blueprint/templates/buttons/buttons.sass +2 -2
  134. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons.sass +1 -1
  135. data/lib/compass/frameworks/blueprint/templates/project/screen.sass +1 -7
  136. data/lib/compass/frameworks/blueprint/templates/project/welcome.html.haml +5 -2
  137. data/lib/compass/frameworks/compass/stylesheets/compass/_css3.sass +8 -0
  138. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_clip.sass +16 -0
  139. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_origin.sass +18 -0
  140. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_size.sass +14 -0
  141. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_box_shadow.sass +18 -10
  142. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_font_face.sass +31 -0
  143. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_gradient.sass +40 -0
  144. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_text_shadow.sass +15 -0
  145. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_transform.sass +60 -0
  146. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_transition.sass +57 -0
  147. data/lib/compass/grid_builder.rb +1 -1
  148. data/lib/compass/installers/base.rb +5 -1
  149. data/lib/compass/installers/manifest.rb +1 -0
  150. data/lib/compass/logger.rb +28 -2
  151. data/lib/compass/sass_extensions/functions.rb +3 -1
  152. data/lib/compass/sass_extensions/functions/color_stop.rb +10 -0
  153. data/lib/compass/sass_extensions/functions/enumerate.rb +2 -2
  154. data/lib/compass/sass_extensions/functions/font_files.rb +11 -0
  155. data/lib/compass/sass_extensions/functions/inline_image.rb +22 -1
  156. data/lib/compass/sass_extensions/functions/urls.rb +20 -0
  157. data/lib/vendor/fssm.rb +19 -6
  158. data/lib/vendor/fssm/backends/fsevents.rb +19 -60
  159. data/lib/vendor/fssm/backends/polling.rb +20 -18
  160. data/lib/vendor/fssm/cache.rb +193 -0
  161. data/lib/vendor/fssm/ext.rb +30 -0
  162. data/lib/vendor/fssm/fsevents.rb +129 -0
  163. data/lib/vendor/fssm/monitor.rb +10 -6
  164. data/lib/vendor/fssm/path.rb +24 -21
  165. data/lib/vendor/fssm/state.rb +37 -29
  166. data/lib/vendor/fssm/support.rb +3 -7
  167. data/lib/vendor/fssm/tree.rb +176 -0
  168. data/test/command_line_helper.rb +8 -4
  169. data/test/command_line_test.rb +2 -2
  170. data/test/compass_test.rb +14 -4
  171. data/test/configuration_test.rb +5 -5
  172. data/test/fixtures/stylesheets/blueprint/css/typography.css +5 -3
  173. data/test/fixtures/stylesheets/blueprint/sass/screen.sass +1 -1
  174. data/test/fixtures/stylesheets/blueprint/sass/typography.sass +2 -2
  175. data/test/fixtures/stylesheets/compass/css/print.css +2 -8
  176. data/test/fixtures/stylesheets/image_urls/css/screen.css +2 -0
  177. data/test/fixtures/stylesheets/relative/assets/images/testing.png +0 -0
  178. data/test/fixtures/stylesheets/relative/config.rb +9 -0
  179. data/test/fixtures/stylesheets/relative/css/ie.css +1 -0
  180. data/test/fixtures/stylesheets/relative/css/print.css +1 -0
  181. data/test/fixtures/stylesheets/relative/css/screen.css +1 -0
  182. data/test/fixtures/stylesheets/relative/sass/ie.sass +6 -0
  183. data/test/fixtures/stylesheets/relative/sass/print.sass +6 -0
  184. data/test/fixtures/stylesheets/relative/sass/screen.sass +3 -0
  185. data/test/rails_integration_test.rb +1 -1
  186. data/test/sass_extensions_test.rb +2 -2
  187. metadata +120 -2
@@ -0,0 +1,100 @@
1
+ //** DEFAULT STYLES **//
2
+ // Don't forget to set your default styles.
3
+
4
+
5
+ // Get all the details and mixins from base.sass
6
+ @import base.sass
7
+ // Reset browser defaults, and prepare block-level HTML5 elements
8
+ @import susy/reset.sass
9
+
10
+
11
+ /* @group defaults */
12
+
13
+
14
+ /* @group links */
15
+
16
+ \:focus
17
+ outline: 1px dotted
18
+
19
+ a
20
+ &:link, &:visited
21
+ color= !links
22
+ text-decoration: none
23
+ &:focus, &:hover, &:active
24
+ color= !light
25
+ border-bottom:
26
+ width= px2em(2) + "em"
27
+ style: dashed
28
+
29
+ /* @end */
30
+
31
+
32
+ /* @group headers */
33
+
34
+ h1
35
+ +serif-family
36
+ text-transform: lowercase
37
+ font-size: 3em
38
+ line-height: 1
39
+ font-weight: bold
40
+ color= !links
41
+
42
+ h2
43
+ font-weight: bold
44
+ text-transform: uppercase
45
+
46
+ /* @end */
47
+
48
+
49
+ /* @group block tags */
50
+ p
51
+ margin: 0 0 1.5em 0
52
+
53
+ pre
54
+ border-left= ".5em solid" !light
55
+ margin: 0 0 1.5em 0
56
+ padding: 1.5em
57
+
58
+ =list-default(!ol = false)
59
+ @if !ol
60
+ list-style: decimal
61
+ margin: 0 1.5em 1.5em 1.5em
62
+ @else
63
+ list-style: disc
64
+ margin: 0 1.5em 1.5em 1.5em
65
+
66
+ ol
67
+ +list-default("ol")
68
+
69
+ ul
70
+ +list-default
71
+
72
+ /* @end */
73
+
74
+
75
+ /* @group inline tags */
76
+
77
+ em
78
+ font-style: italic
79
+
80
+ strong
81
+ font-weight: bold
82
+
83
+ ins
84
+ text-decoration: underline
85
+
86
+ del
87
+ text-decoration: line-through
88
+
89
+ /* @end */
90
+
91
+
92
+ /* @group replaced tags */
93
+
94
+ img
95
+ vertical-align: bottom
96
+
97
+ /* @end */
98
+
99
+
100
+ /* @end */
@@ -0,0 +1,91 @@
1
+ /*
2
+ Welcome to Susy. Use this file to define screen styles.
3
+ Import this file using the following HTML or equivalent:
4
+ <link href="/stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css" />
5
+
6
+
7
+ @import defaults.sass
8
+
9
+
10
+ /* @group STRUCTURE */
11
+
12
+ body
13
+ +susy
14
+
15
+ #page
16
+ +container
17
+ +sans-family
18
+ color= !text
19
+
20
+ #brand
21
+ +full
22
+ +pad(1,1)
23
+ margin:
24
+ top: 3em
25
+ bottom: 1.5em
26
+ h1 a
27
+ +full(8)
28
+ +pad(1,2,8)
29
+ display: block
30
+ +replace-text("susy_logo.png", "left")
31
+ height: 105px
32
+ &:focus, &:hover, &:active
33
+ border-bottom: 0
34
+
35
+ #site-nav
36
+ +columns(2)
37
+ +alpha
38
+ ul
39
+ +no-bullets
40
+ margin: 0
41
+ text-align: right
42
+ font-weight: bold
43
+
44
+ #content
45
+ +columns(8)
46
+ +omega
47
+ margin-bottom: 3em
48
+ #description
49
+ +columns(5,8)
50
+ #credit
51
+ +columns(3,8)
52
+ +omega(8)
53
+ color= !light
54
+
55
+ #contentinfo
56
+ +full
57
+ +prefix(2)
58
+ padding:
59
+ top: .5em
60
+ bottom: .75em
61
+ border-top:
62
+ width: .25em
63
+ style: dashed
64
+ color= !light
65
+ +serif-family
66
+ font-style: italic
67
+ color= !light
68
+ p
69
+ margin: 0
70
+ &.license
71
+ +columns(5,8)
72
+ +alpha(8)
73
+ &.styles
74
+ +columns(3,8)
75
+ +omega(8)
76
+ text-align: right
77
+ a:link, a:visited
78
+ color= !light
79
+ font-weight: bold
80
+
81
+ .tutorial
82
+ #content
83
+ margin-bottom: 3em
84
+ li
85
+ margin-bottom: 1.5em
86
+ code
87
+ font-size: 1.25em
88
+ font-family: monospace
89
+ color= !light
90
+
91
+ /* @end */
@@ -0,0 +1,301 @@
1
+ Susy Tutorial
2
+ =============
3
+
4
+ Once you've [installed
5
+ everything](http://github.com/ericam/compass-susy-plugin/tree/master) we can
6
+ start building our grid. I'll walk you through the steps. I'm starting with
7
+ the assumption that you already know CSS and the Compass/Sass syntax. If you
8
+ don't, check out [Chris Eppstein's great
9
+ intro](http://wiki.github.com/chriseppstein/compass).
10
+
11
+ For a brief overview of Susy's philosophy and goals, see [the
12
+ README](http://github.com/ericam/compass-susy-plugin/tree/master#readme).
13
+
14
+ On Susy's Terms
15
+ ---------------
16
+
17
+ Here are the terms to understand for following along and using Susy:
18
+
19
+ * There is always a **container** element that wraps the page. This container
20
+ will act as our elastic shell. The **container** also represents a grid
21
+ structure made up of **columns**, **gutters** between the columns, and
22
+ **side gutters** on the outside edges of the grid.
23
+
24
+ [![The Susy Grid](figures/susy_grid.png)](figures/susy_grid.png)
25
+
26
+ * The base **context** is the number of columns in your grid system, and any
27
+ direct children of the **container** will use that base as their
28
+ **context**. However, as you continue to nest elements within each other
29
+ that context will change. Just remember that the **context** is always the
30
+ number of columns spanned by the parent element.
31
+
32
+ * There are any number of **grid elements** making up the structure of our
33
+ site, nested within the **container**. Each grid element has a width that
34
+ spans any number of **columns** along with the **gutters** between those
35
+ columns (number of columns minus one), and a right-margin that represents
36
+ the gutter to the right of it.
37
+
38
+ [![The Susy Grid Element](figures/susy_element.png)](figures/susy_element.png)
39
+
40
+ * A **grid element** might also include a **prefix** and/or **suffix** added
41
+ as padding on either side. Any **prefix** or **suffix** will span the number
42
+ of **columns** given as argument, as well as all associated **gutters** (in
43
+ this case the same number of gutters as columns).
44
+
45
+ * Any **grid elements** that span the first or last columns in any given
46
+ context will sometimes need to handle gutters in special ways. These will be
47
+ referred to as the **alpha** and **omega** elements. One element that spans
48
+ an entire context (a header or footer perhaps) may be both **alpha** and
49
+ **omega**.
50
+
51
+ Customizing your Grid System
52
+ ----------------------------
53
+
54
+ So let's get started. We're going to build a website for Susy. [This
55
+ website](http://www.oddbird.net/susy/). It's a simple site but it covers
56
+ everything you need to get started on your own.
57
+
58
+ Create yourself a Compass project using Susy:
59
+
60
+ compass -r susy -f susy susy_tutorial
61
+
62
+ Inside the susy_tutorial directory, create an `index.html` file. You can [grab
63
+ my source](01_target/index.html).
64
+
65
+ Start in your `_base.sass` file (in the `src` directory). That's where you set
66
+ all your defaults.
67
+
68
+ To create a grid, set the `!grid_unit` (units that your grid is based in),
69
+ `!total_cols` (total number of columns in your grid), `!col_width` (width of
70
+ columns), `!gutter_width` (width of gutters), and `!side_gutter_width` (width
71
+ of side gutters) variables.
72
+
73
+ The default values are 12 columns, 4em column widths, 1em gutters and side
74
+ gutters that match the internal ones. But we want a 10 column grid, with 5em
75
+ columns, 2em gutters and 1em side-gutters.
76
+
77
+ Take a look at our target site again, this time [with a grid
78
+ overlay](01_target/).
79
+
80
+ So we'll set our grid like this:
81
+
82
+ !grid_unit = "em"
83
+ !total_cols = 10
84
+ !col_width = 5
85
+ !gutter_width = 2
86
+ !side_gutter_width = 1
87
+
88
+ Of course, designing in em's, we'll want to get your font sizes set to make
89
+ this all meaningful. Do that by assigning a pixel value (without the units) to
90
+ `!base_font_size_px` and `!base_line_height_px`. Susy will convert those to a
91
+ percentage of the common browser default (16px) and apply them to your grid.
92
+
93
+ The default values here are 16px fonts with an 24px line-height. For us:
94
+
95
+ !base_font_size_px = 14
96
+ !base_line_height_px = 21
97
+
98
+ `_base.sass` also has everything you need for setting default font families,
99
+ colors and mixins to reuse throughout. From there you should head over to
100
+ `_defaults.sass` to set default styles for all those elements that ought have
101
+ a default (but don't because of the reset). We're going to skip that for now
102
+ and play with the fun toys. You can look around at the other defaults and set
103
+ what you like, or juse [use](../src/_base.sass) [mine](../src/_defaults.sass).
104
+
105
+
106
+ Making Semantic Grids
107
+ ---------------------
108
+
109
+ First the explanation:
110
+
111
+ * Use the `+susy` mixin to get things ready, set your base font sizes and
112
+ center your grid in the browser window. Change the alignment of your grid in
113
+ the window with an optional `left | center | right` argument.
114
+
115
+ * Use the `+container` mixin to declare your container element. Besides
116
+ building the grid shell, this sets your horizontal margins to auto (for
117
+ centered designs) and returns your text-alignment to "left". Change the
118
+ internal text alignment with an optional `left | center | right` argument.
119
+
120
+ * Use the `+columns` mixin to set the width (in columns) of a grid element.
121
+ The first argument is the number of columns to span, the second (optional)
122
+ argument is the width (in columns) of the containing element when nesting.
123
+ If the element is not nested (its parent is the grid container), don't pass
124
+ a second argument. For an element that will span the full width (including
125
+ prefix and suffix), you can simply use `+full`, which takes one argument
126
+ of the context (in columns) when nested.
127
+
128
+ * Use the `+alpha` and `+omega` mixins to declare the first and last elements
129
+ in a row. In a nested context `+omega` takes one argument repesenting its
130
+ context. `+omega` also floats an element right by default. You can change
131
+ !omega_float to override that default. `+alpha` is only needed in the very
132
+ top level, and does nothing in nested contexts. Neither one is needed on a
133
+ `+full` element.
134
+
135
+ * Use the `+prefix` and `+suffix` mixins with one argument to add that many
136
+ grid columns as padding before or after a grid element. These mixins also
137
+ take an optional second argument, the size in columns of the containing
138
+ element when nested.
139
+
140
+ Then we do it. In `screen.sass`, we'll start by declaring our intent to use
141
+ Susy, and our container:
142
+
143
+ body
144
+ +susy
145
+
146
+ #page
147
+ +container
148
+
149
+ That wasn't hard. You might ask why I didn't nest `#page` inside of `body`, as
150
+ is so tempting and easy with Sass. It's part personal preference and part
151
+ Natalie Downe's voice in my head. Don't nest when you don't need to. It keeps
152
+ your output code much cleaner.
153
+
154
+ Take a look at [the results](02_container/). So far we have:
155
+
156
+ * Replaced browser defaults with our own. This happens automatically in the
157
+ background, thanks to `_defaults.sass`.
158
+
159
+ * Created an elastic container for our grid at 70em that goes fluid for small
160
+ windows (try it!).
161
+
162
+
163
+ Laying Out The Components
164
+ --------------------------
165
+
166
+ It's time to lay out our grid components. We'll just work our way through the
167
+ HTML, starting with our brand header (#brand). We can refer back to our [target
168
+ site with a grid overlay](01_target/) to see what we need. Looks like our
169
+ branding gets an entire row to itself, with the content starting one row
170
+ in. For the sake of argument, let's say we want the header content contained
171
+ within the middle 8 columns - one in from each end. That means it will be an 8
172
+ column element, with 1 column prefixed and one suffixed, for a total of 10
173
+ columns - the full width.
174
+
175
+ #brand
176
+ +columns(8)
177
+ +prefix(1)
178
+ +suffix(1)
179
+
180
+ Since it spans both the first and last columns in the context we'll need to
181
+ add:
182
+
183
+ +alpha
184
+ +omega
185
+
186
+ Or we would have to, but there are several shortcuts available to us. To
187
+ declare something as full-width (both alpha and omega) we can just declare it
188
+ as full:
189
+
190
+ +full
191
+
192
+ There is also a shorcut for prefix and suffix additions (+pad), so we can
193
+ simplify down to:
194
+
195
+ #brand
196
+ +full
197
+ +pad(1,1)
198
+
199
+ Since we don't have an image in there yet, let's move the text over to line up
200
+ with the future placement of our main content area. By turning the `h1` link
201
+ into a grid element and prefixing a padding of one column, we can move the
202
+ text without any effect on the image that will replace it (using the Compass
203
+ utility `+replace-text`, though I'll leave the implementation of that as an
204
+ exercise for the reader). To line it all up with the content below it, we'll
205
+ assign it 5 columns in a context of 8, with the extra 3 split between a prefix
206
+ of 1 and a suffix of 2 - giving it a full span again. This time we are nested
207
+ and need to supply the context.
208
+
209
+ h1 a
210
+ +full(8)
211
+ +pad(1,2,8)
212
+
213
+ Note: when not nested, you *must not declare a context*. If you
214
+ do, your side-gutters will be ignored. At every nested layer below that, even
215
+ if the context hasn't changed, you *must declare a context* or it will try to
216
+ add side-gutters again. That means even if you have one nested element
217
+ wrapping the rest at full width and not changing the context, that wrapper
218
+ does not get a context but its descendants do, even where that context is the
219
+ same as the full page.
220
+
221
+ For example, these *will not work*:
222
+
223
+ /*because context is declared at the top level:*/
224
+ #page
225
+ +container
226
+
227
+ .inner
228
+ +columns(8,10)
229
+
230
+ /*because context is not declared in a nested level:*/
231
+ #page
232
+ +container
233
+
234
+ .inner
235
+ +columns(10)
236
+ #brand
237
+ +columns(10)
238
+
239
+ This *will work*:
240
+
241
+ #page
242
+ +container
243
+
244
+ .inner
245
+ +columns(10)
246
+ #brand
247
+ +columns(8,10)
248
+
249
+ We're only worried about structure for now, so the header is done. Let's move
250
+ on to the navigation (#site-nav). The nav spans 2 columns, including the first
251
+ column in it's context.
252
+
253
+ #site-nav
254
+ +columns(2)
255
+ +alpha
256
+
257
+ Done. The #content (which includes both #description and #credit)
258
+ spans the remaining 8 columns, including the last one.
259
+
260
+ #content
261
+ +columns(8)
262
+ +omega
263
+
264
+ Done. #description spans 5; #credit spans 3 including the last. Both are in a
265
+ nested context of 8, which we now need to pass on:
266
+
267
+ #description
268
+ +columns(5,8)
269
+
270
+ #credit
271
+ +columns(3,8)
272
+ +omega(8)
273
+
274
+ Done and done. All we have left is the footer (#contentinfo) spanning the full
275
+ width, but with two blank columns on the left:
276
+
277
+ #contentinfo
278
+ +full
279
+ +prefix(2)
280
+
281
+ Nested in the footer are `.license` and `.styles`, so let's put them in place.
282
+ I'm going to say that each should match the width of the element visually
283
+ above it on the page. So .license will span 5 columns in its context of 8, and
284
+ .styles will span 3 including the last.
285
+
286
+ p.license
287
+ +columns(5,8)
288
+ p.styles
289
+ +columns(3,8)
290
+ +omega(8)
291
+
292
+ And we're done. That's it. That's what Susy does. The details of making it
293
+ pretty are an exercise for the reader, and have more to do with Compass than
294
+ Susy.
295
+
296
+ * [The resulting files](03_structure/src/) with [the site structure all in
297
+ place](03_structure/) (this should match what you have if you followed
298
+ along).
299
+
300
+ * [My final styles](../src/) for [the site](http://www.oddbird.net/susy/).
301
+