Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Если фон темный, то текст белый и наоборот
 
 автор: grafen   (09.01.2011 в 18:35)   письмо автору
 
 

Всем привет, есть примеры реализации подобной штуки? Пользователь задает цвет фона из всевозможных цветов, после этого, нужно выводить информацию на этом фоне. Нужно автоматически определить темный и светлый цвет фона, и в зависимости от этого изменить цвет текста (на белый или черный).

У кого есть примеры?
Заранее спасибо!

  Ответить  
 
 автор: sim5   (09.01.2011 в 19:01)   письмо автору
 
   для: grafen   (09.01.2011 в 18:35)
 

Это "игра-шутка" такая или...? А выбрать при этом и цвет шрифта пользователю почему не разрешить?
Есто такое понятие, как цветовой круг. Можно исходя из этого выбрать цвет.

  Ответить  
 
 автор: grafen   (09.01.2011 в 20:05)   письмо автору
 
   для: sim5   (09.01.2011 в 19:01)
 

Нет, это не игра. Есть разные категории, которые нужно выделять разными цветами (по вкусу), вот пользователь и выбирает цвет. А потом, когда нужная категория показывается с фоном (выбранным цветом), то нужно выводить текст на этом фоне. Чтобы чёрным текстом на черном фоне не получилось, нужно разграничить как-то автоматически. Да, можно пользователю добавить функцию выбора цвета текста, но это лишнее действие - в моих планах, пока сделать без этого.
"Цветовой круг" - это конечно интересно, но нужно более-менее готовое решение, чтобы не ломать голову и не разбираться во всей структуре цветов и тд...

  Ответить  
 
 автор: TavRoX   (09.01.2011 в 20:09)   письмо автору
 
   для: grafen   (09.01.2011 в 20:05)
 

можна сделат ьпроверочку js
типа if (цвет == черн)
текст белый
иф цветф == белый
черн

перед етим достать из блока стиль с бекграунд колором и поместить в переменную
)
думаю так будет само проще)

  Ответить  
 
 автор: sim5   (09.01.2011 в 20:23)   письмо автору
 
   для: grafen   (09.01.2011 в 20:05)
 

В таком случае что вам мешает? Цвет пользователь ведь не задает желанием "хочу серо-буро-малиновый", а конкретными цифрами. Цветовой же круг полезен для того, чтобы вы поняли - не любой фоновый цвет будет гармонировать с черным или белым шрифтом.

  Ответить  
 
 автор: grafen   (09.01.2011 в 22:33)   письмо автору
 
   для: sim5   (09.01.2011 в 20:23)
 

TavRoX, у меня же не только черный и белый фон(цвет текста), мне нужно определить по коду '#CCCCCC' - темный это цвет или светлый, и в зависимости от этого подставить цвет текста.

sim5, да, пользователь задает код цвета из всей палитры. Но он же не указывает - тёмный или светлый этот цвет. Это нужно определить автоматически. То что, не все цвета будут гармонировать - это понятно, но для начала нужно имея лишь один код цвета - определить, темный или светлый он.

  Ответить  
 
 автор: TavRoX   (09.01.2011 в 22:36)   письмо автору
 
   для: grafen   (09.01.2011 в 22:33)
 

думаю что глупость позволять всю палитру юзать

  Ответить  
 
 автор: grafen   (10.01.2011 в 00:16)   письмо автору
 
   для: TavRoX   (09.01.2011 в 22:36)
 

Ну я бы так не сказал. Я посмотрел варианты палитр с фиксированными цветами и с полным градиентом - и выбрал полный, т.к. красиво, удобно и места занимает немного.

Вот здесь пример, как автоматически меняется цвет текста в поле, в зависимости от цвета фона:
http://jscolor.com/try.php

  Ответить  
 
 автор: sim5   (10.01.2011 в 02:36)   письмо автору
 
   для: grafen   (09.01.2011 в 22:33)
 

Еще раз взгляните на цветовой круг. Есть цвета, которы светлее белого? Думаю после этого вопросов типа '#CCCCCC' - темный это цвет или светлый, не будет.
Шрифт белого цвета может более менее удобно читаем на большом диапазоне синего, а вот на зеленом нет, тем более не желтом. Если вы это понимаете, и если так хочется, то надо загодя ограничиться некой палитрой цветов, на которых можно уже будет писать либо белым, либо черным. Задача за вами будет не в определении темный или светлый, а какому диапазону этой палитры ближе цвет. Еще лучше предлагать выбор ни чего захочу, а эту палитру.

  Ответить  
 
 автор: grafen   (10.01.2011 в 16:15)   письмо автору
 
   для: sim5   (10.01.2011 в 02:36)
 

В приведенной выше ссылке, отлично реализована смена цвета текста при смене фона. Поэтому нет смысла ограничивать возможности пользователей, нужно лишь найти алгоритм смены цвета...

  Ответить  
 
 автор: Абырвалг   (10.01.2011 в 16:27)   письмо автору
 
   для: 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';

  Ответить  
 
 автор: grafen   (11.01.2011 в 18:50)   письмо автору
 
   для: Абырвалг   (10.01.2011 в 16:27)
 

Да, я пытался разобраться с этой строчкой. Но не пойму, как разложить цвет, чтобы получались 3 этих значения - this.rgb

В примере, хорошо видно, какие это значения:
http://jscolor.com/example/getting-color.html

Осталось понять, как, имея только цвет(например #cccccc), разложить его на 3 составляющих, чтобы формула заработала...

  Ответить  
 
 автор: Абырвалг   (11.01.2011 в 20:35)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: sim5   (11.01.2011 в 23:49)   письмо автору
 
   для: Абырвалг   (11.01.2011 в 20:35)
 

Нужно просто сдвигать вправо и получать по маске FF.

  Ответить  
 
 автор: Абырвалг   (12.01.2011 в 02:27)   письмо автору
 
   для: sim5   (11.01.2011 в 23:49)
 

>Нужно просто сдвигать вправо и получать по маске FF

"Просто" - это как?
Постучать кулаком по монитору и сказать ему - "Эй, подвинься по маске", да?

Не поделитесь своей "простотой"?

  Ответить  
 
 автор: sim5   (12.01.2011 в 02:28)   письмо автору
 
   для: Абырвалг   (12.01.2011 в 02:27)
 

Просто, это логический сдвиг, который для компьютера является плевой задачей. ;-)

  Ответить  
 
 автор: Абырвалг   (12.01.2011 в 02:30)   письмо автору
 
   для: sim5   (12.01.2011 в 02:28)
 

Ну давайте, делитесь, не скромничайте.
Как я понял, стучать не надо - надо в монитор плевать, да?

  Ответить  
 
 автор: sim5   (12.01.2011 в 02:33)   письмо автору
 
   для: Абырвалг   (12.01.2011 в 02:30)
 

Вы что логических функций не знаете? Собственно тема эта перекочевала из РНР (почему не знаю), и автор указывает, что получает запрос цвета, а значит и обработка его должна происходить на сервере, а на сервере можно воспользоваться всего одной функцией GD, которая и вернет массив цветовых компонет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования