seilog-ger
[ URL:seilog.org ] Writtern by Seiji Nakamura

2022/9/10 (更新日:2023/6/1)

初心者がLibSassをDartSassに移行する方法【@useと@forwardを使いこなす】

DartSassに移行されるけど何が変わるかわからない!

以前のSassからDartSassで変わる内容を整理しました。

最後に、わかり易いレスポンシブ表示方法を具体的なファイル構成とコーディング例をまとめました。

私も以前のLibSassを使っていたので、DartSassの導入にあたり変更方法をまとめました。

是非参考にしてください。

お伝えしたい内容

  1. LibSassをDartSassに移行する方法
  2. 開発環境
  3. @useを使いこなす
  4. @forwardを使いこなす
  5. !default デフォルト値の設定
  6. 演算子
  7. レスポンシブで効率的なファイル構成

1.LibSassをDartSassに移行する方法

Sassが「LibSass」から「DartSass」に2022/10/01の期限で移行されます。

「LibSass」の開発力不足が原因と言われています。

それに伴い、表記の方法が一部変わります。

DartSassの大きな変更点

分割したSassファイルを

変更前:@import
 ⇒ 
変更後:@use や@forward

に変えて読み込みます。

*変更の状況を知りたい方はこちらを参照ください。

文字だけではわかり難いので、関係している部分だけをピックアップして載せます。

変更前:@import

ファイル構成

style.scss
_variable.scss
_mixin.scss

コーディング例


style.scss

@import "variable";
@import "mixin";

.example1{
 color:$ex-color;
}
.example2{
 @include box();
}

_variable.scss

$ex-font:10px;
$ex-color:red;

_mixin.scss

@mixin box(){
 width:100px;
 height:100px;
}

変更後:@use や@forward

ファイル構成

style.scss
_index.scss
_variable.scss
_mixin.scss

コーディング例


style.scss

@use "index" as d;

.example1{
 color:d.$ex-color;
}
.example2{
 @include d.box();
}

_index.scss

@forward "variable";
@forward "mixin";

_variable.scss

$ex-font:10px;
$ex-color:red;

_mixin.scss

@mixin box(){
 width:100px;
 height:100px;
}

@forwardで他のファイルをまとめる_index.scssファイルを新設します。

@useで_index.scssを参照します。

変数の参照は、名前空間「“index” as d」という特別の表現で実現します。

引き続き、具体的にDartSassへの変更方法を説明していきます。

2.開発環境

VSCode(Visual Studio Code)の拡張機能で、

本家の「Live Sass Compiler」by Ritwick Deyを使って、LibSassをのコンパイルしている人は、

DartSassのコンパイルができません。

VSCodeでDartSassをコンパイルするには、

VSCodeの拡張機能の「Live Sass Compiler」by Glenn Marks 

を使う必要があります。

拡張機能で「Live Sass Compiler」を検索すると、

「Live Sass Compiler」by Glenn Marksも表示されますので

インストールして使用してください。

新しいコマンドはすべてサポートされていますので、「Live Sass Compiler」by Glenn MarksさえインストールすればOKです。

3.@useを使いこなす

読み込むファイルに記述されている”変数”や”mixin”などを直接参照する場合は、「@import」を「@use」に変更して使います。

注意項目:名前空間「”variable” as d」という固有名詞のようなものを参照する値につけて使うことです。

「_variable.scss」の「$ex-color」という変数を「style.scss」へ読み込む方法


style.scss

@use "variable" as d;

.example1{
 color:d.$ex-color;
}

_variable.scss

$ex-font:10px;
$ex-color:red;

ファイル構成

style.scss
_variable.scss

① @use “variable”でファイルを参照

② 「as d」という名前空間を追記します。

③ 「.example1」の文字色colorを指定する変数「$ex-color」の前に、「d.」をつけます。

*「d.」をつけないとコンパイルエラーになります。

*「d」の部分は好きな名称で良いです。

4.@forwardを使いこなす

使いたい”変数”や”mixin”などが読み込むファイルの別のファイルに記述されている場合は、「@use」と「@forward」を使って表現します。

ここでも、@useには名前空間は使います。

@forwardは、参照するファイルを引き渡すような感じです。

「_variable.scss」の変数と「minin」を「style.scss」へ読み込む方法


style.scss

@use "index" as d;

.example1{
 color:d.$ex-color;
}
.example2{
 @include d.box();
}

_index.scss

@forward "variable";
@forward "mixin";

_variable.scss

$ex-font:10px;
$ex-color:red;

_mixin.scss

@mixin box(){
 width:100px;
 height:100px;
}

<ファイル構成>

style.scss
_index.scss
_variable.scss
_mixin.scss

① 「_index.scss」内に、

@forward “variable”; 
@forward “mixin”;
でファイルをまとめる。

② 「style.scss」内で、

@use “index” で「index.scss」を参照する。

③ 「as d」という名前空間を追記します。

④ 変数の参照は、

「.example1」の文字色colorを指定する変数「$ex-color」の前に、「d.」をつけます。

⑤ mixinの参照は、

mixinの名前「box」の前に、「.d」をつけます。

5.!default デフォルト値の設定

!defaultフラグは、変数に値が設定されていないか、null の場合にのみ、値を設定できるフラグです。

!defaultフラグの場合は、同じ変数が先に宣言されていた場合は、そちらが優先されて適用されます。

先に宣言されていない場合は、本文で設定されている値になります。

通常は、変数は後から宣言された値があれば上書きされます。


style.scss

$ex-color: red;
$ex-color: green !default;

.example1{
 color: $ex-color;
}

コンパイルした結果は、

style.css

.example1{
 color: red;
}

「style.scss」では、

変数宣言(2行目)に、!defaultフラグが指定されているので、コンパイル時に先に宣言されている赤(red)が適用されます。

実際に

「style.css」では、

コンパイルの結果、赤(red)が適用されました。

6.演算子

割り算の演算子「/」が使えません。

*他の四則演算は使えます。
(+ 足し算、- 引き算、* 掛け算、% 余り)

割り算する3通りの方法

方法1:小数点の乗算で代用: $n1 * 0.5 で、$n1を半分にします。

方法2:calc()で全体を囲います。
   ⇒ calc ( $n1 / 2 ) ;

方法3:math.div()を使います。:下記参照

  ①ファイルにsassのmathモジュールをインポートします。
   ⇒ @use “sass:math”;

  ②math関数で計算します。
   ⇒ math.div($n1,2);

sass:math:数値関連の関数例

関数意味
math.div($n1,$n2)除算($n1÷$n2)math.div(100px,5px)⇒20
math.min($numbers…)最小値を返すmath.min(10,3,8)⇒3
math.max($numbers…)最大値を返すmath.max(10,3,8)⇒10
math.round($number)小数点以下を四捨五入math.round(12.5px)⇒13px

以上が、変更項目をまとめた内容です。

7.レスポンシブで効率的なファイル構成

実際にプログラミングでどの様に使っていくか触れます。

「DartSass」を使ってレスポンシブをわかりやすくプログラミングに組み込むのが目的です。

「DartSass」とレスポンシブに関する部分の説明です。

フォルダ&ファイル構成

Sassを使う目的は、全体を作成後でも本人及び他の開発者が参照してもわかり易くすることです。

それぞれ役目を持たせてフォルダやファイルを構成しています。

htmlファイル「index.html」のスタイルを「style.scss」に集約して設定する構成です。

主に、本文のスタイルをあてるのはpages/_home.scssです。

基本のファイル構成

index.html:本文のhtmlファイル

styles:スタイル全体をまとめたフォルダ

style.scss:スタイル全体を定義するファイル

globals:共通に参照するファイル用フォルダ

_index.scss:globals内の変数をまとめて読み込むためのファイル

_variables.scss:ブローバル変数ファイル

_mixin.scss:mixinファイル

_mediaq.scss:メディアクエリのブレイクポイントを定義するファイル

pages:本文のスタイルフォルダ

_home.scss:本文の文章のスタイルを定義するファイル

parts:本文中の部品のスタイル用フォルダ

_common.scss:部品に関してスタイルを定義する共通の変数用ファイル

各ファイルのポイント

レスポンシブファイルのエッセンス

① _mediaq.scssでレスポンシブのブレイクポイントを設定します。

② _home.scssでレスポンシブを適用する部分に、mixinを使ってブレイクポイントを適用してスタイルをあてます。


_home.scss

@use "../globals" as *;
@use "../parts/common" as *;

.example1{
 color:$ex-color;

 @include mq(md){
padding:50px;
 }
 @include mq(xl){
 padding:50px 150px;
 }
}

.example2{
 @include box();
}

本文に使う、変数を「globals」フォルダから、共通スタイルを「_common.scss」から読み込む

「.example1」のレスポンシブ表現

幅600px未満はpadding無し

600px~1280pxはpadding:50px

1280px以上はpadding:50px 150px

* @use “../globals” as *;の場合は、名前空間を省略してスタイル表示できます。


_mediaq.scss

$breakpoints: (
  //480px以上(スマホの横向き)のモニタ
  'sm': 'screen and (min-width: 480px)',

  //600px以上のタブレットやモニタ
  'md': 'screen and (min-width: 600px)',

  //960px以上のモニタ
  'lg': 'screen and (min-width: 960px)',

  //1280px以上のモニタ
  'xl': 'screen and (min-width: 1280px)',
) !default;

@mixin mq($breakpoint: md) {
  @media #{map-get($breakpoints, $breakpoint)} {
    @content;
  }
}

本文のスタイルを定義するファイルで、レスポンシブWEBデザインを実現するメディアクエリを使います。

「mixin」でわかり易く簡易にメディアクエリを使えるように定義します。

「sm」「md」「lg」「xl」でモニタ幅の範囲を定義して使います。


_index.scss

@forward "variables";
@forward "mixin";
@forward "mediaq";

「globals」フォルダ内で変数を定義しているファイルを一つにまとめる


_variables.scss

$ex-font:10px;
$ex-color:red;

共通で参照する変数をまとめたファイル


_mixin.scss

@mixin box(){
 width:100px;
 height:100px;
}

メディアクエリ以外の「minix」を定義したファイル


style.scss

@use "pages/home";

本文の基本スタイルを「_home.scss」から読み込む


_common.scss

_common.scss

スタイルを定義するのに使う共通の変数を、「parts」フォルダから読み込む

8.まとめ

LibSassからDartSassへの変更内容をまとめました。

レスポンシブで表現するときのファイル例もまとめました。

DartSassも使ってわかり易いコーディングをつくる一助になれば幸いです。

今までのSass、BEMにご興味がある方は下記を参照ください。

1.Sass,scssとBEMでスタイルを定義する書き方、BEMの命名規則とは?

2.スタイルをcssの代わりにsassで表現するときの、コードの書き方とメリット

*最後まで読んでいただきありがとうございます。
 舌足らずで説明不足の所はお許しください。
 改良項目・修正項目がございましたらご指摘いただけたら幸いです。

Copyright – Seiji Nakamura, 2022 All Rights Reserved.

関連記事