コアポイント
- SASSマップとネストされたリストはどちらもSASSのデータ構造であり、マッピングはSASS 3.3で導入されました。マッピングは、より複雑なデータストレージを可能にするキー価値のペアを提供しますが、ネストされたリストは複雑なデータを保存できるが、キー価値のペアリングがないよりシンプルな構造です。
- マッピングの複雑さが追加されているにもかかわらず、さまざまなデータ(ブレークポイント幅、色の値、グリッドレイアウト、タイプの割合、その他の応答性のあるタイポグラフィの詳細など)を保存する機能のために、それらは人気があります。一方、ネストされたリストは、シンプルで入力が少ないため、より実用的です。
- SASSマッピングを使用する主な利点の1つは、特定の値に直接アクセスできることです。これにより、コードがより効率的かつ読みやすくなります。ただし、ネストされたリストの書き込みと維持が速い場合がありますが、マッピングのエラーチェックと詳細なクエリ機能がありません。
- ネストされたリストは入力の点でより効率的であるかもしれませんが、各リストに含まれるアイテムの数の絶対的な確実性と注文が必要です。ネストされたリストの欠損値は、SASSが報告しないエラーを引き起こす可能性がありますが、マッピングの場合、
map-get()
関数は1つの値が欠落していても、目的の値を提供できます。
この記事のタイトルは、一部の人々を驚かせるかもしれません。あなたがSASSのベテランである場合、リストのリストを使用して、データのネストされたアレイ(Ruby-Sass-3.3の前)をシミュレートすることを覚えているかもしれません。 (Ruby)SASS 3.3は、マッピングと呼ばれる新しいデータ型を追加します。リストのリストは、複雑なデータをネストされた形式で保存できますが、キー価値のペアリングはありません。マップはキー価値のペアを追加し、データの配列を作成できます。
マッピングの出現により、SASSユーザーの多くは、すべてをマッピングに入れ始めました(そして正当な理由!)。すべてのブレークポイント幅、色の値、グリッドレイアウト、タイプの割合、およびその他の応答性のあるタイポグラフィの詳細をマップに入れることができます!SASSにキー価値ペアマッピングがあるので、リストのリストを使用する正当な理由はありますか?理論的な理由の1つは、後方互換性です。古いバージョンがインストールされている開発者によってSASSが維持される可能性が高い場合、リストが役立ちます。ただし、実際には、SASSバージョンは通常、
またはその他のプロジェクト構成によって制御され、Ruby Gemは1つのコマンド(package.json
gem update sass
マッピングの代わりにネストされたリストを使用することを選択する可能性のあるより実用的な理由は、入力が少ないことです。マップとネストされたリストを比較して、それらがそれぞれの構文とループトラバーサルでどのように比較されるかを見てみましょう。
この例では、応答性のあるタイポグラフィを制御するデータ構造を作成しましょう。 4つのブレークポイントを保存します(まあ、1つは最小のデフォルトビューです)。各ブレークポイントについて、最小幅、最大幅、ベースフォントサイズ、ベースラインの高さを保存します。
複雑なマッピングSyntax
以下は、データをマップに保存する方法です。大きなマップには、値が保存して使用する必要がある変数のマップである4つのキー(ブレークポイントラベル)が含まれます。この読み取り可能な形式では、450文字以上の文字と26行があります。
<code>$breakpoint-map: ( small: ( min-width: null, max-width: 479px, base-font: 16px, vertical-rhythm: 1.3 ), medium: ( min-width: 480px, max-width: 959px, base-font: 18px, vertical-rhythm: 1.414 ), large: ( min-width: 960px, max-width: 1099px, base-font: 18px, vertical-rhythm: 1.5 ), xlarge: ( min-width: 1100px, max-width: null, base-font: 21px, vertical-rhythm: 1.618 ) );</code>
ネストされたリストの構文
同じデータを保存するネストされたリストは、はるかに短くなります。ただし、キーを追加することはなくなったため、データをループするか、関数で呼び出すことに依存する必要があります。つまり、マップよりもはるかに短いです。180文字未満、わずか6行です。 nth()
<code>$breakpoint-list: ( (small, null, 479px, 16px, 1.3), (medium, 480px, 959px, 18px, 1.414), (large, 960px, 1099px, 18px, 1.5), (xlarge, 1100px, null, 21px, 1.618) );</code>
サイクルの比較
データ構造を作成する場合、リストを作成するには、マッピング時間の3分の1を記述する必要があります。しかし、これらの値をループする必要がある場合、どのように比較しますか?複雑なマッピングループ
次のコードを使用して、このマップのトップアイテムをループできます。
この行の先頭にある2つの変数( に割り当てます。このループでは、変数 に相当します。
を使用して使用可能な変数にサブ値を割り当てる必要はありません。必要なネストされたリストループは、100文字未満の2行しかありません。 ネストされたリストは、主な開発者パフォーマンスの利点です。全体として、マッピングを使用したときに行ったほど半分以下で入力できます。ただし、SASSにマップを追加する理由があります。これらは、リストがない関数を提供します:キー値マッピング。 ネストされたリストに依存している場合は、各リストに含まれるアイテムの数と順序を知っていることを絶対に確認する必要があります。リスト内のアイテムを見逃した場合に何が起こるか見てみましょう: コードを実行しようとすると、最後のリストが壊れます。 「xlarge」を 関数は必要なものを提供します。これが私たちのトレードオフです。リストに載っているシンプルさと速度、マッピングの特異性とエラーの予防を失います。 :
この関数は、 の素早い自家製の解釈であり、最初の値を擬似キーとして使用します。 または
結論
マップはキー値のペアを使用するため、リストよりも強力です。追加のSASSマッピング関数は、データを見つけてマッピングされた値を検証する実用的な方法を提供します。 ネストされたSASSリストは、書き込みと維持がより速くなる可能性がありますが、エラーチェックや詳細なクエリのマッピングほど適していない場合があります。ほとんどの場合、冗長性は増加していますが、マッピングがより良い選択肢だと思います。コードの小さなブロックと片足ループの場合、ネストされたリストを使用することがありますが、マッピングはプロジェクト全体の設定とデータストレージにより適しています。 作業のいずれかでマップとネストされたリストを比較したことがありますか、それともコードをリファクタリングして、一方よりも優先順位を付けましたか?コメントであなたの経験を共有してください! このサスマイスターの要点でこのチュートリアルで使用されているコードを見ることができます。 のFAQ
サスマップとネストされたリストの主な違いは何ですか? SASSマッピングの使用方法は? 関数を使用してマップ内の値にアクセスできます。
。
SASSマッピングまたはネストされたリストを使用することの制限は何ですか? <code>@each $label, $map in $breakpoint-map {}</code>
に割り当て、値(ネストされたマップです)は$label
および$map
を使用できます。これは、現在のエントリのキーと値を自動的に表します。 $label
$map
ループは4回反復し、ネストされたマップはそれぞれ繰り返されます。ただし、ネストされたマップから有用なデータを取得するには、$label
関数を使用する必要があります。この関数は、マップの名前と必要なキーの名前の2つのパラメーターを取り、キーに関連付けられた値を返します。 SASSのJavaScriptのPHPまたは$map
構文のmap-get()
$array['key']
$object->key
を使用してすべてのサブマップを反復し、object.key
を使用してその値を有用な変数に割り当てるには、6ラインの220文字のループになります。 @each
ネストされたリストloopmap-get()
<code>@each $label, $map in $breakpoint-map {
$min-width: map-get($map, min-width);
$max-width: map-get($map, max-width);
$base-font: map-get($map, base-font);
$vertical-rhythm: map-get($map, vertical-rhythm);
}</code>
を使用してすべての値を変数に割り当てる必要がありますが、リストの場合、すべての値を変数にすばやく割り当てることができます。
トップレベルリストの各アイテムには同じ順序で同じ5つの値があるため、ループで使用するために各値を動的変数にすぐに割り当てることができます。これらの変数を使用すると、map-get()
map-get()
ネストされたリスト警告<code>@each $label, $min-width, $max-width, $base-font, $vertical-rhythm in $breakpoint-list {
}</code>
逃した値
<code>$breakpoint-map: (
small: (
min-width: null,
max-width: 479px,
base-font: 16px,
vertical-rhythm: 1.3
),
medium: (
min-width: 480px,
max-width: 959px,
base-font: 18px,
vertical-rhythm: 1.414
),
large: (
min-width: 960px,
max-width: 1099px,
base-font: 18px,
vertical-rhythm: 1.5
),
xlarge: (
min-width: 1100px,
max-width: null,
base-font: 21px,
vertical-rhythm: 1.618
)
);</code>
$label
に、「1100px」に$min-width
に正しく割り当てますが、「21px」を$max-width
および "1.618"に$base-font
に割り当てます。その結果、最後のブレークポイントで無効なフォントサイズ宣言と行方不明のライン高プロパティを取得します。また、SASSはこれのエラーを報告していないため、物事が成功するかどうかはわかりません。メディアクエリに最大幅を使用しようとすると、フォントサイズ値(21pxのみ)になります。これは非常に役に立たない最大幅になると思います。 $vertical-rhythm
map-get()
ネストされたリストの使用に関する別の関連する問題は、特定のリストを照会することです。マップにはキーがあるため、map-get()
を使用して任意のサブマップにすばやくアクセスできます。
<code>$breakpoint-list: (
(small, null, 479px, 16px, 1.3),
(medium, 480px, 959px, 18px, 1.414),
(large, 960px, 1099px, 18px, 1.5),
(xlarge, 1100px, null, 21px, 1.618)
);</code>
ネストされたリストから中リストのデータを取得するには、より複雑な機能が必要です。
<code>@each $label, $map in $breakpoint-map {}</code>
ループの終了に到達した場合、nullを返します。基本的には、リストの$breakpoint-list
@each
マッピング関数の欠落map-get()
を使用して、マップに追加のキー値ペアを追加できます。共有キーを使用して
を使用して、共有キーの値を更新します。 map-merge()
を使用して新しいリストを追加できますが、map-merge()
をシミュレートする更新関数には別のカスタムSASS関数が必要です。 join()
append()
もう1つの便利なマッピング関数はmap-merge()
です。この関数は、map-has-key()
サシル奏者を使用して、リストのマッピング関数をシミュレートできます。 (このライブラリは、SASSがマッピングサポートを追加する前にこれらの機能を提供しました。)map-get()
SASSマッピングとネストされたリストは、どちらもSASS Preprocessorsの強力なツールですが、明らかな違いがあります。 SASSマップは、他のプログラミング言語の連想配列に似ており、各値は一意のキーに関連付けられています。これにより、データを簡単に取得、更新、操作できます。一方、ネストされたリストは、JavaScriptの配列と同様の一連の値です。これらは、さまざまな値を保存して反復する必要がある場合に最適ですが、マッピングによって提供される特定の値に直接アクセスする能力がありません。
SASSマップを使用するには、まず、コロンで区切られた各キー価値ペアのペアでマップを定義する必要があります。たとえば、
。次に、次のように、$map: (key1: value1, key2: value2)
map-get
ネストされたリストのようにサスマップをネストできますか? map-get($map, key1)
関数を2回使用する必要があります:
。 map-get
SASSマップを反復する方法は? map-get(map-get($map, key1), key2)
ディレクティブを使用して、SASSマップを反復させることができます。
ディレクティブは、キーと値の2つの変数を取ります。例は次のとおりです。@each
@each
ネストされたリストの代わりにSASSマッピングを使用することの利点は何ですか? @each $key, $value in $map { … }
ネストされたリストをSASSマップに変換できますか? 関数を使用して、ネストされたリストをSASSマップに変換できます。この関数は、ペアのリストを取得し、各ペアがマップ内のキー価値ペアであるマップを返します。
SASSでネストされたリストを使用する方法は?
$list: (value1, value2, value3)
関数を使用できます。 nth
nth($list, 1)
SASSマップとネストされたリストを同時に使用できますか? はい、SASSマッピングとネストされたリストの両方を使用できます。たとえば、マッピングを使用して一連のリストを保存し、その逆も同様です。これは、複雑なデータ構造を整理するのに役立ちます。
SASSマッピングとネストされたリストは強力なツールですが、いくつかの制限があります。たとえば、SASSマップにはキーを重複させることはできず、マップ内のキーの順序を保証することはできません。同様に、ネストされたリストが大きすぎたり複雑すぎたりすると、管理が困難になる場合があります。
以上がSASSマップとネストされたリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

記事では、CSSマージンプロパティ、特に「マージン:40px 100px 120px 80px」、そのアプリケーション、およびWebページレイアウトへの影響について説明します。

この記事では、カスタマイズ、ベストプラクティス、および応答性に焦点を当てたCSSボーダープロパティについて説明します。主な議論:Border-Radiusは、レスポンシブデザインに最も効果的です。

この記事では、CSSのバックグラウンドプロパティ、Webサイトの設計の強化における使用、および避けるべき一般的な間違いについて説明します。重要な焦点は、バックグラウンドサイズを使用したレスポンシブデザインです。

記事では、CSS HSLの色、Webデザインでの使用、およびRGBよりも利点について説明します。主な焦点は、直感的な色の操作を通じて設計とアクセシビリティを向上させることです。

この記事では、CSSでのコメントの使用について説明し、シングルラインとマルチラインのコメント構文を詳述しています。コメントはコードの読みやすさ、保守性、コラボレーションを強化するが、適切に管理されていないとウェブサイトのパフォーマンスに影響を与える可能性があると主張しています。

この記事では、HTML要素のスタイリングのCSSセレクター、その種類、および使用法について説明します。 IDとクラスのセレクターを比較し、複雑なセレクターでパフォーマンスの問題に対処します。

この記事では、CSSの優先順位について説明し、特異性が最も高いインラインスタイルに焦点を当てています。 CSS競合を管理するための特異性レベル、オーバーライド方法、およびデバッグツールを説明します。

記事では、HTMLにCSSを追加する3つの方法について説明します:インライン、内部、および外部。ウェブサイトのパフォーマンスと初心者の適合性に対する各方法の影響が分析されます。(159文字)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ホットトピック









