Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Функции цвета

Less умеет вычислять новые цвета из одного основного: сделать темнее для наведения, светлее для фона, прозрачнее для тени. Функция цвета принимает цвет и параметр и возвращает новый цвет. Так вся палитра выводится из нескольких переменных.

Темнее и светлее

darken() и lighten() уменьшают и увеличивают светлоту цвета на заданное число процентов. Сделайте оттенок наведения для кнопки в styles/components/buttons.less:

// styles/components/buttons.less
@primary: #2563eb;
 
.btn {
  color: white;
  background: @primary;
 
  &:hover {
    background: darken(@primary, 10%);
  }
}
.btn {
  color: white;
  background: #2563eb;
}
.btn:hover {
  background: #134cca;
}
<style>
  .btn {
    color: white;
    background: #2563eb;
  }
  .btn:hover {
    background: #134cca;
  }
</style>
 
<button class="btn">Наведите на меня</button>

При наведении кнопка становится заметно темнее, а второй цвет не пришлось подбирать вручную.

Прозрачность

fade() задаёт цвету непрозрачность в процентах — удобно для теней и подложек:

// styles/components/cards.less
@primary: #2563eb;
 
.card {
  border: 1px solid fade(@primary, 30%);
  box-shadow: 0 4px 12px fade(@primary, 20%);
}
.card {
  border: 1px solid rgba(37, 99, 235, 0.3);
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2);
}

Less вывел rgba() с прозрачностью 0.3 и 0.2.

Смешивание

mix() смешивает два цвета, tint() — смешивает с белым, shade() — с чёрным. Это даёт мягкие фоны для сообщений:

// styles/components/alerts.less
@danger: #dc2626;
 
.alert-danger {
  color: shade(@danger, 40%);
  background: tint(@danger, 85%);
  border-left: 4px solid @danger;
}
.alert-danger {
  color: #841717;
  background: #fadede;
  border-left: 4px solid #dc2626;
}
<style>
  .alert-danger {
    color: #841717;
    background: #fadede;
    border-left: 4px solid #dc2626;
  }
</style>
 
<div class="alert-danger" style="padding: 12px">Не удалось сохранить пост.</div>

Справочная таблица

ФункцияЧто делает
lighten(@c, 10%), darken(@c, 10%)Светлее и темнее
saturate(@c, 10%), desaturate(@c, 10%)Ярче и бледнее
fade(@c, 50%)Задаёт непрозрачность
fadein(@c, 10%), fadeout(@c, 10%)Меньше и больше прозрачности
mix(@a, @b, 50%)Смесь двух цветов
tint(@c, 20%), shade(@c, 20%)Смесь с белым и с чёрным
spin(@c, 180)Поворот оттенка на цветовом круге
greyscale(@c)Оттенок серого
contrast(@c)Чёрный или белый — что лучше читается на @c

contrast() полезна для текста на цветном фоне: на жёлтом #facc15 она вернёт чёрный, на синем #2563eb — белый.

Частая ошибка

Непрозрачность в fade() задаётся в процентах. Число 0.5 Less поймёт как полпроцента:

// styles/components/cards.less
.card {
  box-shadow: 0 4px 12px fade(#2563eb, 0.5);
}
.card {
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.005);
}

Тень почти невидима. Пишите fade(#2563eb, 50%).

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.