Sass / Scss について解説!

目次

    CHECK!

    この記事は、以下の動画リストで詳しく解説しています。
    詳しく知りたい方は、以下の動画リストをご覧ください!

    動画一覧ページへ

    そもそもSassとは?

    Sass(Syntactically Awesome Style Sheets)は、CSSをより強力かつ効率的に扱うための上位言語です。ここでは、Sassの基本的な概念とその利点について解説します。

    Sassの歴史と目的

    Sassは2006年に登場し、CSSの限界を超えるために開発されました。従来のCSSの手法では難しかったタスクを簡単にし、より構造化された方法でスタイルシートを書くことができます。

    Sassの主な特徴

    • 変数: CSSにはない変数を使用し、コードの再利用性を高める。
    • ネスト: HTMLの階層構造をCSSに反映させることで、コードの可読性を向上させる。
    • ミックスイン: 再利用可能なCSSグループを作成し、コードの重複を避ける。
    • 継承: スタイルルールを他のルールに拡張または継承させる。
    • 関数: 色の操作や数学的計算など、複雑な操作を簡素化。

    Sassの変数について

    変数は、繰り返し使用するCSSの値(色、フォントサイズ、マージンなど)を保存するための機能です。例えば、サイト全体で一貫した色を使いたい場合、その色を変数に割り当てることで、一箇所での変更が全体に反映されます。

    変数の宣言と使用

    $primary-color: #ff4500; 

    のように $ 記号を使って変数を宣言します。

    color: $primary-color;

    のようにして変数を使用します。

    $font-stack: Helvetica, sans-serif;
    $primary-color: #333;
    
    body {
      font: 100% $font-stack;
      color: $primary-color;
    }

    のようにして色の値を変数に割り当てることができます。使用する際は、変数名を指定するだけで、その値を読み込むことができます。

    変数のスコープ

    • ローカル変数: 特定のセレクタや関数内で定義し、そのスコープ内でのみ有効です。
    • グローバル変数: スタイルシートのトップレベルで定義し、どこからでもアクセス可能です。

    !default フラグを使用することで、変数が未定義の場合のみ値を割り当てることができます。これはテーマやライブラリのカスタマイズに便利です。

    SASS/SCSSでは、色($blue: #3498db;)、数値($margin: 16px;)、文字列($font-family: "Helvetica, sans-serif";)、リスト($dashes: 5px 10px 15px;)、マップ($font-weights: ("regular": 400, "medium": 500, "bold": 700);)など、さまざまなデータ型を変数に割り当てることができます。

    変数は、コードの再利用性と保守性を高め、効率的なスタイリングを可能にします。この記事で紹介したテクニックを活用し、より洗練されたSASS/SCSSスタイルシートを作成しましょう。

    SASS/SCSSの違い、それぞれのメリットや特徴について

    SASS(Syntactically Awesome Style Sheets)とSCSS(Sassy CSS)は、CSSの拡張言語で、より効率的かつ柔軟なスタイリングを可能にします。この記事では、SASSとSCSSの違いと、それぞれのメリットや特徴について詳しく掘り下げます。

    SASSとSCSSの基本的な違い

    • SASS: インデント(タブやスペース)によって構造が決定される、CSSとは異なる構文を持つ。
    • SCSS: CSSと同様のブラケット({})とセミコロン(;)を使用する、CSSにより近い構文。

    SASSのメリットと特徴

    • シンプルな構文: より少ないコードでスタイルを記述できる。
    • コードの読みやすさ: インデントにより、親子関係が直感的にわかりやすい。
    • 適用範囲: 主にプロジェクトの初期段階や小規模なプロジェクトで好まれる。

    SCSSのメリットと特徴

    • CSS互換性: 既存のCSSファイルをそのままSCSSファイルとして使用できる。
    • 拡張性: 大規模なプロジェクトやチームでの開発に適している。
    • ツールのサポート: 広範な開発ツールとの互換性。

    SASSとSCSSは、同じ目的を持ちながらも異なるアプローチを提供します。プロジェクトの要件やチームのスキルセットに基づいて、最適な選択を行うことが重要です。この記事を通じて、それぞれの言語の特徴とメリットを理解し、プロジェクトに最適な選択をしてください。

    SASSの便利な機能mixin(ミックスイン)について

    SASS/SCSSの強力な機能の一つに@mixinがあります。@mixinの基本的な使い方から、引数の使用、@includeでの呼び出しに至るまでを解説します。

    @mixinとは?

    @mixinは、再利用可能なスタイルブロックを作成するためのSASS/SCSSの機能です。コードの重複を減らし、プロジェクトの保守性を高めることができます。

    基本的な使い方

    定義: @mixin ディレクティブを使用してミックスインを定義します。

    @mixin buttonStyle() {
      width: 200px;
      height: 40px;
      display: grid;
      place-items: center;
    }
    button {
      @include buttonStyle;
    }

    引数を使った応用

    引数の定義: ミックスインに引数を加えることで、カスタマイズ可能なスタイルを作成できます。例:

    @mixin buttonStyle($bgColor) {
      width: 200px;
      height: 40px;
      display: grid;
      place-items: center;
      background-color: $bgColor;
    }

    引数の使用: 定義した引数を指定してミックスインを使用します。

    .link {
      @include buttonStyle(blue);
    }

    @mixinは、SASS/SCSSにおいて非常に強力なツールです。効果的に使用することで、コードの保守性と再利用性を大きく向上させることができます。この記事で学んだテクニックを活用し、より効率的なスタイルシートを作成しましょう。

    if, else if, elseなどの条件分岐を使う

    SASS/SCSSでは、if、else if、elseなどの条件分岐を使って、さまざまな状況に応じたスタイリングを適用することができます。この記事では、これらの条件分岐の基本的な使い方と実践的な活用方法を紹介します。

    条件分岐の基本

    • if文: ある条件が真の場合に特定のスタイルを適用します。
    • else if文: 複数の条件を順に評価し、最初に真となる条件に対応するスタイルを適用します。
    • else文: どの条件も真でない場合に適用されるスタイルを指定します。

    @mixin内での条件分岐

    @mixinを使って、パラメータに基づいて異なるスタイルを適用する方法を紹介します。

    @mixin button-style($type) {
      @if $type == 'primary' {
        background-color: blue;
        color: white;
      } @else if $type == 'secondary' {
        background-color: grey;
        color: black;
      } @else {
        background-color: white;
        color: black;
      }
    }
    
    .button {
      @include button-style('secondary')
    }

    @mixin内での条件分岐は、SASS/SCSSを使ったスタイリングにおいて強力なツールです。ここで紹介したテクニックを活用して、動的かつ柔軟なデザインを実現しましょう。

    ループ処理(繰り返し)をする方法とその活用

    SASS/SCSSでは、@for、@each、@whileといったループ処理を使用して、反復的なスタイルを簡単に生成することができます。これらのループ処理の書き方を解説します。

    ループ処理の基本

    • @forループ: 指定した回数だけスタイルを繰り返します。
    • @eachループ: リストやマップの各要素に対してスタイルを適用します。
    • @whileループ: 条件が真の間、スタイルを繰り返します。

    @forループの使い方

    @for $i from 1 through 10 {
      .item-#{$i} { width: 10px * $i; }
    }

    @eachループの使い方

    $colors: red, blue, green;
    
    @each $color in $colors {
      .#{$color}-text { color: $color; }
    }

    @whileループの使い方

    $i: 1;
    @while $i < 10 {
      .item-#{$i} { width: 10px * $i; }
      $i: $i + 1;
    }

    SASS/SCSSのループ処理を使用することで、効率的に反復的なスタイルを生成することができます。この記事で紹介したテクニックを活用し、より動的かつ柔軟なスタイルシートを作成しましょう。

    自作関数(function)を作る方法とその仕組み

    SASS/SCSSでは、独自の関数(function)を定義してスタイルシート内で使用することができます。この記事では、自作関数の作成方法とその仕組みについて詳しく解説します。

    自作関数の基本

    • 関数の定義: @function ディレクティブを使用して関数を定義します。
    • 戻り値: 関数は値を返すため、@return ステートメントを使用します。

    例:ピクセルをレムに変換する関数

    @function px-to-rem($size, $base: 16px) {
      @return $size / $base * 1rem;
    }
    
    p {
      font-size: px-to-rem(16px); // 1remに変換される
    }

    自作関数を使うことで、SASS/SCSSのコードをより効率的かつ動的にすることが可能です。この記事で学んだテクニックを活用し、より洗練されたスタイルシートを作成しましょう。

    @contentの活用について

    Sassの@contentディレクティブは、mixin内で定義されたスタイルブロックに、追加のスタイルルールを挿入することを可能にします。この記事では、@contentの使用方法と、メディアクエリやその他のスタイリングにおいてどのように活用できるかを解説します。

    @contentの基本

    • 用途: @mixinを使って定義されたスタイルブロック内に、コンテンツを動的に挿入するために使用します。
    • 構文: @contentは、@includeで呼び出された@mixin内で使用します。

    構文: @contentは、@includeで呼び出された@mixin内で使用します。

    @mixin respond-to($media) {
      @if $media == 'mobile' {
        @media (max-width: 600px) { @content; }
      } @else if $media == 'tablet' {
        @media (max-width: 900px) { @content; }
      }
    }
    
    .example {
      @include respond-to('mobile') {
        font-size: 12px;
      }
    }

    @contentの応用

    • 複数のスタイルルール: 異なるコンテキストで異なるスタイルルールを適用する際に便利です。
    • コードの再利用性: 同じパターンのスタイルブロックを複数の場所で使用する際に、コードの重複を避けることができます。

    @contentディレクティブを活用することで、Sassでのコーディングがより柔軟かつ効率的になります。この記事で紹介したテクニックを活用し、メディアクエリやその他のスタイリングに応用してみましょう。

    • マンツーマン
      個別講義開催中!

      エラーの解消から、
      実装方法まで丁寧に教えます!
      講師が答えられるなら、
      基本的にどんな内容でも
      OK!

      詳細はこちら!
    • 質問し放題プラン!
    • スクール形式講義も

      プロを目指したい方
      講義を何回も受けたい方はこちら!
      個別のカリキュラムを作成し、
      長期的にサポート!

      詳細はこちら!
    • discordコミュニティ
    記事一覧へ