У меня есть несколько цветов в формате HSL, вот один из них: 284, 3, 30
.
Мне нужно создать миксин Sass для разработчиков, где все, что им нужно сделать, это добавить или вычесть 50 % значения яркости (30
), чтобы получить желаемый цвет. в соответствии с рекомендациями нашего бренда.
То, что у меня сейчас есть, работает в определенной степени:
@mixin smoke($l:30) {
color: hsl(284, 3, $l);
}
Поэтому, если разработчик хочет добавить 50 % к легкости (+15), он может сделать это следующим образом:
@include smoke(45);
А для более светлого цвета (-15) сделали бы так:
@include smoke(15);
Проблема с этим подходом заключается в том, что разработчики ДОЛЖНЫ помнить значения яркости всех цветов (или возвращаться к рекомендациям снова и снова), чтобы определить, какие 50% определенного цвета им нужно использовать, а затем вручную добавить это значение к аргументу. Имеет смысл?
Я ищу способ создать миксин, который позволит разработчикам просто ссылаться на название цвета в директиве @include
, а затем просто вводить (+50%) или (-50%) в аргументе, а затем, когда CSS компилируется, это будет выглядеть так:
- Более темный цвет:
284, 3, 15
(яркость уменьшена на 50% от 30). - Более светлый цвет:
284, 3, 45
(яркость увеличена на 50% от 30).
Если я делаю @include smoke(+50%);
или @include smoke(-50%);
, я получаю совершенно другие цвета.
Вот мой первоначальный Sass, с которым я работал:
//Color
@mixin smoke($l:30) {
color: hsl(284, 3, $l);
}
body {
/*DOES WORK BUT NOT IDEAL METHOD*/
/*Light = #746f77*/
@include smoke(45);
/*Dark = #272527*/
@include smoke(15);
/*===========*/
/*DOESN'T WORK BUT IDEAL METHOD*/
/*Light = #746f77*/
@include smoke(-50%);
/*Dark = #272527*/
@include smoke(+50%);
}
https://codepen.io/ricardozea/pen/VgRVbG?editors=0100
Спасибо.