LESS имеет замечательную функцию contrast()
, которая отлично сработала для меня, см. http://lesscss.org/functions/#color-operations-contrast
"Выберите, какой из двух цветов обеспечивает наибольшую контрастность с другим. Это полезно для обеспечения того, чтобыцвет читается на фоне, что также полезно для обеспечения доступности. Эта функция работает так же, как и функция контрастности в Compass для SASS. В соответствии с WCAG 2.0 цвета сравниваются с использованием значения яркости, скорректированного с помощью гамма-коррекции, а не их яркости.. "
Пример:
p {
a: contrast(#bbbbbb);
b: contrast(#222222, #101010);
c: contrast(#222222, #101010, #dddddd);
d: contrast(hsl(90, 100%, 50%), #000000, #ffffff, 30%);
e: contrast(hsl(90, 100%, 50%), #000000, #ffffff, 80%);
}
Вывод:
p {
a: #000000 // black
b: #ffffff // white
c: #dddddd
d: #000000 // black
e: #ffffff // white
}