SASSマップとネストされたリスト
コアポイント
- 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>
$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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

CSS Gridは、レイアウトをこれまで以上に簡単にするように設計されたプロパティのコレクションです。何でもするように、少し学習曲線がありますが、グリッドは

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません
