2013-06-08 1 views
2

У меня есть многомерный список:Доступ SASS многомерный список ключ

$color-set: (bg-color #888, border-color #444, active-bg-color #666, hover-bg-color #808080) 

В настоящее время я доступа к каждому с помощью:

$color-set: (#888, #444, #666, #808080) 
#div { 
    background: nth($color-set, 1) 
} 

Есть ли способ использовать ключ вместо как:

#div { 
    background: $color-set(bg-color) 
} 

поэтому мне не нужно помнить о порядке цветов в списке?

+3

заказ Карты - которые приходят как часть Sass 3.3.0: https://github.com/nex3/sass/ blob/master/doc-src/SASS_CHANGELOG.md # sassscript-maps – KatieK

ответ

3

Все, что у вас есть, есть список списков, а списки содержат только числовые индексы. Вам нужно будет написать функцию, которая выполняет итерацию над вашим списком и сравнивает первый элемент с каким-либо строковым аргументом. Это не то, что я рекомендую, так как это не выгодно использовать обычные переменные.

@function find-value($list, $key) { 
    @each $item in $list { 
     @if ($key == nth($item, 1)) { 
      @return nth($item, 2); 
     } 
    } 
    @return false; 
} 

Sass настоящее время не поддерживает отображения, но будет скоро: https://github.com/nex3/sass/issues/642

+0

'$ items' должно быть' $ item' на '@return nth ($ items, 2);' – Fernker

1

Просто используйте отдельную переменную для каждого цвета?

$bg-color: #888; 
$border-color #444; 

div { 
    background: $bg-color 
} 
+0

На самом деле я хочу, чтобы эти цвета были в одной переменной, чтобы представлять цветовую схему. Есть ли способ достичь этого с помощью моей желаемой настройки? –

+0

Какое преимущество у вас есть для отдельных переменных? – cimmanon

Смежные вопросы