2014-11-10 3 views
1

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

Есть ли простой способ я мог бы просто переключаться между черно-белыми цветами переднего плана в зависимости от цвета фона?

+2

№ [15 символов.] – Scimonster

+0

@Scimonster - Вы говорите, что не можете прочитать цвет фона элемента с помощью JavaScript? Если это так, это неверно. – j08691

+0

@ j08691 Вы можете прочитать это достаточно легко. Но удача выясняет, выглядит ли белый или черный цвет лучше. – Scimonster

ответ

4

Ну, вы можете преобразовать RGB в HSL (Hue, Saturation, Lightness), а затем выбрать черный, если светимость выше порога и белого цвета, если она ниже порога.

Для справки значение Освещенность рассчитывается с:

L (lightness) = (M + m)/2 

где М макс (R, G, B), и т составляет мин (R, G, В).

Для симметрии я предлагаю порог 127,5 (половина 255), но на самом деле вам стоит поиграть и посмотреть, хорошо ли это выглядит.

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