diff --git a/source/assets/css/components/_sass-syntax-switcher.scss b/source/assets/css/components/_sass-syntax-switcher.scss
index 7d95498..b0b3939 100644
--- a/source/assets/css/components/_sass-syntax-switcher.scss
+++ b/source/assets/css/components/_sass-syntax-switcher.scss
@@ -11,6 +11,8 @@
top: 4.78rem;
margin-right: -1em;
+ a { border: 0; }
+
a:focus {
outline: 0px !important;
border:none !important;
diff --git a/source/guide.html.haml b/source/guide.html.haml
index eff48fe..6895ef5 100644
--- a/source/guide.html.haml
+++ b/source/guide.html.haml
@@ -19,6 +19,7 @@ introduction: >
- [Mixins](#topic-6)
- [Inheritance](#topic-7)
- [Operators](#topic-8)
+ - [Lists](#topic-9)
%section.sl-l-section.sl-l-section--small#topic-1
:markdown
@@ -211,10 +212,10 @@ introduction: >
background-color: #efefef;
}
-:markdown
- Notice we're using `@import 'reset';` in the `base.scss` file. When you
- import a file you don't need to include the file extension `.scss`. Sass
- is smart and will figure it out for you.
+ :markdown
+ Notice we're using `@import 'reset';` in the `base.scss` file. When you
+ import a file you don't need to include the file extension `.scss`. Sass
+ is smart and will figure it out for you.
%section.sl-l-section.sl-l-section--small#topic-6
:markdown
@@ -562,3 +563,206 @@ introduction: >
We've created a very simple fluid grid, based on 960px. Operations in Sass
let us do something like take pixel values and convert them to percentages
without much hassle.
+
+%section.sl-l-section.sl-l-section--small#topic-8
+ :markdown
+ ## Operators
+
+ Doing math in your CSS is very helpful. Sass has a handful of standard
+ math operators like `+`, `-`, `*`, `/`, and `%`. In our example we're
+ going to do some simple math to calculate widths for an `aside` &
+ `article`.
+
+ - example do
+ :plain
+ .container {
+ width: 100%;
+ }
+
+ article[role="main"] {
+ float: left;
+ width: 600px / 960px * 100%;
+ }
+
+ aside[role="complementary"] {
+ float: right;
+ width: 300px / 960px * 100%;
+ }
+ ===
+ .container
+ width: 100%
+
+
+ article[role="main"]
+ float: left
+ width: 600px / 960px * 100%
+
+
+ aside[role="complementary"]
+ float: right
+ width: 300px / 960px * 100%
+
+ :markdown
+ We've created a very simple fluid grid, based on 960px. Operations in Sass
+ let us do something like take pixel values and convert them to percentages
+ without much hassle.
+
+ ## Mixins
+
+ Some things in CSS are a bit tedious to write, especially with CSS3 and
+ the many vendor prefixes that exist. A mixin lets you make groups of CSS
+ declarations that you want to reuse throughout your site. You can even
+ pass in values to make your mixin more flexible. A good use of a mixin is
+ for vendor prefixes. Here's an example for transform
.
+
+ - example do
+ :plain
+ @mixin transform($property) {
+ -webkit-transform: $property;
+ -ms-transform: $property;
+ transform: $property;
+ }
+
+ .box { @include transform(rotate(30deg)); }
+ ===
+ =transform($property)
+ -webkit-transform: $property
+ -ms-transform: $property
+ transform: $property
+
+ .box
+ +transform(rotate(30deg))
+
+ :markdown
+ To create a mixin you use the @mixin
directive and give it a
+ name. We've named our mixin transform
. We're also using
+ the variable $property
inside the parentheses so we can pass in
+ a transform of whatever we want. After you create your mixin, you can then
+ use it as a CSS declaration starting with @include
followed
+ by the name of the mixin.
+
+ %hr/
+
+ %li#topic-7
+ :markdown
+ ## Extend/Inheritance
+
+ This is one of the most useful features of Sass. Using
+ @extend
lets you share a set of CSS properties from one
+ selector to another. It helps keep your Sass very DRY. In our example
+ we're going to create a simple series of messaging for errors, warnings
+ and successes using another feature which goes hand in hand with extend,
+ placeholder classes. A placeholder class is a special type of class
+ that only prints when it is extended, and can help keep your compiled
+ CSS neat and clean.
+
+ - example do
+ :plain
+ /* This CSS will print because %message-shared is extended. */
+ %message-shared {
+ border: 1px solid #ccc;
+ padding: 10px;
+ color: #333;
+ }
+
+ // This CSS won't print because %equal-heights is never extended.
+ %equal-heights {
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .message {
+ @extend %message-shared;
+ }
+
+ .success {
+ @extend %message-shared;
+ border-color: green;
+ }
+
+ .error {
+ @extend %message-shared;
+ border-color: red;
+ }
+
+ .warning {
+ @extend %message-shared;
+ border-color: yellow;
+ }
+ ===
+ /* This CSS will print because %message-shared is extended. */
+ %message-shared
+ border: 1px solid #ccc
+ padding: 10px
+ color: #333
+
+
+ // This CSS won't print because %equal-heights is never extended.
+ %equal-heights
+ display: flex
+ flex-wrap: wrap
+
+
+ .message
+ @extend %message-shared
+
+
+ .success
+ @extend %message-shared
+ border-color: green
+
+
+ .error
+ @extend %message-shared
+ border-color: red
+
+
+ .warning
+ @extend %message-shared
+ border-color: yellow
+
+ :markdown
+ What the above code does is tells .message
,
+ .success
, .error
, & .warning
+ to behave just like %message-shared
. That means anywhere
+ that %message-shared
shows up, .message
,
+ .success
, .error
, & .warning
+ will too. The magic happens in the generated CSS, where each of these
+ classes will get the same CSS properties as %message-shared
.
+ This helps you avoid having to write multiple class names on HTML
+ elements.
+
+ You can extend most simple CSS selectors in addition to placeholder
+ classes in Sass, but using placeholders is the easiest way to make
+ sure you aren't extending a class that's nested elsewhere in your
+ styles, which can result in unintended selectors in your CSS.
+
+ Note that the CSS in %equal-heights
isn't generated, because
+ %equal-heights
is never extended.
+
+ %hr/
+
+ %li#topic-9
+ :markdown
+ ## Lists
+
+ You can define a sequence of values as a list. These values can be
+ separated by commas, a space, parentheses, or square brackets. These can
+ be great for looping over. For example, you can loop over a list of colors
+ to generate class names for them.
+
+ - example do
+ :plain
+ $colors: red yellow blue;
+
+ @each $color in $colors {
+ .swatch--\#{$color} {
+ background: $color;
+ }
+ }
+ ===
+ $colors: red orange yellow green blue indigo violet
+
+ @each $color in $colors
+ .swatch--\#{$color}
+ background: $color