parent
cdf75bada6
commit
3a299c0eac
@ -0,0 +1,184 @@
|
|||||||
|
# SASS
|
||||||
|
|
||||||
|
## Lesson Objectives
|
||||||
|
|
||||||
|
1. Install SASS
|
||||||
|
1. Save values in variables
|
||||||
|
1. Nest rules inside each other
|
||||||
|
1. Separate code out into partials
|
||||||
|
1. Import partials
|
||||||
|
1. Create a mixin
|
||||||
|
1. Have rules inherit values
|
||||||
|
1. Use Operators
|
||||||
|
|
||||||
|
## Install SASS
|
||||||
|
|
||||||
|
You can install as a node package or a ruby gem. Let's use node:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo npm install -g sass
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can use the following to compile the sass file called `index.scss` to `index.css`
|
||||||
|
|
||||||
|
```
|
||||||
|
sass index.scss index.css
|
||||||
|
```
|
||||||
|
|
||||||
|
## Save values in variables
|
||||||
|
|
||||||
|
```css
|
||||||
|
$primary-color: #333;
|
||||||
|
body {
|
||||||
|
color: $primary-color;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
after compiling, you should get:
|
||||||
|
|
||||||
|
```css
|
||||||
|
body {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Nest rules inside each other
|
||||||
|
|
||||||
|
You can have nest rules within each other, just like in HTML
|
||||||
|
|
||||||
|
```css
|
||||||
|
nav {
|
||||||
|
ul {
|
||||||
|
margin:0;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will output:
|
||||||
|
|
||||||
|
```css
|
||||||
|
nav ul {
|
||||||
|
margin:0
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Separate code out into partials
|
||||||
|
|
||||||
|
Partials are just `.scss` files with a leading underscore (`_`). The underscore lets Sass know that the file is only a partial file and that it should not be generated into a CSS file.
|
||||||
|
|
||||||
|
Try it in `_nav.scss`
|
||||||
|
|
||||||
|
```css
|
||||||
|
nav {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Import partials
|
||||||
|
|
||||||
|
To import a partial:
|
||||||
|
|
||||||
|
```css
|
||||||
|
body {
|
||||||
|
font: Arial;
|
||||||
|
}
|
||||||
|
|
||||||
|
@import 'nav';
|
||||||
|
```
|
||||||
|
|
||||||
|
This produces:
|
||||||
|
|
||||||
|
```css
|
||||||
|
body {
|
||||||
|
font: Arial;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create a mixin
|
||||||
|
|
||||||
|
Mixins are like functions. They produce rules based on some (or no) parameters:
|
||||||
|
|
||||||
|
```css
|
||||||
|
@mixin border-radius($radius) {
|
||||||
|
-webkit-border-radius: $radius;
|
||||||
|
-moz-border-radius: $radius;
|
||||||
|
-ms-border-radius: $radius;
|
||||||
|
border-radius: $radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box { @include border-radius(10px); }
|
||||||
|
```
|
||||||
|
|
||||||
|
## Have rules inherit values
|
||||||
|
|
||||||
|
You can have a set of rules be inherited by a rule:
|
||||||
|
|
||||||
|
```css
|
||||||
|
%box {
|
||||||
|
border:1px solid black;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plain-box {
|
||||||
|
@extend %box;
|
||||||
|
background: grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
.awesome-box{
|
||||||
|
@extend %box;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This produces:
|
||||||
|
|
||||||
|
```css
|
||||||
|
.awesome-box, .plain-box {
|
||||||
|
border: 1px solid black;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plain-box {
|
||||||
|
background: grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
.awesome-box {
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Use Operators
|
||||||
|
|
||||||
|
You can use all your usual math operators (`+-*/%`) in sass:
|
||||||
|
|
||||||
|
```css
|
||||||
|
article{
|
||||||
|
width: 600px / 960px * 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside{
|
||||||
|
width: 300px / 960px * 100%;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will produce:
|
||||||
|
|
||||||
|
```css
|
||||||
|
article {
|
||||||
|
width: 62.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside {
|
||||||
|
width: 31.25%;
|
||||||
|
}
|
||||||
|
```
|
||||||
Loading…
Reference in new issue