Мапы, или ассоциативные массивы, представляют собой связь между ключами и значениями, где ключи используются для поиска значений. Они позволяют легко собирать значения в именованные группы и получать доступ к этим группам динамически. Они не имеют прямого аналога в CSS, хотя они синтаксически похожи на media-запросы:

$map: (key1: value1, key2: value2, key3: value3);

В отличие от списков, мапы всегда должны быть заключены в скобки и всегда должны быть разделены запятыми. И ключи и значения в мапах могут быть любыми объектами SassScript. Мап может иметь только одно сопоставление с заданным ключом (хотя это значение может быть списком). Значение ключа, конечно же, может быть сопоставлено многим ключам.

Как и со списками, манипуляции с мапами в основном происходят через функции SassScript. Функция map-get смотрит значение в мапе, функция map-merge объединяет две мапы в одну новую. Директива @each может быть использована для добавления стилей для каждой пары ключ-значение в мапе. Порядок пар всегда остается неизменным с момента создания мапа.

Мапы можно использовать везде, где применимы списки. Если для манипуляции мапами используются функции для списков, то мапы будут рассматриваться как список пар. Например, (key1: value1, key2: value2) будет рассматриваться этими функциями как вложенный список key1 value1, key2 value2. Однако, обратное утверждение верно только для пустого списка (), в остальных случаях списки не могут рассматриваться как мапы. () представляет собой одновременно мапы без пар ключ-значение и список без элементов.

Заметьте, что ключами мапа может быть любой тип Sass данных (даже другой массив) и синтаксис для объявления мапа допускает произвольное применение SassScript-выражений, которые будут рассчитаны для определения ключа мапа.

Мапы не могут быть преобразованы в обычный CSS. Использование мапов в качестве значения переменной или аргумента CSS функции приведет к ошибке. Использование функций inspect($value) для получения результирующей строки полезно для отладки мапов.

Например:

$status-colors: (

  primary: #000,
  success: #27BA6C,
  info: #03a9f4,
  warning: #FF8833,
  danger: #ff1a1a
);

.message {

  @each $status, $color in $status-colors {

    &--#{$status} {

      background: $color;
    }
  }
}

компилируется в

.message--primary {

  background: #000;
}

.message--success {

  background: #27ba6c;
}

.message--info {

  background: #03a9f4;
}

.message--warning {

  background: #f83;
}

.message--danger {

  background: #ff1a1a;
}

На сайте функционирует система проверки ошибок. Обнаружив неточность в тексте, выделите ее и нажмите Ctrl + Enter. Также отправить оповещение об ошибке можно, нажав на эту ссылку.