CSS3 は本当に SCSS に取って代わるのでしょうか?

CSS3 は本当に SCSS に取って代わるのでしょうか?

Web ページのスタイル設定に関しては、プロジェクトで純粋な CSS または SCSS (および他のプロセッサ) を使用する選択肢があります。 SCSS は CSS のスーパーセットです。ほとんどの開発者は、SCSS は高度な機能と明確な構文を備えているため、CSS よりも使いやすいことに同意しています。

この記事では、SCSS の機能と、CSS が長年にわたってどのように改善されてきたかについて説明します。さらに、実際のプロジェクトで CSS を SCSS の代わりに使用できるかどうかを評価します。

CSSの現在の機能

CSS は誕生以来、長い道のりを歩んできました。近年の CSS の発展により、アニメーションの分野で JavaScript を使用する必要性も低下しました。最新のブラウザでは、これらの CSS アニメーションのパフォーマンスを向上させるために GPU も使用されます。少し学習するだけで、CSS を使用して複雑なレスポンシブ グリッド レイアウトを構築できるようになりました。

今日の CSS には多くの新機能がありますが、この記事では、最新の Web アプリケーションでよく使用されるいくつかの新機能に焦点を当てます。

  • あらゆる Web アプリケーションを構築する場合、最も重要な部分はページのレイアウトです。私たちのほとんどは長年 Bootstrap などの CSS フレームワークに依存してきましたが、CSS では現在、レイアウトをネイティブに構築するための Grid、Subgrid、Flexbox などの新しい機能が提供されています。 Flexbox は開発者の間で広く人気がありますが、グリッドレイアウトも追いつきつつあります。
  • 柔軟なテキストレイアウト
  • Transition と Transform の強力な機能により、アニメーションを作成するために JavaScript を使用する必要がなくなりました。
  • カスタムプロパティまたは変数

SCSSの特徴

SCSSは変数の使用をサポートしており、冗長なコードを回避します

実際に、スタイルシートでは、さまざまなcolorやその他の要素の定義 ( fontなど) を再利用できます。これらの再利用可能なものを統一された場所で宣言するために、SCSS は変数機能を提供します。これにより、変数名を使用して特定の色を表し、色の値を書き換える代わりに、プロジェクト内の他の場所で変数名を使用できるようになります。

たとえば、次の例をご覧ください。

$黒: #000000;
$primary-font: 'Ubuntu'、'Helvetica'、サンセリフ;
$単位: 1rem;

体 {
    色: $black;
    フォントファミリ: $primary-font;
    パディング: #{$unit * 2};
}

CSS は変数とカスタム プロパティもサポートします。CSS のカスタム プロパティは次のとおりです。

--黒: #000000;
--幅: 800px;
--primaryFont: 'Ubuntu'、'Helvetica'、サンセリフ;

体 {
    幅: var(--width);
    色: var(--black);
    フォントファミリ: var(--primaryFont);
}

ただし、CSS カスタム プロパティは実行時に SCSS 変数よりも時間がかかります。

これは、ブラウザが実行時にこれらの属性を処理するためです。一方、SCSS は前処理フェーズで CSS に変換され、変数を処理します。したがって、SCSS での変数の使用とコードの再利用は、CSS よりもパフォーマンスが向上します。

SCSSはネストされた構文を許可し、より簡潔なソースコード

次のような CSS コード ブロックがあるとします。

.ヘッダー{
    パディング: 1rem;
    border-bottom: 1px のソリッドグレー;
}

.header .nav {
    リストスタイル: なし;
}

.header .nav li {
    ディスプレイ: インラインフレックス;
}

.header .nav li a {
    ディスプレイ: フレックス;
    パディング: 0.5rem;
    色: 赤;
}

上記のコードは、子要素にスタイルを追加するために同じ親要素を繰り返し宣言する必要があるため、わかりにくいように見えます。

しかし、SCSS のネストされた構文を使用すると、より簡潔なコードを記述できます。上記のコードを SCSS で記述すると、次のようになります。

.ヘッダー{
    パディング: 1rem;
    border-bottom: 1px のソリッドグレー;

    .nav {
        リストスタイル: なし;

        li {
            ディスプレイ: インラインフレックス;

            {
                ディスプレイ: フレックス;
                パディング: 0.5rem;
                色: 赤;
            }
        }
    }
}

したがって、SCSS を使用してコンポーネントを設計すると、従来の CSS に比べて、よりエレガントで簡潔になります。

@extend 機能 - 同じスタイルを繰り返さないでください。

SCSS では、 @extendを使用して、異なるセレクタ間で同じプロパティを共有できます。プレースホルダーでの@extendの使用方法は次のとおりです。

%unstyled-list {
    リストスタイル: なし;
    マージン: 0;
    パディング: 0;
}

%unstyled-listコードの繰り返し記述を回避できる構文糖です。このリスト スタイル テンプレートは、たとえば次のようなさまざまな場所で使用できます。

.検索結果{
    @extend %unstyled-list;
}

.広告{
    @extend %unstyled-list;
}

.ダッシュボード{
    @extend %unstyled-list;
}

同様に、この定義をインポートするすべてのスタイルシートで再利用できます。

SCSS には、関数、ミックスイン、ループなど、フロントエンド開発をより効率的にする多くの機能もあります。

SCSS から CSS に切り替えるべきでしょうか?

上記では、現在 CSS によって提供されている機能と SCSS の機能について説明しました。しかし、CSS と SCSS を比較すると、CSS にはない必要な機能がいくつかあることがわかります。

  • Web アプリケーションが成長し続けるにつれて、スタイルシートはより複雑で大きくなります。 CSS のネスト機能によりコードの可読性が大幅に向上し、このようなプロジェクトの開発が容易になります。ただし、この記事の執筆時点では、CSS はまだこの機能をサポートしていません。
  • CSS はフロー制御ルールを処理できません。 SCSS には、 @if@else@eachfor @whileなどの組み込みのフロー制御ルールが用意されています。プログラマーとして、この機能はスタイルを定義するのに非常に便利だと思います。これにより、より少ない、より簡潔なコードを記述できるようになります。
  • さらに、SCSS は数値演算子の標準セットをサポートしていますが、CSS では数値計算を実行するためにcalc()関数を使用する必要があります。 SCSS 数値演算では、互換性のある単位間で自動的に変換することもできます。

ただし、 calc() CSS 関数には、除算の場合は除数が数値でなければならない、乗算の場合は少なくとも 1 つの引数が数値でなければならないなど、いくつかの制限があります。

  • もう 1 つの重要な側面は、SCSS の「キラー機能」であるスタイルの再利用です。この点で、SCSS は組み込みモジュール、マッピング、ループ、変数などの多くの機能を提供します。

したがって、CSS には多くの新機能が生まれていますが、それでも SCSS の方が優れた選択肢であると私は考えています。下のコメント欄であなたの考えをお聞かせください。

CSS3 が本当に SCSS に取って代わるかどうかについてのこの記事はこれで終わりです。CSS3 が SCSS に取って代わるかどうかについての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  HTML 5.1 学習: 14 の新機能とアプリケーション例

>>:  初心者向けBootstrap 3.0学習ノート

推薦する

JavaScript によるダイナミッククリスマスツリーの詳細な説明

目次1. CSS のみを使用して作成したアニメーションのクリスマスツリー2. CSS のみを使用して...

暗号化における https の Apache 展開の概要

目次目的実験環境実験原理実験手順1. 独立したCAを生成する2. サーバーの秘密鍵と署名要求ファイル...

MySQLデータベースがNULLを可能な限り避ける理由

MySQL の多くのテーブルには、NULL が列のデフォルト属性であるため、アプリケーションが NU...

Linuxシステムはポート3306、8080などを外部に開放します。ファイアウォール設定の詳しい説明

多くの場合、Linux システムに Web サービス アプリケーション (Tomcat、Apache...

Linux seqコマンドの使い方の詳しい説明

01. コマンドの概要seq コマンドは整数のシーケンスを生成するために使用されます。 02. コマ...

LinuxでのDNSサーバーの設定の詳細な説明

1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...

HTML文書の基本構造(Webページ作成の基礎知識)

HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...

MySQLを水平から垂直に、垂直から水平に変換する方法

データの初期化 `test_01` が存在する場合はテーブルを削除します。 テーブル「test_01...

MySQL データベース インデックスの面接の質問 (基本的なプログラマー スキル)

目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...

CSSを使用してアダプティブスクエアを実装する方法の例

伝統的な方法は、正方形を固定形式で書くことです。長さ=幅を直接書き、次のように固定値を書きます。 。...

Linux で MySQL のデフォルト エンコーディングを変更する方法

開発プロセス中に、MySQL データベースを復元した後にデータベース データに文字化けが発生した場合...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

Jenkins+tomcat の自動ホットデプロイメント/再起動と発生した問題の解決策 (推奨)

1. 背景同社のプロジェクトは、これまでは手動で Maven でパッケージ化し、サーバーにアップロ...

HTML 要素に注釈を付けるときにクラスと ID のどちらが優れているかを分析する

Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...

4つの柔軟なScssコンパイル出力スタイル

多くの人は、Scss を使用する瞬間からコンパイル方法を説明されてきました。したがって、コマンドのコ...