|
|
|
| Всем привет, есть примеры реализации подобной штуки? Пользователь задает цвет фона из всевозможных цветов, после этого, нужно выводить информацию на этом фоне. Нужно автоматически определить темный и светлый цвет фона, и в зависимости от этого изменить цвет текста (на белый или черный).
У кого есть примеры?
Заранее спасибо! | |
|
|
|
|
|
|
|
для: grafen
(09.01.2011 в 18:35)
| | Это "игра-шутка" такая или...? А выбрать при этом и цвет шрифта пользователю почему не разрешить?
Есто такое понятие, как цветовой круг. Можно исходя из этого выбрать цвет. | |
|
|
|
|
|
|
|
для: sim5
(09.01.2011 в 19:01)
| | Нет, это не игра. Есть разные категории, которые нужно выделять разными цветами (по вкусу), вот пользователь и выбирает цвет. А потом, когда нужная категория показывается с фоном (выбранным цветом), то нужно выводить текст на этом фоне. Чтобы чёрным текстом на черном фоне не получилось, нужно разграничить как-то автоматически. Да, можно пользователю добавить функцию выбора цвета текста, но это лишнее действие - в моих планах, пока сделать без этого.
"Цветовой круг" - это конечно интересно, но нужно более-менее готовое решение, чтобы не ломать голову и не разбираться во всей структуре цветов и тд... | |
|
|
|
|
|
|
|
для: grafen
(09.01.2011 в 20:05)
| | можна сделат ьпроверочку js
типа if (цвет == черн)
текст белый
иф цветф == белый
черн
перед етим достать из блока стиль с бекграунд колором и поместить в переменную
)
думаю так будет само проще) | |
|
|
|
|
|
|
|
для: grafen
(09.01.2011 в 20:05)
| | В таком случае что вам мешает? Цвет пользователь ведь не задает желанием "хочу серо-буро-малиновый", а конкретными цифрами. Цветовой же круг полезен для того, чтобы вы поняли - не любой фоновый цвет будет гармонировать с черным или белым шрифтом. | |
|
|
|
|
|
|
|
для: sim5
(09.01.2011 в 20:23)
| | TavRoX, у меня же не только черный и белый фон(цвет текста), мне нужно определить по коду '#CCCCCC' - темный это цвет или светлый, и в зависимости от этого подставить цвет текста.
sim5, да, пользователь задает код цвета из всей палитры. Но он же не указывает - тёмный или светлый этот цвет. Это нужно определить автоматически. То что, не все цвета будут гармонировать - это понятно, но для начала нужно имея лишь один код цвета - определить, темный или светлый он. | |
|
|
|
|
|
|
|
для: grafen
(09.01.2011 в 22:33)
| | думаю что глупость позволять всю палитру юзать | |
|
|
|
|
|
|
|
для: TavRoX
(09.01.2011 в 22:36)
| | Ну я бы так не сказал. Я посмотрел варианты палитр с фиксированными цветами и с полным градиентом - и выбрал полный, т.к. красиво, удобно и места занимает немного.
Вот здесь пример, как автоматически меняется цвет текста в поле, в зависимости от цвета фона:
http://jscolor.com/try.php | |
|
|
|
|
|
|
|
для: grafen
(09.01.2011 в 22:33)
| | Еще раз взгляните на цветовой круг. Есть цвета, которы светлее белого? Думаю после этого вопросов типа '#CCCCCC' - темный это цвет или светлый, не будет.
Шрифт белого цвета может более менее удобно читаем на большом диапазоне синего, а вот на зеленом нет, тем более не желтом. Если вы это понимаете, и если так хочется, то надо загодя ограничиться некой палитрой цветов, на которых можно уже будет писать либо белым, либо черным. Задача за вами будет не в определении темный или светлый, а какому диапазону этой палитры ближе цвет. Еще лучше предлагать выбор ни чего захочу, а эту палитру. | |
|
|
|
|
|
|
|
для: sim5
(10.01.2011 в 02:36)
| | В приведенной выше ссылке, отлично реализована смена цвета текста при смене фона. Поэтому нет смысла ограничивать возможности пользователей, нужно лишь найти алгоритм смены цвета... | |
|
|
|
|
|
|
|
для: grafen
(10.01.2011 в 16:15)
| | >нужно лишь найти алгоритм смены цвета
А что, по ссылке Вам никак не разобраться - как именно там цвет меняется?
Подсказываю -
style.color =
0.213 * this.rgb[0] +
0.715 * this.rgb[1] +
0.072 * this.rgb[2]
< 0.5 ? '#FFF' : '#000';
|
| |
|
|
|
|
|
|
|
для: Абырвалг
(10.01.2011 в 16:27)
| | Да, я пытался разобраться с этой строчкой. Но не пойму, как разложить цвет, чтобы получались 3 этих значения - this.rgb
В примере, хорошо видно, какие это значения:
http://jscolor.com/example/getting-color.html
Осталось понять, как, имея только цвет(например #cccccc), разложить его на 3 составляющих, чтобы формула заработала... | |
|
|
|
|
|
|
|
для: grafen
(11.01.2011 в 18:50)
| |
<script>
var color = "#cccccc";
var HX = '0123456789abcdef'.split ('');
for (var DC = [], j = 0; j < HX.length; j++) DC [HX [j]] = j;
for (var rgb = [], t = color.substr (1), j = 0; j < 3; j++)
rgb [j] = DC [t.charAt (j * 2)] * 1 + DC [t.charAt (j * 2 + 1)] * 16;
alert (rgb)
</script>
|
| |
|
|
|
|
|
|
|
для: Абырвалг
(11.01.2011 в 20:35)
| | Нужно просто сдвигать вправо и получать по маске FF. | |
|
|
|
|
|
|
|
для: sim5
(11.01.2011 в 23:49)
| | >Нужно просто сдвигать вправо и получать по маске FF
"Просто" - это как?
Постучать кулаком по монитору и сказать ему - "Эй, подвинься по маске", да?
Не поделитесь своей "простотой"? | |
|
|
|
|
|
|
|
для: Абырвалг
(12.01.2011 в 02:27)
| | Просто, это логический сдвиг, который для компьютера является плевой задачей. ;-) | |
|
|
|
|
|
|
|
для: sim5
(12.01.2011 в 02:28)
| | Ну давайте, делитесь, не скромничайте.
Как я понял, стучать не надо - надо в монитор плевать, да? | |
|
|
|
|
|
|
|
для: Абырвалг
(12.01.2011 в 02:30)
| | Вы что логических функций не знаете? Собственно тема эта перекочевала из РНР (почему не знаю), и автор указывает, что получает запрос цвета, а значит и обработка его должна происходить на сервере, а на сервере можно воспользоваться всего одной функцией GD, которая и вернет массив цветовых компонет. | |
|
|
|