carljm-compass-susy-plugin 0.3.1 → 0.4.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.
data/README.mkdn CHANGED
@@ -1,5 +1,5 @@
1
1
  Susy - Compass Plugin
2
- ================================
2
+ =====================
3
3
 
4
4
  Susy is a semantic CSS framework creator entirely native to
5
5
  [Compass](http://compass-style.org/).
@@ -23,101 +23,101 @@ Install
23
23
  sudo gem install ericam-compass-susy-plugin
24
24
 
25
25
  Create a Susy-based Compass Project
26
- ==================================
26
+ ===================================
27
27
 
28
28
  compass -r susy -f susy <project name>
29
29
 
30
30
  Then edit your `_base.sass`, `screen.sass` and `print.sass` files accordingly.
31
31
  A reset is added automatically.
32
32
 
33
- Customizing your Grid System
34
- ============================
33
+ Philosophy and Goals
34
+ --------------------
35
35
 
36
- Start in your `_base.sass` file. That's where you set all your defaults.
36
+ The method comes from [Natalie Downe](http://natbat.net/)'s "[CSS
37
+ Systems](http://natbat.net/2008/Sep/28/css-systems/)", but I'll cover it here.
37
38
 
38
- To create a grid system, set the `!grid_unit` (units that your grid is based
39
- in), `!total_cols` (total number of columns in your grid), `!col_width` (width
40
- of columns), and `!gutter_width` (width of gutters) variables in your
41
- `_base.sass`.
39
+ It is important for accessibility and usability that we are:
42
40
 
43
- Example:
41
+ * Responsive to text sizing: In order for our site to be accessible we need to
42
+ allow different font-sizes to be set by the client. In order to maintain
43
+ design integrity of proportions and line-lengths, the grid needs to respond
44
+ to those sizes.
44
45
 
45
- !grid_unit = "em"
46
- !total_cols = 10
47
- !col_width = 7
48
- !gutter_width = 1
49
- !side_gutter_width = 2
46
+ * Responsive to window sizing: In order to maintain usability across
47
+ platforms/monitors, our grid needs to respond to the size of the viewport.
48
+ This is mainly an issue as the viewport shrinks and we are given a
49
+ side-scroll bar. No one likes that. On the large end our design integrity
50
+ and line lengths are more important than taking up all the possible space.
50
51
 
51
- The default values are 16 columns, 4em column widths, and 1em gutters and side
52
- gutters that match the internal ones.
52
+ In order to achieve both we need to combine the best of the elastic (em-based)
53
+ and fluid (%-based) models. The solution is simple: First we build a fluid
54
+ grid, then place it inside an elastic shell, and apply a maximum width to that
55
+ shell so that it never exceeds the size of the viewport. It's simple in
56
+ theory, but daunting in practice, as you constantly have to adjust your math
57
+ based on the context.
53
58
 
54
- Of course, designing in `em`'s, you'll want to get your font sizes set to make
55
- this all meaningful. Do that by assigning a pixel value (without the units) to
56
- `!base_font_size_px` and `!base_line_height_px`. Susy will convert those to a
57
- percentage of the common browser default (16px) and apply them to your
58
- `grid-container`.
59
+ But Susy harnesses the power of Compass and Sass to do all the math for you.
59
60
 
60
- Example:
61
+ Grid Basics
62
+ ===========
61
63
 
62
- !base_font_size_px = 14
63
- !base_line_height_px = 16
64
+ * Set up your default grid values (total columns, column width, gutter
65
+ width, side gutter width), your base font size, and other style defaults
66
+ in `_base.sass`.
64
67
 
65
- The default values are 12px fonts with an 18px line-height.
68
+ * Create your grid in `screen.sass`: apply the `+susy` mixin to the `body`
69
+ element and the `+container` mixin to the element that contains the page
70
+ grid.
66
71
 
67
- `_base.sass` also has everything you need for setting default font families,
68
- colors to reuse throughout, and default styles for all those elements that
69
- ought have a default (but don't because of the reset).
72
+ * Use the `+columns` mixin to declare the width in columns of an element,
70
73
 
71
- Making Semantic Grids
72
- =====================
74
+ * Use `+alpha` and `+omega` to declare elements which include the first or
75
+ last column within their parent element (`+full` to declare both `+alpha`
76
+ and `+omega`).
73
77
 
74
- * Use the `+susy` mixin to get things ready, set your base font sizes and
75
- center your grid in the browser window. Change the alignment of your grid
76
- in the window with an optional `left | center | right` argument.
77
-
78
- * Use the `+container` mixin to declare your container
79
- element. Besides building the grid shell, this sets your horizontal
80
- margins to auto (for centered designs) and returns your
81
- text-alignment to "left". Change the internal text alignment with an
82
- optional `left | center | right` argument.
83
-
84
- * Use the `+columns` mixin to set the width (in columns) of a grid element.
85
- The first argument is the number of columns to span, the second (optional)
86
- argument is the width (in columns) of the containing element when nesting
87
- (defaults to the container's `!total_cols`). By default, the left margin
88
- is set to 0 and the right margin is set to the width of a gutter. Modify
89
- this for first and last elements with the `+alpha` and `+omega` mixins
90
- (below), or set larger margins using `+prefix` and `+suffix`.
91
-
92
- * Use the `+alpha` and `+omega` mixins to declare the first and last
93
- elements in a row, or inside a nested element. In the latter case, each of
94
- these mixins takes one argument, which is the size (in columns) of the
95
- containing element.
96
-
97
- * Use the `+prefix` and `+suffix` mixins with one argument to add that
98
- many grid columns as margin before or after a grid element. These
99
- mixins also take an optional second argument, the size in columns of
100
- the containing element when nested.
101
-
102
- Example:
103
-
104
- body
105
- +susy
78
+ * Use `+prefix` or `+suffix` to give the width (in columns) of an elements
79
+ left or right margin, or `+pad` to give both `+prefix` and `+suffix` at
80
+ once.
106
81
 
107
- #page
108
- +container
109
- #left-nav
110
- +columns(3)
111
- +alpha
112
- #main-content
113
- +prefix(2)
114
- +columns(4, 10)
115
- +omega
116
- .header
117
- +columns(1, 4)
118
- .article
119
- +columns(3, 4)
120
- +omega
82
+ * In nested contexts, all of these mixins take an extra final argument, the
83
+ width in columns of the parent (nesting) element.
84
+
85
+ * That's it for the basics! Here's a sample Susy grid layout:
86
+
87
+ body
88
+ +susy
89
+
90
+ #page
91
+ +container
92
+
93
+ #brand
94
+ +columns(8)
95
+ +pad(1,1)
96
+ +full
97
+ h1
98
+ +columns(5,8)
99
+ +pad(1,2,8)
100
+ +full(8)
101
+
102
+ #nav
103
+ +columns(2)
104
+ +alpha
105
+
106
+ #content
107
+ +columns(8)
108
+ +omega
109
+ #description
110
+ +columns(5,8)
111
+ +alpha(8)
112
+ #credit
113
+ +columns(3,8)
114
+ +omega(8)
115
+
116
+ Tutorial
117
+ ========
118
+
119
+ For more details, read [the tutorial](http://www.oddbird.net/susy/tutorial/).
120
+ It's also included with Susy in the docs/ folder.
121
121
 
122
122
  Extra Utility Mixins
123
123
  =====================
@@ -143,13 +143,14 @@ options, experimental (CSS3/proprietary) CSS, and more.
143
143
 
144
144
  And then the fun stuff:
145
145
 
146
- * `+opacity(!opacity)` adds cross-browser opacity settings (takes a range of 0
147
- - 1).
146
+ * `+opacity(!opacity)` adds cross-browser opacity settings (takes a range of
147
+ 0 to 1).
148
148
 
149
149
  * `+border-radius(!radius)` (`+border-bottom-left-radius` etc. all work) for
150
150
  rounded corners in supporting browsers.
151
151
 
152
- * `+box-sizing(!model)` for setting the box sizing model in supporting browsers.
152
+ * `+box-sizing(!model)` for setting the box sizing model in supporting
153
+ browsers.
153
154
 
154
155
  * `+box-shadow(!verticaloffset, !horizontaloffset, !blur, !color)` for
155
156
  box-shadow in webkit and CSS3.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{compass-susy-plugin}
5
- s.version = "0.3.1"
5
+ s.version = "0.4.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Eric Meyer"]
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = %q{Susy is a ground-up native Compass plugin grid system that takes full advantage of Sass' capabilities to remove the tedium from grid-based web design.}
11
11
  s.email = %q{eric@oddbird.net}
12
12
  s.extra_rdoc_files = ["lib/susy/compass_plugin.rb", "lib/susy/sass_extensions.rb", "lib/susy.rb", "README.mkdn"]
13
- s.files = ["lib/susy/compass_plugin.rb", "lib/susy/sass_extensions.rb", "lib/susy.rb", "Manifest", "Rakefile", "README.mkdn", "sass/susy/_grid.sass", "sass/susy/_utils.sass", "sass/susy/_text.sass", "sass/susy/_susy.sass", "templates/project/_base.sass", "templates/project/screen.sass", "templates/project/print.sass", "templates/project/ie.sass", "templates/project/manifest.rb", "VERSION", "LICENSE.txt", "compass-susy-plugin.gemspec"]
13
+ s.files = ["lib/susy/compass_plugin.rb", "lib/susy/sass_extensions.rb", "lib/susy.rb", "Manifest", "Rakefile", "README.mkdn", "sass/susy/_grid.sass", "sass/susy/_utils.sass", "sass/susy/_text.sass", "sass/susy/_susy.sass", "templates/project/_base.sass", "templates/project/screen.sass", "templates/project/print.sass", "templates/project/ie.sass", "templates/project/manifest.rb", "VERSION", "LICENSE.txt", "docs/tutorial/index.mkdn", "docs/tutorial/figures/susy_element.png", "docs/tutorial/figures/susy_grid.png", "compass-susy-plugin.gemspec"]
14
14
  s.homepage = %q{http://github.com/ericam/compass-susy-plugin}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Compass-Susy-plugin", "--main", "README.mkdn"]
16
16
  s.require_paths = ["lib"]
Binary file
@@ -0,0 +1,336 @@
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), and `!gutter_width` (width of gutters) variables.
71
+
72
+ The default values are 16 columns, 4em column widths, 1em gutters and side
73
+ gutters that match the internal ones. But we want a 10 column grid, with 5em
74
+ columns, 2em gutters and 1em side-gutters.
75
+
76
+ Take a look at our target site again, this time [with a grid
77
+ overlay](01_target/).
78
+
79
+ So we'll set our grid like this:
80
+
81
+ !grid_unit = "em"
82
+ !total_cols = 10
83
+ !col_width = 5
84
+ !gutter_width = 2
85
+ !side_gutter_width = 1
86
+
87
+ Of course, designing in em's, we'll want to get your font sizes set to make
88
+ this all meaningful. Do that by assigning a pixel value (without the units) to
89
+ `!base_font_size_px` and `!base_line_height_px`. Susy will convert those to a
90
+ percentage of the common browser default (16px) and apply them to your grid.
91
+
92
+ The default values here are 12px fonts with an 18px line-height. For us:
93
+
94
+ !base_font_size_px = 14
95
+ !base_line_height_px = 21
96
+
97
+ `_base.sass` also has everything you need for setting default font families,
98
+ colors to reuse throughout, and default styles for all those elements that
99
+ ought have a default (but don't because of the reset).
100
+
101
+ We can leave most of that as it is for now, but let's fill in a few of the
102
+ most important defaults. We want some colors to choose from, and defaults for
103
+ links and paragraphs.
104
+
105
+ So let's add some colors:
106
+
107
+ !text = #332016
108
+ !light = #CC8866
109
+ !links = #4CAAC0
110
+
111
+ And style the links:
112
+
113
+ a
114
+ &:link, &:visited
115
+ :color= !links
116
+ :text-decoration none
117
+ &:focus, &:hover, &:active
118
+ :color= !light
119
+ :border-bottom
120
+ :width .1429em
121
+ :style dashed
122
+
123
+ (`.1429em` is just an approximation of `2px` in terms of our em units.)
124
+
125
+ And we'll add a bit of margin to our paragraphs:
126
+
127
+ p
128
+ :margin-bottom 1.5em
129
+
130
+ That's it. You can look around at the other defaults and set what you like, or
131
+ juse use [mine](../src/_base.sass).
132
+
133
+
134
+ Making Semantic Grids
135
+ ---------------------
136
+
137
+ First the explanation:
138
+
139
+ * Use the `+susy` mixin to get things ready, set your base font sizes and
140
+ center your grid in the browser window. Change the alignment of your grid in
141
+ the window with an optional `left | center | right` argument.
142
+
143
+ * Use the `+container` mixin to declare your container element. Besides
144
+ building the grid shell, this sets your horizontal margins to auto (for
145
+ centered designs) and returns your text-alignment to "left". Change the
146
+ internal text alignment with an optional `left | center | right` argument.
147
+
148
+ * Use the `+columns` mixin to set the width (in columns) of a grid element.
149
+ The first argument is the number of columns to span, the second (optional)
150
+ argument is the width (in columns) of the containing element when
151
+ nesting. If the element is not nested (its parent is the grid container),
152
+ don't pass a second argument.
153
+
154
+ * Use the `+alpha` and `+omega` mixins to declare the first and last elements
155
+ in a row, or inside a nested element. In the latter case, each of these
156
+ mixins takes one argument, which is the size (in columns) of the containing
157
+ element.
158
+
159
+ * Use the `+prefix` and `+suffix` mixins with one argument to add that many
160
+ grid columns as padding before or after a grid element. These mixins also
161
+ take an optional second argument, the size in columns of the containing
162
+ element when nested.
163
+
164
+ Then we do it. In `screen.sass`, we'll start by declaring our intent to use
165
+ Susy, and our container:
166
+
167
+ body
168
+ +susy
169
+
170
+ #page
171
+ +container
172
+
173
+ That wasn't hard. You might ask why I didn't nest `#page` inside of `body`, as
174
+ is so tempting and easy with Sass. It's part personal preference and part
175
+ Natalie Downe's voice in my head. Don't nest when you don't need to. It keeps
176
+ your output code much cleaner.
177
+
178
+ While we're at it, why don't we get the fonts and text colors going right from
179
+ the start?
180
+
181
+ #page
182
+ +container
183
+ +sans-family
184
+ :color= !text
185
+
186
+ Perfect. Take a look at [the results](02_container/). So far we have:
187
+
188
+ * Reset everything. This happens by default in the background.
189
+
190
+ * Added a few of our own replacement default styles, like links, paragraphs,
191
+ fonts and colors.
192
+
193
+ * Created an elastic container for our grid at 70em that goes fluid for small
194
+ windows (try it!).
195
+
196
+
197
+ Laying Out The Components
198
+ --------------------------
199
+
200
+ It's time to lay out our grid components. We'll just work our way through the
201
+ DOM, starting with our brand header (#brand). We can refer back to our [target
202
+ site with a grid overlay](01_target/) to see what we need. Looks like our
203
+ branding gets an entire row to itself, with the content starting one row
204
+ in. For the sake of argument, let's say we want the header content contained
205
+ within the middle 8 columns - one in from each end. That means it will be an 8
206
+ column element, with 1 column prefixed and one suffixed, for a total of 10
207
+ columns - the full width.
208
+
209
+ #brand
210
+ +columns(8)
211
+ +prefix(1)
212
+ +suffix(1)
213
+
214
+ Since it spans both the first and last columns in the context we'll need to
215
+ add:
216
+
217
+ +alpha
218
+ +omega
219
+
220
+ Or we would have to, but there are several shortcuts available to us. To
221
+ declare something as both alpha and omega we can just declare it as full:
222
+
223
+ +full
224
+
225
+ There is also a shorcut for prefix and suffix additions (+pad), so we can
226
+ simplify down to:
227
+
228
+ #brand
229
+ +columns(8)
230
+ +pad(1,1)
231
+ +full
232
+
233
+ Since we don't have an image in there yet, let's move the text over to line up
234
+ with the future placement of our main content area. By turning the `h1` link
235
+ into a grid element and prefixing a padding of one column, we can move the
236
+ text without any effect on the image that will replace it (using the Compass
237
+ utility `+replace-text`, though I'll leave the implementation that as an
238
+ exercise for you to figure out). To line it all up with the content below it,
239
+ we'll assign it 5 columns in a context of 8, with the extra 3 split between a
240
+ prefix of 1 and a suffix of 2 - giving it a full span.
241
+
242
+ h1 a
243
+ +columns(5,8)
244
+ +pad(1,2,8)
245
+ +full(8)
246
+
247
+ There is one 'gotcha' in the way Susy handles context. Direct children of your
248
+ container (such as #brand in this case) *must not declare a context*. If you
249
+ do, your side-gutters will be ignored. At every nested layer below that, even
250
+ if the context hasn't changed, you *must declare a context* or it will try to
251
+ add side-gutters again. That means even if you have one nested element
252
+ wrapping the rest at full width and not changing the context, that wrapper
253
+ does not get a context but its descendants do, even where that context is the
254
+ same as the full page.
255
+
256
+ For example, these *will not work*:
257
+
258
+ #page
259
+ +container
260
+ .inner
261
+ +columns(10,10)
262
+
263
+ #page
264
+ +container
265
+ .inner
266
+ +columns(10)
267
+ #brand
268
+ +columns(10)
269
+
270
+ This *will work*:
271
+
272
+ #page
273
+ +container
274
+ .inner
275
+ +columns(10)
276
+ #brand
277
+ +columns(10,10)
278
+
279
+ Remember that if your side gutters or columns ever seem the wrong size.
280
+
281
+ We're only worried about structure for now, so the header is done. Let's move
282
+ on to the navigation (#nav). The nav spans 2 columns, including the first
283
+ column in it's context.
284
+
285
+ #nav
286
+ +columns(2)
287
+ +alpha
288
+
289
+ Done. The content (#content, which includes both #description and #credit)
290
+ spans the remaining 8 columns, including the last one.
291
+
292
+ #content
293
+ +columns(8)
294
+ +omega
295
+
296
+ Done. #description spans 5, including the first; #credit spans 3 including
297
+ the last. Both are in a nested context of 8, which we now need to pass on:
298
+
299
+ #description
300
+ +columns(5,8)
301
+ +alpha(8)
302
+
303
+ #credit
304
+ +columns(3,8)
305
+ +omega(8)
306
+
307
+ Done and done. All we have left is the footer (#site-info) spanning the full
308
+ width, but only using the right 8 columns:
309
+
310
+ #site-info
311
+ +columns(8)
312
+ +prefix(2)
313
+ +full
314
+
315
+ Nested in the footer are `.license` and `.styles`, so let's put them in
316
+ place. I'm going to say that each should match the width of the element
317
+ visually above it on the page. So .license will span 5 columns including the
318
+ first in its context of 8, and .styles will span 3 including the last.
319
+
320
+ p.license
321
+ +columns(5,8)
322
+ +alpha(8)
323
+ p.styles
324
+ +columns(3,8)
325
+ +omega(8)
326
+
327
+ And we're done. That's it. That's what Susy does. The details of making it
328
+ pretty are left as an exercise for the reader, and have more to do with
329
+ Compass than Susy.
330
+
331
+ * [The resulting files](03_structure/src/) with [the site structure all in
332
+ place](03_structure/) (this should match what you have if you followed
333
+ along).
334
+
335
+ * [My final styles](../src/) for [the site](http://www.oddbird.net/susyss/).
336
+
data/sass/susy/_grid.sass CHANGED
@@ -51,7 +51,7 @@
51
51
  :padding-right= columns(!n, !context) + gutter(!context) + "%"
52
52
 
53
53
  //**
54
- set on the first column of a row to take side-gutters into account
54
+ set on the first element of a row to take side-gutters into account
55
55
  - must override `!nested` for nested columns
56
56
  =alpha(!nested = false)
57
57
  @if !nested
@@ -60,10 +60,42 @@
60
60
  :margin-left= side_gutter() + "%"
61
61
 
62
62
  //**
63
- set on the last column of a row to take side-gutters into account
63
+ set on the last element of a row to take side-gutters into account
64
64
  - must override `!nested` for nested columns
65
- =omega(!nested = false)
66
- @if !nested
67
- :margin-right 0
65
+ =omega(!n = false)
66
+ @if !n
67
+ :margin-right= 0
68
68
  @else
69
69
  :margin-right= side_gutter() + "%"
70
+
71
+ //**
72
+ use to override +omega in ie.sass for IE6-7 to handle sub-pixel rounding issues
73
+ - must override `!nested` for nested columns
74
+ - must override `!right` for right-floated omega elements
75
+ =ie-omega(!nested = false, !right = false)
76
+ @if !right
77
+ @if !nested
78
+ :margin-right 0
79
+ @else
80
+ :margin-right= side_gutter() + "%"
81
+ :margin-left -1%
82
+ @else
83
+ @if !nested
84
+ :margin-right= -1%
85
+ @else
86
+ :margin-right= side_gutter() - 1 + "%"
87
+
88
+
89
+ //**
90
+ set on an element that will span it's entire context
91
+ =full(!n = false)
92
+ +alpha(!n)
93
+ +omega(!n)
94
+
95
+ //**
96
+ set as shortcut for prefix and suffix
97
+ =pad(!p = 0, !s = 0, !c = false)
98
+ @if !p != 0
99
+ +prefix(!p,!c)
100
+ @if !s != 0
101
+ +suffix(!s,!c)
@@ -5,7 +5,7 @@
5
5
  then adds a grid image of your choosing
6
6
  =show-grid(!src)
7
7
  :background
8
- :image= "url("!src")"
8
+ :image= image_url(!src)
9
9
  :repeat repeat
10
10
  :position top left
11
11
  *
@@ -50,12 +50,25 @@
50
50
  // EXPERIMENTAL
51
51
 
52
52
  //**
53
- transparency for everyone!
54
- =opacity(!o = 1)
55
- :filter= "alpha(opacity=" + (!o*100) + ")"
56
- :-moz-opacity= !o
57
- :-khtml-opacity= !o
58
- :opacity= !o
53
+ [Opacity rules based on those in Compass Core Edge as of 7.18.09]
54
+ - These will be removed from Susy once they enter a major Compass release.
55
+ Provides cross-browser css opacity.
56
+ @param !opacity
57
+ A number between 0 and 1, where 0 is transparent and 1 is opaque.
58
+ =opacity(!opacity)
59
+ :opacity= !opacity
60
+ :-moz-opacity= !opacity
61
+ :-khtml-opacity= !opacity
62
+ :-ms-filter= "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + round(!opacity*100) + ")"
63
+ :filter= "alpha(opacity=" + round(!opacity*100) + ")"
64
+
65
+ // Make an element completely transparent.
66
+ =transparent
67
+ +opacity(0)
68
+
69
+ // Make an element completely opaque.
70
+ =opaque
71
+ +opacity(1)
59
72
 
60
73
  //**
61
74
  rounded corners for Mozilla, Webkit and the future
@@ -67,37 +80,25 @@
67
80
  /* CSS3
68
81
  border-radius = !r
69
82
 
70
- =border-top-left-radius(!tl)
83
+ =border-corner-radius(!vert, !horz, !r)
71
84
  /* Mozilla (FireFox)
72
- -moz-border-radius-topleft= !tl
85
+ -moz-border-radius-#{!vert}#{!horz}= !r
73
86
  /* Webkit (Safari, Chrome)
74
- -webkit-border-top-left-radius= !tl
87
+ -webkit-border-#{!vert}-#{!horz}-radius= !r
75
88
  /* CSS3
76
- border-top-left-radius= !tl
89
+ border-#{!vert}-#{!horz}-radius= !r
77
90
 
78
- =border-top-right-radius(!tr)
79
- /* Mozilla (FireFox)
80
- -moz-border-radius-topright= !tr
81
- /* Webkit (Safari, Chrome)
82
- -webkit-border-top-right-radius= !tr
83
- /* CSS3
84
- border-top-right-radius= !tr
91
+ =border-top-left-radius(!r)
92
+ +border-corner-radius("top", "left", !r)
85
93
 
86
- =border-bottom-right-radius(!br)
87
- /* Mozilla (FireFox)
88
- -moz-border-radius-bottomright= !br
89
- /* Webkit (Safari, Chrome)
90
- -webkit-border-bottom-right-radius= !br
91
- /* CSS3
92
- border-bottom-right-radius= !br
94
+ =border-top-right-radius(!r)
95
+ +border-corner-radius("top", "right", !r)
93
96
 
94
- =border-bottom-left-radius(!bl)
95
- /* Mozilla (FireFox)
96
- -moz-border-radius-bottomleft= !bl
97
- /* Webkit (Safari, Chrome)
98
- -webkit-border-bottom-left-radius= !bl
99
- /* CSS3
100
- border-bottom-left-radius= !bl
97
+ =border-bottom-right-radius(!r)
98
+ +border-corner-radius("bottom", "right", !r)
99
+
100
+ =border-bottom-left-radius(!r)
101
+ +border-corner-radius("bottom", "left", !r)
101
102
 
102
103
  //**
103
104
  change the box model for Mozilla, Webkit, IE8 and the future
@@ -4,11 +4,6 @@
4
4
  // oddbird.
5
5
  //**
6
6
 
7
-
8
- /* RESET STYLES
9
- @import compass/reset.sass
10
-
11
-
12
7
  //**
13
8
  GRID
14
9
  un-comment and override these values as needed for your grid layout
@@ -81,7 +76,6 @@ p
81
76
  :list-style disc
82
77
  :margin 0 1.5em 1.5em 1.5em
83
78
 
84
-
85
79
  ol
86
80
  +list-default("ol")
87
81
 
@@ -5,4 +5,6 @@
5
5
  <link href="/stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
6
6
  <![endif]-->
7
7
 
8
+ /* @group defaults */
8
9
  @import base.sass
10
+ /* @end */
@@ -2,5 +2,11 @@
2
2
  Welcome to Susy. Use this file to define print styles.
3
3
  Import this file using the following HTML or equivalent:
4
4
  <link href="/stylesheets/print.css" media="print" rel="stylesheet" type="text/css" />
5
-
6
- @import base.sass
5
+
6
+ /* @group reset */
7
+ @import compass/reset.sass
8
+ /* @end */
9
+
10
+ /* @group defaults */
11
+ @import base.sass
12
+ /* @end */
@@ -3,23 +3,51 @@
3
3
  Import this file using the following HTML or equivalent:
4
4
  <link href="/stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css" />
5
5
 
6
+ /* @group reset */
7
+ @import compass/reset.sass
8
+ /* @end */
9
+
10
+ /* @group defaults */
6
11
  @import base.sass
12
+ /* @end */
13
+
14
+
15
+ /* @group STRUCTURE */
16
+
17
+
7
18
 
8
- /* STRUCTURE
19
+ /* @end */
9
20
 
10
21
 
11
- /* COMPONENTS BY TYPE
22
+ /* @group COMPONENTS by type */
23
+
24
+
25
+
26
+ /* @end */
27
+
12
28
 
29
+ /* @group OVERRIDES by content */
13
30
 
14
- /* COMPONENTS BY CONTENT
31
+
32
+
33
+ /* @end */
15
34
 
16
35
 
17
- /* COMPONENTS BY PAGE
36
+ /* @group OVERRIDES by page */
37
+
38
+
18
39
 
40
+ /* @end */
19
41
 
20
- /* DEBUG
21
- uncomment, adjust and use for debugging
42
+
43
+ /* @group DEBUG */
44
+
45
+ /* uncomment, adjust and use for debugging
22
46
 
23
- /**
47
+ /*
24
48
  #page
25
- +show-grid("../images/grid.gif")
49
+ +show-grid("../images/grid.png")
50
+ div
51
+ :background rgba(0,0,0,.125)
52
+
53
+ /* @end */
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carljm-compass-susy-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Meyer
@@ -61,6 +61,9 @@ files:
61
61
  - templates/project/manifest.rb
62
62
  - VERSION
63
63
  - LICENSE.txt
64
+ - docs/tutorial/index.mkdn
65
+ - docs/tutorial/figures/susy_element.png
66
+ - docs/tutorial/figures/susy_grid.png
64
67
  - compass-susy-plugin.gemspec
65
68
  has_rdoc: false
66
69
  homepage: http://github.com/ericam/compass-susy-plugin