【CSS】Sassに替えて感じたメリットや違い3選
エンジニアのみなさんも、そうでないみなさんもこんにちは。
突然ですが、みなさんはコーディングする時どのようなCSSのメタ言語をお使いですか?
現代の主流は、LessとSass(Sass/Scss)といわれていますが、筆者もSassを愛用しています。
そんなSassに切り替えてから筆者が感じた点をご紹介していきます。
Sassの導入記事についてはこちら↓
【まだ導入しないの?】Sassの魅力を隅々まで教えます
カラーコードなどで変数機能が活きる
Sassでは、
$○○○:△△△; (どちらも任意)
のように最初に「$」をつけると変数として定義して記憶してくれます。
そこでこの機能が活躍するのが、カラーコードです。
#fffや#333など、単純なコードの色であればそれほど手間はかかりませんが、
自分で決定した複雑なカラーコードであると毎回コピペして…というのは面倒ですよね。
そんな時に例えば、
$orange:#FFB443
と変数orangeを設定すれば、
color:$orange
/* コンパイル後 */
color:#FFB443
と出力されます。
変数のいいところが、メンテナンス性の向上にもあります。
変数に格納すれば、#FFB443で設定している箇所を一気に変更したい時も修正が一箇所(変数の記述)だけですみます。
@mixinを用いたレスポンシブ(メディアクエリ)設定
mixinとは、@mixin ××(関数名のようなもの)と一度記述すれば、
何回でも@include ××で@mixinで記述したCSSを引用できる機能です。
しかも、引数も使うことができます。
使いこなせれば非常に便利です。
そして代表的なmixinの使い方としてご紹介したいのが、
メディアクエリをincludeで記述する方法です。
まず例として以下のようにmixinを定めます。
@mixin pc{
@media (min-width:(800px)) {
@content;
}
}
モバイルファーストでWebサイトを作成した際に、
800px以上の画面幅のデバイスで閲覧した時に切り替えるメディアクエリを設定したい場合、
.title{
margin-top:1em;
font-size:0.8rem;
}
↓
.title{
margin-top:1em;
font-size:0.8rem;
@include pc{
font-size:1.5rem;
}
}
と、追加すればコンパイル後は
.title{
margin-top:1em;
font-size:0.8rem;
}
@media (min-width:800px){
.title{
font-size:1.5rem;
}
}
と出力されます。
この記述の利点は何より、
同一のクラスのメディアクエリであればファイルの下部などではなく、ほぼ同じスペースに記述できるので、
記述の重複などのミスがなくなり、デバイスごとにクラスを探したりすることがなくなります。
筆者がSassの中で最も感銘を受けた機能かもしれません。
目的、パーツごとのファイル分けで管理できる
普通のサイトであれば、ページごとに別々のスタイルシートを読み込むのが一般的かと思います。
しかし、Sassの@import機能で一つのシートに複数のSassファイルを読み込み統合することができます。
筆者はいつも以下のように設定をしています。
header.php
style.scss
@import 'foundation/vars';
@import 'foundation/reset';
@import 'foundation/mixin';
@import 'foundation/base';
@import 'layout/header';
@import 'layout/btn';
@import 'layout/top';
まずヘッダーにはstyle.scssのコンパイル後のファイル(.cssでも.min.cssでもどちらでも可)を読み込みます。
そして、style.scssには読み込みたいファイルを全て@importして、保存をして正常に保存が完了しているか確認します。
そうすると、上から書いたファイルを順番にそれぞれコンパイルしたファイルを生成してくれるのです。
このファイル管理の仕方だと、
- ページが異なっても同じデザインのパーツを管理できる
- 命名規則をしっかり定めれば、チーム内で共有しやすい
といったようなメリットが生じます。
まとめ
いかがだったでしょうか。
今回は筆者が実際に感じたSassについてのメリットなどをご紹介しました。
今まで使ったことがない機能があった方は、ぜひ今回を機にマスターしてみてください。
Warning: include(/var/www/html/tetraup.com/knocknote.jp/tmpl/aside.html): failed to open stream: No such file or directory in /var/www/html/tetraup.com/news_topics/wp-content/themes/news/archive.php on line 24
Warning: include(): Failed opening '/var/www/html/tetraup.com/knocknote.jp/tmpl/aside.html' for inclusion (include_path='.:/usr/share/pear7:/usr/share/php') in /var/www/html/tetraup.com/news_topics/wp-content/themes/news/archive.php on line 24