概要と目標
Sassの便利な機能を覚えて、
もっと効率よくSassを書けるようになろう。
変数や演算など、プログラミングでおなじみの機能が使える。
これらを使ってより効率のいいSassの記述の方法を学習しましょう。
変数や演算など、プログラミングでおなじみの機能が使える。
これらを使ってより効率のいいSassの記述の方法を学習しましょう。
Sassは変数が使えるので、
よく使う色や、よく使う数値を変数に代入しておくと便利に扱える。
$変数名: 代入するデータ;
下記のCSSは、「#9DBF4A」という色コードを何度も使っている。
この場合はこの色コードを変数に入れておくことで、効率とメンテンス性が向上する。
.site-title {
color: #9DBF4A;
}
.heading {
background-color: #9DBF4A;
color: #fff;
}
.button {
color: #9DBF4A;
border: 4px solid #9DBF4A;
}
// 変数を宣言
$main-color: #9DBF4A;
.site-title {
color: $main-color;
}
.heading {
background-color: $main-color;
color: #fff;
}
.button {
color: $main-color;
border: 4px solid $main-color;
}
.site-title {
color: #9DBF4A;
}
.heading {
background-color: #9DBF4A;
color: #fff;
}
.button {
color: #9DBF4A;
border: 4px solid #9DBF4A;
}
Sassで扱えるデータ型には、以下のものがある
$font-size: 1.5em; // Number
$main-color: #663300; // Color
$text: 'Hello'; // String
$is-ie8: true; // boolean
$gutters: .5em 1em 1.5em; // List
$breakpoints: (
'sp': 320px,
'tab': 768px,
'lap': 960px,
'desk': 1200px,
); // Map
$height: null; // Null
変数はルールセットの中にでも宣言することができる。
その場合は、その変数は、そのルールセット内のみで利用できるローカル変数となる。
.card {
$space: 16px;
marign-top: $space; // 参照できる
padding: $space; // 参照できる
}
.media {
marign-top: $space; // 参照できない
padding: $space; // 参照できない
}
// 変数を宣言
$main-color: #9DBF4A;
.site-title {
color: $main-color;
}
.heading {
$space: 16px; // ローカル変数を宣言
background-color: $main-color;
color: #fff;
padding: $space; // 参照できる
margin: $space; // 参照できる
}
.button {
color: $main-color;
border: 4px solid $main-color;
padding: $space; // 参照できない
}
padding: $space;」で ローカル変数を参照できないため、エラーとなりコンパイルできないことを確認。
$space: 8px;」を追加する。
// 変数を宣言
$main-color: #9DBF4A;
$space: 8px;
.site-title {
color: $main-color;
}
.heading {
$space: 16px; // ローカル変数を宣言
background-color: $main-color;
color: #fff;
padding: $space; // 参照できる
margin: $space; // 参照できる
}
.button {
color: $main-color;
border: 4px solid $main-color;
padding: $space; // 参照できない → グローバル変数を参照
}
.site-title {
color: #9DBF4A;
}
.heading {
background-color: #9DBF4A;
color: #fff;
padding: 16px;
margin: 16px;
}
.button {
color: #9DBF4A;
border: 4px solid #9DBF4A;
padding: 8px;
}
!default」と指定すると、変数にデフォルト値を割り当てることができる。つまり、この設定をしておくと、たとえこの宣言コードよりも前であっても、
同じ名前の変数名があった場合は、そっちの値で上書きされる。
// グローバル変数を宣言
$space: 8px;
.heading {
$space: 16px !default; // ローカル変数を宣言
padding: $space; // グローバル変数で上書きするので、8pxになる
}
!global」と指定すると、同じ名前のグローバル変数がある時、この値でグローバル変数を上書きする。
.heading {
$space: 16px !global; // グローバル変数として宣言
padding: $space;
}
.button {
padding: $space; // グローバル変数になったので、16pxになる
}
Sassの演算は数値の計算はもちろん。
単位付きの数値や色コードだって計算できる。
| 算術演算子 | 説明 |
|---|---|
+ |
加算 |
- |
減算 (マイナスと解釈されないように前後にスペースをつける) |
* |
掛け算 |
/ |
割り算 (割り算の処理をするには以下の条件のいずれかを満たす必要がある。)
|
% |
余り |
.l-section {
margin: 8px * 2 0;
}
.heading {
font-size: (24px / 16px) * 1em;
}
.l-section {
margin: 16px 0;
}
.heading {
font-size: 1.5em;
}
変数を演算に使うこともできる。
$content-width: 960px;
.l-section {
margin: 8px * 2 0;
}
.heading {
font-size: (24px / 16px) * 1em;
}
.l-main {
float: left;
width: (690px / $content-width) * 100%;
}
.l-sidebar {
float: right;
width: (240px / $content-width) * 100%;
}
.l-section {
margin: 16px 0;
}
.heading {
font-size: 1.5em;
}
.l-main {
float: left;
width: 71.875%;
}
.l-sidebar {
float: right;
width: 25%;
}
色コードも演算することができる。
主に、ホバー時の色を決める時などに使える。
$content-width: 960px;
$main-color: #9DBF4A;
.l-section {
margin: 8px * 2 0;
}
.heading {
font-size: (24px / 16px) * 1em;
}
.l-main {
float: left;
width: (690px / $content-width) * 100%;
}
.l-sidebar {
float: right;
width: (240px / $content-width) * 100%;
}
.button {
color: $main-color;
&:hover {
color: $main-color + #111;
}
}
.l-section {
margin: 16px 0;
}
.heading {
font-size: 1.5em;
}
.l-main {
float: left;
width: 71.875%;
}
.l-sidebar {
float: right;
width: 25%;
}
.button {
color: #9DBF4A;
}
.button:hover {
color: #aed05b;
}
Sassで文字列を連結する際は「+」を使う。
演算結果に単位を連結する際などに役立つ。
$content-width: 960px;
$main-color: #9DBF4A;
.l-section {
margin: 8px * 2 0;
}
.heading {
font-size: (24px / 16px) + em;
}
.l-main {
float: left;
width: (690px / $content-width) * 100%;
}
.l-sidebar {
float: right;
width: (240px / $content-width) * 100%;
}
.button {
color: $main-color;
&:hover {
color: $main-color + #111;
}
}
.l-section {
margin: 16px 0;
}
.heading {
font-size: 1.5em;
}
.l-main {
float: left;
width: 71.875%;
}
.l-sidebar {
float: right;
width: 25%;
}
.button {
color: #9DBF4A;
}
.button:hover {
color: #aed05b;
}
変数はプロパティの値に使うことはできるが、セレクタやURLに変数を使おうとするとエラーになる。
その場合は、変数を「#{」〜「 }」で囲むことで普通変数が使えないところで変数を参照できるようになる。
$file-path: '../assets/images/';
$font-size: 1em;
$line-height: 1.5;
$selector: '.card';
body {
background-image: url(#{$file-path}bg.png);
font: #{$font-size}/#{$line-height} sans-serif;
}
#{$selector} {
display: block;
}
body {
background-image: url(../assets/images/bg.png);
font: 1em/1.5 sans-serif;
}
.card {
display: block;
}
SassのインポートはCSSと同様「@import」を使う。
なおインポート先のSassファイルをコンパイル時に、CSSファイルを生成したくない場合は、
ファイル名の先頭に「_(アンダースコア)」をつけと、コンパイル後にCSSファイルを生成されない。(パーシャル)
@import インポートするファイルパス;
先頭の「_」と拡張子は省略できる
// -----------------------------------
// Layout Settings
//------------------------------------
// Contentの幅
$content-width: 1200px;
//====================================
// Color Setings
//====================================
// メインカラー
$main-color: #9DBF4A;
// サブカラー
$sub-color: #2C2C31;
// テキストの色
$text-color: #212121;
@import 'inc/settings';
/* =================================
Layout
================================= */
@import 'layout/centring';
@import 'layout/header';
@import 'layout/main';
@import 'layout/footer';
/* =================================
Layout
================================= */
/*
Centring
---------------------*/
.l-container {
width: 95%;
max-width: 1200px;
margin: 0 auto;
}
/*
Header
---------------------*/
.l-header {
padding: .75em 0;
overflow: hidden;
background-color: #9DBF4A;
}
.l-header__title {
float: left;
}
.l-header__nav {
float: right;
}
/*
Header
---------------------*/
.l-main {
clear: both;
}
/*
Footer
---------------------*/
.l-footer {
padding: 1.5em 0;
background-color: #2C2C31;
}
.l-footer__nav {
font-size: 0;
}
.l-footer__nav__item {
display: inline-block;
font-size: medium;
}
.l-footer__siteinfo {
padding: 1em 0;
}
[_sass]
|
|-- [Foundation] (基盤用)
| |-- _reset.scss (ブラウザCSSのリセット)
| |-- _base.scss (サイト共通のベース設定)
|
|-- [Layout] (レイアウト用)
| |-- _centering.scss (「.l-container」など)
| |-- _header.scss (「.l-header」など)
| |-- _main.scss (「.l-main」など)
| |-- _footer.scss (「.l-footer」など)
|
|-- [Object] (パーツ用)
| |-- [Component] (何度も使うコンポーネント用)
| | |-- _grid.scss (「.c-grid」など)
| | |-- _card.scss (「.c-card」など)
| | |-- _media.scss (「.c-media」など)
| | |-- _button.scss (「.c-button」など)
| |
| |-- [Project] (プロジェクト用)
| | |-- _logo.scss (「.p-logo」など)
| | |-- _profile.scss (「.p-profile」など)
| |
| |-- [Utility] (調整用)
| |-- _margin.scss (「.u-mt」など)
| |-- _padding.scss (「.u-pt」など)
|
|-- [inc] (読み込み用)
| |-- _settings.scss (変数定義用)
|
|-- common.scss (インポート元ファイル)
Sassは他のプログラミングと同様、変数や演算などが使える。