2015-05-03 3 views
3

Можно ли написать класс с предопределенным цветом HexCodes? Так что в моем HTML я могу создавать такие элементы, как:Как написать классы с параметром в scss?

$yellow: #FFFF00; 

.color($colorName) { 
color: $colorName; 
} 

<div class="color(yellow)"> 
</div> 

Это будет мое решение проблемы. Моя проблема в том, что я получил слишком много классов с цветами в моем scss-файле.

Спасибо

+2

Это не то, для чего создан Сасс. Почему бы вам не использовать встроенный CSS? «цвет: желтый» - лучший способ пойти (в данном конкретном случае). –

+1

Вы понимаете, что Сасс только скомпилирован прямо к CSS, так? Он никогда не отправляется клиенту. – cimmanon

ответ

3

Вы можете достичь этого в SCSS довольно легко. Для быстрого решения: here's the code in a JSfiddle.

Более сложное объяснение:

С SASS 3.3 вы можете использовать map data structure. Они хранят смесь пар ключ/значение:

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

Таким образом, в вашем случае, вы можете создать карту цветов (до тех пор, или коротким, как вам нравится) для дальнейшего использования:

$colors: (
    red: #ff0000, 
    yellow: #ffd000, 
    blue: #00baff, 
    green: #00ff00 
); 

Теперь, чтобы сгенерировать классы CSS вам нужно перебираем карту с хорошим битом ШАОН:

@each $colorname, $color in $colors { 
    .square--#{$colorname} { 
     background-color: $color; 
    } 
} 

Все это @each цикл делает цикл по каждой паре ключ/значение в $ цветов, назначение клавиш (например: красный) - $ colorname и значение (например: # ff0000) - цвет $.

Составленный CSS будет:

.square--red { background-color: #ff0000; } 
.square--yellow { background-color: #ffd000; } 
.square--blue { background-color: #00baff; } 
.square--green { background-color: #00ff00; } 

Если в будущем вы хотите добавить новый цвет, это так же просто, как добавить ключ/значение пары до $ цвета карты и компиляции!

+1

Это хороший ответ (и это было сделано до смерти по сотням других вопросов), но это не то, о чем просит ОП. В них конкретно говорится: «Моя проблема в том, что у меня слишком много классов с цветами в моем scss-файле». – cimmanon

+1

Я знаю, что ОП просил что-то немного другое. Но поскольку то, что он ищет, невозможно, имеет смысл указать ему в сторону ближайшей возможной работы. Фактически, пример CSS, который он предоставляет, не за горами, который я предлагаю - он выполняет функцию, которая будет генерировать для него стили CSS. Независимо от того, отвечает ли мой ответ его потребностям, зависит от него. –

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