compass-edge 0.9.4 → 0.9.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+