Скрипт для перекраски векторных объектов в цвет фона лежащего под ним (тестирование закончено). Программы подбора цвета стен Visualizer от Dulux Приложение для мобильных устройств

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

Чтобы сделать такую палитру, нужно сделать 4 шага. Начнем по-порядку с разметки HTML . Добавлять ее нужно туда, где хотите увидеть саму палитру.

  • RGB:
  • HSV:
  • HEX:

Главный родительский блок с айди - color-picker . В нем заключено три основных блока, которые внутри имеют дочерние элементы, что и создают структуру нашей палитры. Давайте разберем их по порядку, относительно изображению ниже.

  • Блок с айди picker-wrapper - это первый блок. Отвечает за вывод квадрата с градиентом одного цвета, чтобы выбрать его оттенок. Внутри него блок с самим градиентом и блок, отвечающий за указатель.
  • Блок с айди pcr-wrapper - второй блок отвечающий за блок, что выводит все цвета в виде градиента. Внутри блок с градиентом и блок, что выводит ползунок, что передвигается вверх вниз.
  • UL список с айди color-values - Внутри него расположено несколько пунктов. Первые три, на схеме они под номером - 3. Они выводят коды цветов в трех форматах - RGB, HSV, HEX .
  • Блок на картинке, что под номером 4, это один из элементов предыдущего списка. Это последний li пункт. Внутри него блок с айди pcr_bg . Этот блок выводит текущий выбранный цвет.
  • Можете в зависимости от Ваших нужд, менять местами или вообще убирать те элементы, что не нужны. Когда полностью завершим с установкой палитры, тогда Вы сможете более подробно сами разобраться и определить, как поменять тот или иной элемент палитры.

    Вторым шагом по установке палитры, будет добавление стилей CSS . Их добавляете, как обычно в файл стилей своего сайта, ну или того элемента, к которому Вы подключаете данную цветовую палитру.

    #color-picker{ margin:25px auto; width:450px; } #color-values{ display:block; list-style:none; color:#222; float:left; margin:0 0 0 15px; padding: 5px; text-align:left; } #pcr_bg{ height:135px; } .picker-wrapper, .pcr-wrapper { position: relative; float: left; } .picker-indicator, .pcr-indicator { position: absolute; left: 0; top: 0; } .picker, .pcr { cursor: crosshair; float: left; } .cp-default .picker { width: 200px; height: 200px; } .cp-default .pcr { width: 30px; height: 200px; } .cp-default .pcr-wrapper { margin-left: 10px; } .cp-default .picker-indicator { width: 5px; height: 5px; border: 2px solid darkblue; -moz-border-radius: 4px; -o-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; opacity: .5; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); filter: alpha(opacity=50); background-color: white; } .cp-default .pcr-indicator { width: 100%; height: 10px; left: -4px; opacity: .6; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60); filter: alpha(opacity=60); border: 4px solid lightblue; -moz-border-radius: 4px; -o-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; background-color: white; }

    По CSS расписывать не буду. Как и говорил, палитру вряд ли новичок будет ставить, а бывалый с CSS знаком. Думаю разберетесь какой параметр за что отвечает. Переходим к следующему шагу.

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

    Файл называется colorpicker.min.js . Подключите его в шапке или в подвале сайта, если выводить палитру будете на сайте. Если в каком-то модуле, плагине и тд, то там где вы подключаете остальные скрипты. Естественно укажите правильный путь к файлу.

    Ну и последний шаг, это подключение скрипта, который будет управлять выводом значений палитры, ну и запустит ее работу как таковую. Скрипт лучше всего подключать сразу после блока палитры с HTML.

    cp = ColorPicker(document.getElementById("pcr"), document.getElementById("picker"), function(hex, hsv, rgb, mousePicker, mousepcr) { currentColor = hex; ColorPicker.positionIndicators(document.getElementById("pcr-indicator"), document.getElementById("picker-indicator"), mousepcr, mousePicker); document.getElementById("hex").innerHTML = hex; document.getElementById("rgb").innerHTML = "rgb(" + rgb.r.toFixed() + "," + rgb.g.toFixed() + "," + rgb.b.toFixed() + ")"; document.getElementById("hsv").innerHTML = "hsv(" + hsv.h.toFixed() + "," + hsv.s.toFixed(2) + "," + hsv.v.toFixed(2) + ")"; document.getElementById("pcr_bg").style.backgroundColor = hex; }); cp.setHex("#D4EDFB");

    В скрипте можно настроить несколько моментов. Давайте разберем их. То что можно менять начинается с 9-ой строки.

    • 9-я строка - блоку с айди - hex , присваивается значение цвета в формате hex. То бишь в списке, что на картинке выше под номером 3, первая строка. Таким образом, Вы можете присваивать любому блоку код цвета, для его вывода.
    • 10-я строка - блоку с айди - rgb , присваивает значение в формате rgb. Все аналогично предыдущему пункту.
    • 11-я строка - блоку с айди - hsv , присваивает значение в формате hsv.
    • 13-я строка - блоку с айди - pcr_bg , присваивается стиль, в виде фона соответствующего формату hex. То бишь, тому квадрату, что показывает текущий цвет. Схожим образом Вы можете выводить цвет с палитры, например, для фона сайта определенного блока и тд.
    • 15-я, последняя строка, задает цвет по-умолчанию. Можете указать свой, в формате hex.

    Вот по сути и все подключение цветовой палитры. Как и говорил в самом начале, новичку данная статья может не помочь, рассчитана она на более опытных вебмастеров. Надеюсь, она поможет Вам.

    На этом все, спасибо за внимание. 🙂

    Жара продолжает бушевать в столице и в северной столице и будет продолжаться ещё как минимум неделю. В связи с этим я постараюсь не парить сильно мозги всякими практическими темами и, по возможности, буду предлагать достаточно легковесные посты, например, как этот.

    Итак, все прекрасно знают для чего нужен color picker, известный также под русскоязычным названием - "пипетка" (а для детей известен как "пипеточка" - прим.ред. ).

    Иногда на сайтах требуется установить color picker (к примеру, ) , а посему я предлагаю все, найденные мной, плагины пипеток на jQuery. Полагаю это наиболее полная коллекция. Итак.

    Все плагины делятся на две категории. Одна из категорий представляет собой атлас цветов (swatches) - есть какие-то предустановленные цвета, из которых надо делать выбор. А вторая категория - позволяет выбирать всевозможные варианты цветов, путём перемещения по цветовому полю - color picker . Оба названия взяты из соответствующих инструментов Adobe Photoshop.

    Все плагины проверялись в Internet Explorer 6-8, Google Chrome 5, Opera 10.60, Opera 9.26, Mozilla Firefox 3.6.6, Safari 4.03.

    Color Pickers

    Гибридный плагин, содержащий в себе и color picker, и swatches. Лучший в линейке плагинов, т.к. корректно работает во всех ишаках, даёт информацию о цвете в системах HSV и RGB, даёт номер цвета. При этом если вы будете кликать по точечкам рядом с буквами RGB и HSV, то внешний вид палитры будет изменяться! Иными словами, есть всё, на вкус и на цвет.

    Eyecon Color Picker . Очень приятный и удобный плагин. Выдаёт параметры цвета в цветовых системах RGB и HSB, даёт также номер цвета. Более и не надо. Возможно задать два цвета в окошках справа вверху, чтобы их сравнивать. По ссылке инфо можно найти очень полезную информацию по плагину. Замечена некорректная работа в IE6 - цветовое поле представлено оттенками серого, но при этом цвета в полях справа вверху показаны нормально, да и номера цветов указываются верно. По ссылке на второй пример указана упрощённая версия плагина. В целом плагин очень хорош, и если выбирать не jPicker, то этот. Советую.

    Intelliance Color Picker . Очень похож на упрощённую версию от Eyecon, но обладает своими недостатками. Показывает цвет в системе RGB и даёт номер цвета. В шестом экплорере выдаёт красное поле, боковая полоска цветов отсутствует. При этом в окошке справа вверху цвет показывается, номер цвета даётся корректно. В остальном всё нормально. По окончании выборки цвета возможно вызывать какую-нибудь функцию.

    . Плагин, внешне отличающийся от предыдущих. Даёт только номер цвета, хотя в некоторых случаях вроде бы можно получить нормированный цвет по системе HSL (нормированный к единице). Работает корректно вроде как везде. Хотя 7 ишак у меня просто зависал, но не факт, что в этом виноват плагин, нужно проверять.

    Swatches

    Очень приятная палитра цветов. Даёт номер цвета. Баги не замечены.

    Really Simple Color Picker . Очень простой атлас цветов. Цветов всего 36, возвращается номер цвета. Баги не замечены.

    Normal Color Picker . Представляет собой атлас цветов, возвращающий номер цвета. По окончании выборки цвета возможно вызывать какую-нибудь функцию. В IE6 и Opera9.26 не работал, а IE7 намертво зависал, т.е. требуется дополнительная проверка на IE7.

    Simplecolor color-picker . Простой атлас цветов. Не проверялся, т.к. нет онлайн-примера.

    объект . Имя кнопки btn.cvet). Для ключевого кадра создадим скрипт :

    var cvet: ColorTransform = rol.transform.colorTransform; btn.cvet.addEventListener(MouseEvent.CLICK, f); function f(event:MouseEvent):void { cvet.color = 0x0000ff; rol.transform.colorTransform = cvet }

    Изменения в скрипте можно вносить в следующие фрагменты, выделенные красным цветом: в имя ролика (rol), кнопки (btn.cvet), переменной (cvet), функции (f) и в значение цвета (0000ff).

    Разберем работу приведенного выше скрипта:

    • У ролика rol (также, как и у всех символов) есть свойство transform, которое содержит сведения о различных преобразованиях, применяемых к объекту (таких как геометрические преобразования, настройки цвета). Для применения преобразований, связанных с заданием цвета объекта используется свойство colorTransform.
    • Созданная новая переменная cvet получает значение свойств ролика rol, связанных с настройками цвета.
    • Мы меняем значение цвета свойства color на новое:

      0000ff – шестнадцатиричное представление цвета в формате RGB: красный, зеленый и синий цвета задаются в виде двухзначных чисел в шестнадцатиричном коде (в 16-тиричном коде используются арабские цифры 0-9, и латинские буквы a, b, c, d, e, f, выступающие аналогами чисел 10, 11, 12, 13, 14 и 15). Итоговый цвет объекта получается путем смешивания трех цветов в заданных пропорциях.

    • Обновляем свойство colorTransform объекта rol (производим цветокоррекцию).

    Практическая работа №1

    Создадим на сцене ролик ( объект для окрашивания – с именем rol) и 2 кнопки (btn.cvet1 и btn.cvet2), символизирующие 2 цвета в цветовой палитре. Нажатие на каждую кнопку окрашивает ролик в цвет, закрепленный за кнопкой. Внешний вид кнопок должен говорить об их назначении (допустим, цвет кнопок соответствует цвету окрашиваемого объекта).

    В скрипте потребуется создать переменную для считывания цвета объекта и задания для него одного из двух цветов, в зависимости от нажатой кнопки:

    var cvet:ColorTransform = rol.transform.colorTransform; btn.cvet1.addEventListener(MouseEvent.CLICK, f1); function f1(event:MouseEvent):void { cvet.color = 0x0000ff; rol.transform.colorTransform = cvet; } btn.cvet2.addEventListener(MouseEvent.CLICK, f2); function f2(event:MouseEvent):void { cvet.color = 0x00ff00; rol.transform.colorTransform = cvet; }

    Практическая работа №2

    Создадим на сцене 2 кнопки (объекты для окрашивания – с именами rol1, rol2) и 2 кнопки (символизирующие 2 цвета в цветовой палитре - с именами btn.cvet1 и btn.cvet2). Нажатие на кнопку цветовой палитры – выбор цвета; нажатие на кнопки-объекты для окрашивания приводит к окрашиванию их в выбранный шагом ранее цвет. Внешний вид кнопок цветовой палитры должен говорить об их назначении.

    Для окрашивания объекта необходимо выполнить 2 шага:

    • выбрать цвет;
    • выбрать объект, который будет окрашен в выбранный цвет.

      var cvet:ColorTransform = rol1.transform.colorTransform; btn.cvet1.addEventListener(MouseEvent.CLICK, f1); function f1(event:MouseEvent):void { cvet.color = 0x0000ff; } btn.cvet2.addEventListener(MouseEvent.CLICK, f2); function f2(event:MouseEvent):void { cvet.color = 0x00ff00; } rol1.addEventListener(MouseEvent.CLICK, f3); function f3(event:MouseEvent):void { rol1.transform.colorTransform = cvet; } rol2.addEventListener(MouseEvent.CLICK, f4); function f4(event:MouseEvent):void { rol2.transform.colorTransform = cvet; }

    Окрашивание объектов без анализа окраски различных объектов, как правило, не имеет смысла. При создании приложения, в котором раскрашивание объектов используется в качестве инструмента выбора данного объекта, необходимо анализировать цвета, полученные объектами в процессе работы. Существуют программные средства анализа цвета объекта.

    Мы же рассмотрим пример задания, в котором анализ цвета производится путем "запоминания" выбранного цвета для окраски фигуры (а не путем "анализа" цвета уже окрашенной фигуры).

    Допустим, необходимо из набора геометрических фигур отметить квадраты, треугольники и ромбы так: окрасить квадраты одним цветом, треугольники – другим и т.д.


    Рис. 22.1. Интерфейс приложения "Анализ цвета"

    В скрипте объявляются переменные типа Number:

    • c (для хранения информации о выбранном цвете),
    • fla.1, fla.2, fla.3 (для хранения информации о полученном цвете каждым кругом).

    На сцену помещена кнопка "Проверить" (ее имя pr) и динамическое текстовое поле (ttt), в которое выводится информация о правильности/неправильности окраски кругов.

    В случае правильной окраски всех фигур (логическое выражение в команде ветвления будет истинным, когда истины все три простых логических выражения – первое и (&&) второе и (&&) третье) свойству text динамического текстового поля ttt присваивается значение "verno", иначе – "ne verno":

    … pr.addEventListener(MouseEvent.CLICK, f7); function f7(event:MouseEvent):void { if ((fla.1==1) && (fla.2==2) && (fla.3==3)) { ttt.text = "verno"; } else { ttt.text = "ne verno"; } }

    Краткие итоги лекции:

    У символа есть свойство transform , которое содержит сведения о различных преобразованиях, применяемых к объекту (таких как геометрические преобразования, настройки цвета). Для применения преобразований, связанных с заданием цвета объекта используется свойство colorTransform.

    Название ничего не объясняет, это правда. Лучше глянуть на картинку:

    Как видно, подразумеваются три шага: найти какой-либо фон, нарисовать сверху векторных фигурок, запустить скрипт и получить перекрашенные фигурки. Чтобы это сработало потребуется иллюстратор не ниже CS6 и думаю любой (проверено на CS3) фотошоп. Без фотошопа не получится. Да, и еще терпение потребуется)

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

    Теперь чуть-чуть подробнее о каждом этапе:
    1. Фон - фон может быть любым, растровым или векторным. Он может быть как сплошным, так и быть коллажом из чего угодно. Важно только то, что фоном скрипт будет считать все то, что лежит на самом нижнем слое.

    2. Векторные объекты - это то что будет перекрашиваться. По сути речь идет о замкнутых путях, образующих какие-либо фигуры. Компаунды не проверял, думаю они будут проигнорированы. Фигуры могут быть объединены в группы, в том числе многоярусные. Могут быть маскированы (надо только иметь виду что перекрашено будет и то что "скрыто" маской, а это время, о чем ниже). Перекрашиваться будет то, что лежит на самом верхнем слое. Слои между первым и последним будут проигнорированы.

    3. Скрипт и собственно его работа. Фотошоп следует запустить до запуска скрипта. В случае чего скрипт его сам запустит, но так только время лишнее потеряете. Выделять ничего не нужно, если фон и объекты готовы и лежат на своих слоях запускаете и.. долго ждете. Вот и ложка дегтя, процесс этот долгий. не буду пытаться отговориться техническими подробностями, проблема конечно просто в моей криворукости. Так или иначе дело пока обстоит именно так. Пример что на картинке в шапке, делался около 10 минут, а в нем чуть больше 400 шестигранников. Т.е. примерно по 1,5 секунды на объект. Если в процессе будут сбои, время увеличивается на перекраску. Сразу после запуска скрипт прикинет сколько времени потребуется и сообщит об этом. Но отказаться уже будет нельзя (пока что).
    Вторая ложка дегтя, но только владельцами windows-компьютеров - у вас процесс будет выглядеть так, будто иллюстратор завис (напишет "не отвечает"). Фотошоп возможно будет помигивать фоном для перекраски) Но, для того чтобы понимать все плохо или он просто притворяется, я добавил индикацию звуком - системный биип после каждого 10-го перекрашенного объекта. Если вы будете слышать этот бип (проверьте включен ли звук), значит скрипт работает, нужно просто подождать. Собственно компьютер при этом не висит, можно открыть браузер)
    А маководы смогут наблюдать в реальном времени процесс перекраски, объект за объектом.

    Еще несколько общих слов:
    Цвет для заливки берется не из одной точки, а средний из области размером чуть меньшей чем размер bounding box перекрашиваемого объекта.
    Объекты для перекраски и фон не обязательно должны располагаться внтури артборда, это не важно. Во время работы скрипта размер артборда будет скорректирован под все видимое из числа фоновых и целевых объектов, а по завершению возвращено на свои места. Поэтому, если целевой объект лежат не на части фона, и вне артборда - он скорее всего будет покрашен в белый цвет, разве что его немного загрязнит близкий фон из-за особенностей выбора среднего цвета (пункт выше).

    По ссылке ниже сам скрипт и простенький тестовый пример. Лучше начать с него.
    Ссылка: https://yadi.sk/d/aGnOBIkymiPbX
    Бета-тестирование закончено, спасибо всем кто попробовал!
    С активными тестерами продолжим в сложившемся частном режиме.

    Это бета-версия, будут ли улучшения и дополнительные возможности зависит от того найдет ли кто-нибудь баги и придумает ли новые фичи)
    Идею скрипта подала мне art_of_sun , за что ей большое спасибо! Если у кого-нибудь еще есть идеи - welcome!

    Полезная ли игрушка? Пиксилезаторов разных и без меня наделали уже, но может это можно как-то интереснее использовать? Или нет? Кто что думает, высказывайтесь)

    Данный блок думаю будет очень полезен, особенно для случаев, когда Вам необходимо встроить его себе на сайт. Работает этот блок Color Picker с помощью Javascript. Итак рассмотрим, как его добавить на сайт и чем примечателен этот JQuery плагин.

    Работа с кодом

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

    XHTML

    Настройки плагина

    Пользовательские настройки плагина (необязательны).

    • eventName – желаемое события, для вызова функции выбора цвета, по умолчанию: “щелчок”.
    • color – цвет по умолчанию. Строка для HEX цвета или хэш для RGB и HSB ({r:255, r:0, b:0}), по умолчанию: “FF0000″.
    • flat – вывести блок выбора цвета сразу или только по клику, значение по умолчанию false .
    • livePreview – по умолчанию true .
    • onShow – функция обратного вызова срабатывает, когда показан блок выбора цвета.
    • onBeforeShow – функция обратного вызова срабатывает до того, как был показан блок выбора цвета.
    • onHide – функция обратного вызова срабатывает, когда блок выбора цвета скрыт.
    • onChange – функция обратного вызова срабатывает при изменении цвета.
    • onSubmit – функция обратного вызова срабатывает, когда выбираем цвет.

    Надеюсь Вам понравился этот плагин. Желаю успехов и развития Вашему сайту!

    Данный урок подготовлен для вас командой сайта
    Источник урока: http://www.eyecon.ro/colorpicker/
    Перевел: Владислав Бондаренко