compass-edge 0.9.5.0 → 0.10.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (227) hide show
  1. data/CHANGELOG.markdown +0 -153
  2. data/README.markdown +2 -12
  3. data/REVISION +1 -1
  4. data/Rakefile +2 -37
  5. data/VERSION.yml +1 -1
  6. data/examples/blueprint_default/index.html.haml +3 -3
  7. data/examples/blueprint_default/parts/forms.html.haml +0 -2
  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/src/utilities.sass +2 -2
  17. data/examples/downloader.rb +2 -2
  18. data/lib/compass/app_integration.rb +0 -21
  19. data/lib/compass/app_integration/rails.rb +0 -18
  20. data/lib/compass/app_integration/rails/configuration_defaults.rb +0 -16
  21. data/lib/compass/app_integration/rails/installer.rb +6 -6
  22. data/lib/compass/app_integration/stand_alone.rb +1 -20
  23. data/lib/compass/app_integration/stand_alone/configuration_defaults.rb +1 -5
  24. data/lib/compass/app_integration/stand_alone/installer.rb +17 -29
  25. data/lib/compass/commands.rb +2 -2
  26. data/lib/compass/commands/create_project.rb +1 -10
  27. data/lib/compass/commands/generate_grid_background.rb +1 -1
  28. data/lib/compass/commands/help.rb +7 -34
  29. data/lib/compass/commands/installer_command.rb +11 -15
  30. data/lib/compass/commands/project_base.rb +2 -2
  31. data/lib/compass/commands/update_project.rb +1 -51
  32. data/lib/compass/commands/validate_project.rb +3 -59
  33. data/lib/compass/commands/watch_project.rb +2 -4
  34. data/lib/compass/commands/write_configuration.rb +3 -84
  35. data/lib/compass/compiler.rb +4 -13
  36. data/lib/compass/configuration.rb +18 -23
  37. data/lib/compass/configuration/adapters.rb +1 -1
  38. data/lib/compass/configuration/data.rb +2 -5
  39. data/lib/compass/configuration/defaults.rb +1 -32
  40. data/lib/compass/configuration/helpers.rb +10 -47
  41. data/lib/compass/configuration/inheritance.rb +1 -1
  42. data/lib/compass/configuration/serialization.rb +2 -2
  43. data/lib/compass/errors.rb +1 -4
  44. data/lib/compass/exec.rb +0 -1
  45. data/lib/compass/exec/project_options_parser.rb +0 -4
  46. data/lib/compass/frameworks.rb +1 -40
  47. data/lib/compass/frameworks/blueprint/stylesheets/_blueprint.sass +1 -29
  48. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_ie.sass +2 -2
  49. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_print.sass +4 -1
  50. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_reset.sass +2 -57
  51. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_screen.sass +29 -2
  52. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass +84 -2
  53. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass +33 -2
  54. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass +9 -2
  55. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +82 -2
  56. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +55 -2
  57. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +178 -2
  58. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass +58 -2
  59. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass +44 -2
  60. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass +140 -2
  61. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +56 -2
  62. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +122 -2
  63. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +47 -2
  64. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +160 -2
  65. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass +37 -2
  66. data/lib/compass/frameworks/blueprint/templates/buttons/buttons.sass +2 -2
  67. data/lib/compass/frameworks/blueprint/templates/buttons/manifest.rb +0 -12
  68. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons.sass +1 -1
  69. data/lib/compass/frameworks/blueprint/templates/link_icons/manifest.rb +0 -13
  70. data/lib/compass/frameworks/blueprint/templates/project/manifest.rb +0 -24
  71. data/lib/compass/frameworks/blueprint/templates/project/screen.sass +7 -1
  72. data/lib/compass/frameworks/blueprint/templates/project/welcome.html.haml +1 -9
  73. data/lib/compass/frameworks/compass/stylesheets/_compass.sass +1 -2
  74. data/lib/compass/frameworks/compass/stylesheets/compass/_utilities.sass +1 -0
  75. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_css3.sass +6 -0
  76. data/lib/compass/frameworks/compass/stylesheets/compass/{css3 → utilities/css3}/_border_radius.sass +0 -0
  77. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_box_shadow.sass +12 -0
  78. data/lib/compass/frameworks/compass/stylesheets/compass/{css3 → utilities/css3}/_box_sizing.sass +0 -0
  79. data/lib/compass/frameworks/compass/stylesheets/compass/{css3 → utilities/css3}/_columns.sass +0 -0
  80. data/lib/compass/frameworks/compass/stylesheets/compass/{css3 → utilities/css3}/_inline_block.sass +0 -0
  81. data/lib/compass/frameworks/compass/stylesheets/compass/{css3 → utilities/css3}/_opacity.sass +0 -0
  82. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass +2 -2
  83. data/lib/compass/frameworks/compass/templates/ellipsis/manifest.rb +1 -26
  84. data/lib/compass/frameworks/compass/templates/extension/manifest.rb +2 -16
  85. data/lib/compass/frameworks/compass/templates/project/manifest.rb +0 -1
  86. data/lib/compass/grid_builder.rb +1 -1
  87. data/lib/compass/installers.rb +1 -1
  88. data/lib/compass/installers/base.rb +52 -13
  89. data/lib/compass/installers/manifest.rb +1 -33
  90. data/lib/compass/logger.rb +2 -28
  91. data/lib/compass/sass_extensions/functions.rb +1 -3
  92. data/lib/compass/sass_extensions/functions/enumerate.rb +2 -2
  93. data/lib/compass/sass_extensions/functions/inline_image.rb +1 -22
  94. data/lib/compass/sass_extensions/functions/urls.rb +0 -20
  95. data/lib/compass/sass_extensions/monkey_patches.rb +2 -2
  96. data/lib/compass/validator.rb +3 -2
  97. data/lib/vendor/fssm.rb +6 -19
  98. data/lib/vendor/fssm/backends/fsevents.rb +60 -19
  99. data/lib/vendor/fssm/backends/polling.rb +18 -20
  100. data/lib/vendor/fssm/ext.rb +0 -30
  101. data/lib/vendor/fssm/monitor.rb +6 -10
  102. data/lib/vendor/fssm/path.rb +21 -24
  103. data/lib/vendor/fssm/state.rb +29 -37
  104. data/lib/vendor/fssm/support.rb +7 -3
  105. data/test/command_line_helper.rb +4 -12
  106. data/test/command_line_test.rb +2 -2
  107. data/test/compass_test.rb +4 -14
  108. data/test/configuration_test.rb +5 -5
  109. data/test/fixtures/stylesheets/blueprint/css/typography.css +3 -5
  110. data/test/fixtures/stylesheets/blueprint/sass/screen.sass +1 -1
  111. data/test/fixtures/stylesheets/blueprint/sass/typography.sass +2 -2
  112. data/test/fixtures/stylesheets/compass/css/print.css +8 -2
  113. data/test/fixtures/stylesheets/compass/css/reset.css +1 -1
  114. data/test/fixtures/stylesheets/image_urls/css/screen.css +0 -2
  115. data/test/io_helper.rb +1 -18
  116. data/test/rails_integration_test.rb +41 -3
  117. data/test/sass_extensions_test.rb +2 -2
  118. data/test/test_helper.rb +0 -1
  119. metadata +9 -124
  120. data/examples/compass/bootstrap.rb +0 -3
  121. data/examples/compass/extensions/yui/stylesheets/_yui.sass +0 -7
  122. data/examples/compass/extensions/yui/stylesheets/yui/modules/_base.sass +0 -70
  123. data/examples/compass/extensions/yui/stylesheets/yui/modules/_fonts.sass +0 -45
  124. data/examples/compass/extensions/yui/stylesheets/yui/modules/_grids.sass +0 -385
  125. data/examples/compass/extensions/yui/stylesheets/yui/modules/_reset.sass +0 -61
  126. data/examples/compass/extensions/yui/templates/project/manifest.rb +0 -1
  127. data/examples/compass/extensions/yui/templates/project/screen.sass +0 -4
  128. data/examples/css3/config.rb +0 -6
  129. data/examples/css3/extensions/fancy-fonts/templates/project/Vtks Revolt.ttf +0 -0
  130. data/examples/css3/extensions/fancy-fonts/templates/project/angelina.ttf +0 -0
  131. data/examples/css3/extensions/fancy-fonts/templates/project/fancy-fonts.sass +0 -7
  132. data/examples/css3/extensions/fancy-fonts/templates/project/manifest.rb +0 -5
  133. data/examples/css3/images/fresh-peas.jpg +0 -0
  134. data/examples/css3/index.html.haml +0 -55
  135. data/examples/css3/src/_base.sass +0 -14
  136. data/examples/css3/src/fancy-fonts.sass +0 -7
  137. data/examples/css3/src/gradient.sass +0 -10
  138. data/examples/css3/src/main.sass +0 -80
  139. data/examples/css3/stylesheets/fonts/Vtks Revolt.ttf +0 -0
  140. data/examples/css3/stylesheets/fonts/angelina.ttf +0 -0
  141. data/examples/susy/bootstrap.rb +0 -3
  142. data/examples/susy/config.rb +0 -9
  143. data/examples/susy/extensions/susy/LICENSE.txt +0 -28
  144. data/examples/susy/extensions/susy/README.mkdn +0 -235
  145. data/examples/susy/extensions/susy/compass-susy-plugin.gemspec +0 -35
  146. data/examples/susy/extensions/susy/docs/tutorial/build.sh +0 -141
  147. data/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/_defaults.sass +0 -100
  148. data/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/screen.sass +0 -98
  149. data/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/_defaults.sass +0 -147
  150. data/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/screen.sass +0 -19
  151. data/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/_defaults.sass +0 -147
  152. data/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/screen.sass +0 -48
  153. data/examples/susy/extensions/susy/docs/tutorial/code/_common/config.rb +0 -14
  154. data/examples/susy/extensions/susy/docs/tutorial/code/_common/images/grid.png +0 -0
  155. data/examples/susy/extensions/susy/docs/tutorial/code/_common/images/susy_logo.png +0 -0
  156. data/examples/susy/extensions/susy/docs/tutorial/code/_common/src/_base.sass +0 -63
  157. data/examples/susy/extensions/susy/docs/tutorial/code/_tools/Markdown.pl +0 -1450
  158. data/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass +0 -100
  159. data/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass +0 -91
  160. data/examples/susy/extensions/susy/docs/tutorial/figures/susy_element.png +0 -0
  161. data/examples/susy/extensions/susy/docs/tutorial/figures/susy_grid.png +0 -0
  162. data/examples/susy/extensions/susy/docs/tutorial/index.mkdn +0 -301
  163. data/examples/susy/extensions/susy/lib/susy.rb +0 -2
  164. data/examples/susy/extensions/susy/lib/susy/compass_plugin.rb +0 -5
  165. data/examples/susy/extensions/susy/lib/susy/sass_extensions.rb +0 -79
  166. data/examples/susy/extensions/susy/sass/susy/_grid.sass +0 -128
  167. data/examples/susy/extensions/susy/sass/susy/_reset.sass +0 -7
  168. data/examples/susy/extensions/susy/sass/susy/_susy.sass +0 -23
  169. data/examples/susy/extensions/susy/sass/susy/_text.sass +0 -15
  170. data/examples/susy/extensions/susy/sass/susy/_utils.sass +0 -81
  171. data/examples/susy/extensions/susy/templates/project/_base.sass +0 -62
  172. data/examples/susy/extensions/susy/templates/project/_defaults.sass +0 -147
  173. data/examples/susy/extensions/susy/templates/project/ie.sass +0 -9
  174. data/examples/susy/extensions/susy/templates/project/manifest.rb +0 -5
  175. data/examples/susy/extensions/susy/templates/project/print.sass +0 -7
  176. data/examples/susy/extensions/susy/templates/project/screen.sass +0 -44
  177. data/examples/susy/src/_base.sass +0 -62
  178. data/examples/susy/src/_defaults.sass +0 -148
  179. data/examples/susy/src/screen.sass +0 -114
  180. data/features/command_line.feature +0 -226
  181. data/features/extensions.feature +0 -20
  182. data/features/step_definitions/command_line_steps.rb +0 -223
  183. data/features/step_definitions/extension_steps.rb +0 -13
  184. data/lib/compass/commands/interactive.rb +0 -61
  185. data/lib/compass/commands/project_stats.rb +0 -162
  186. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.sass +0 -84
  187. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_colors.sass +0 -33
  188. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_debug.sass +0 -9
  189. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass +0 -82
  190. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_form.sass +0 -56
  191. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_grid.sass +0 -179
  192. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.sass +0 -58
  193. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass +0 -44
  194. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.sass +0 -141
  195. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.sass +0 -123
  196. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass +0 -49
  197. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_typography.sass +0 -162
  198. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.sass +0 -37
  199. data/lib/compass/frameworks/compass/stylesheets/compass/_css3.sass +0 -14
  200. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_clip.sass +0 -16
  201. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_origin.sass +0 -18
  202. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_size.sass +0 -14
  203. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_box_shadow.sass +0 -20
  204. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_font_face.sass +0 -31
  205. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_gradient.sass +0 -40
  206. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_text_shadow.sass +0 -15
  207. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_transform.sass +0 -60
  208. data/lib/compass/frameworks/compass/stylesheets/compass/css3/_transition.sass +0 -57
  209. data/lib/compass/frameworks/compass/templates/project/USAGE.markdown +0 -32
  210. data/lib/compass/installers/bare_installer.rb +0 -58
  211. data/lib/compass/installers/manifest_installer.rb +0 -59
  212. data/lib/compass/sass_extensions/functions/color_stop.rb +0 -10
  213. data/lib/compass/sass_extensions/functions/font_files.rb +0 -11
  214. data/lib/compass/sass_extensions/monkey_patches/traversal.rb +0 -23
  215. data/lib/compass/stats.rb +0 -92
  216. data/lib/vendor/fssm/cache.rb +0 -193
  217. data/lib/vendor/fssm/fsevents.rb +0 -129
  218. data/lib/vendor/fssm/tree.rb +0 -176
  219. data/test/fixtures/stylesheets/relative/assets/images/testing.png +0 -0
  220. data/test/fixtures/stylesheets/relative/config.rb +0 -9
  221. data/test/fixtures/stylesheets/relative/css/ie.css +0 -1
  222. data/test/fixtures/stylesheets/relative/css/print.css +0 -1
  223. data/test/fixtures/stylesheets/relative/css/screen.css +0 -1
  224. data/test/fixtures/stylesheets/relative/sass/ie.sass +0 -6
  225. data/test/fixtures/stylesheets/relative/sass/print.sass +0 -6
  226. data/test/fixtures/stylesheets/relative/sass/screen.sass +0 -3
  227. data/test/rails_helper.rb +0 -40
@@ -1,100 +0,0 @@
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 */
@@ -1,91 +0,0 @@
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 */
@@ -1,301 +0,0 @@
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
-