2015-09-22 4 views
2

У меня есть плагин JQuery спектра: Spectrum с палитрой цветов, как эти: PaletteGive палитры элементов границы или название

И мне нужно, чтобы дать Colorpicker на индивидуальную палитру цветов. Есть 5 основных цветов и около 15 других «вторичных» цветов, поэтому я хочу отметить/выделить их как первичные. Например, чтобы дать им черную рамку вокруг ящиков или иметь заголовок для 5 основных цветов.

Смотрите эту скрипку, как, например, (Полный пример): http://jsfiddle.net/bgrins/ctkY3/

<a href='http://bgrins.github.com/spectrum'>&lt;--Spectrum Homepage</a> 

<h2>Basic Usage</h2> 
<input type='text' class="basic"/> 
<em id='basic-log'></em> 

<h2>Full Example</h2> 
<input type='text' id="full"/> 

JS

$(".basic").spectrum({ 
    color: "#f00", 
    change: function(color) { 
     $("#basic-log").text("change called: " + color.toHexString()); 
    } 
}); 

$("#full").spectrum({ 
    color: "#ECC", 
    showInput: true, 
    className: "full-spectrum", 
    showInitial: true, 
    showPalette: true, 
    showSelectionPalette: true, 
    maxSelectionSize: 10, 
    preferredFormat: "hex", 
    localStorageKey: "spectrum.demo", 
    move: function (color) { 

    }, 
    show: function() { 

    }, 
    beforeShow: function() { 

    }, 
    hide: function() { 

    }, 
    change: function() { 

    }, 
    palette: [ 
     ["rgb(0, 0, 0)", "rgb(67, 67, 67)", "rgb(102, 102, 102)", 
     "rgb(204, 204, 204)", "rgb(217, 217, 217)","rgb(255, 255, 255)"], 
     ["rgb(152, 0, 0)", "rgb(255, 0, 0)", "rgb(255, 153, 0)", "rgb(255, 255, 0)", "rgb(0, 255, 0)", 
     "rgb(0, 255, 255)", "rgb(74, 134, 232)", "rgb(0, 0, 255)", "rgb(153, 0, 255)", "rgb(255, 0, 255)"], 
     ["rgb(230, 184, 175)", "rgb(244, 204, 204)", "rgb(252, 229, 205)", "rgb(255, 242, 204)", "rgb(217, 234, 211)", 
     "rgb(208, 224, 227)", "rgb(201, 218, 248)", "rgb(207, 226, 243)", "rgb(217, 210, 233)", "rgb(234, 209, 220)", 
     "rgb(221, 126, 107)", "rgb(234, 153, 153)", "rgb(249, 203, 156)", "rgb(255, 229, 153)", "rgb(182, 215, 168)", 
     "rgb(162, 196, 201)", "rgb(164, 194, 244)", "rgb(159, 197, 232)", "rgb(180, 167, 214)", "rgb(213, 166, 189)", 
     "rgb(204, 65, 37)", "rgb(224, 102, 102)", "rgb(246, 178, 107)", "rgb(255, 217, 102)", "rgb(147, 196, 125)", 
     "rgb(118, 165, 175)", "rgb(109, 158, 235)", "rgb(111, 168, 220)", "rgb(142, 124, 195)", "rgb(194, 123, 160)", 
     "rgb(166, 28, 0)", "rgb(204, 0, 0)", "rgb(230, 145, 56)", "rgb(241, 194, 50)", "rgb(106, 168, 79)", 
     "rgb(69, 129, 142)", "rgb(60, 120, 216)", "rgb(61, 133, 198)", "rgb(103, 78, 167)", "rgb(166, 77, 121)", 
     "rgb(91, 15, 0)", "rgb(102, 0, 0)", "rgb(120, 63, 4)", "rgb(127, 96, 0)", "rgb(39, 78, 19)", 
     "rgb(12, 52, 61)", "rgb(28, 69, 135)", "rgb(7, 55, 99)", "rgb(32, 18, 77)", "rgb(76, 17, 48)"] 
    ] 
}); 
+0

Как мы знаем, какие 5 ваши основные цвета? – Popnoodles

+0

@Popnoodles Нет необходимости знать, какие цвета являются первичными. Мне просто нужно знать, можно ли выделить любые цвета. Но скажем, что первая строка - все основные цвета. – ZerOne

+0

Это помогает, но это нормально. – Popnoodles

ответ

2

Demo

Каждый палец имеет цвет хранится в виде данных, а также плагин имеет обратный вызов, который запускается при показе палитры. Мы можем использовать эти вещи.

Создать список ваших основных цветов

var primary = ["rgb(208, 224, 227)", "rgb(201, 218, 248)", "rgb(207, 226, 243)", "rgb(217, 210, 233)", "rgb(234, 209, 220)"]; 

Добавьте соответствующий CSS

.primary-thumb{ 
    border: 1px solid #000; 
} 

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

show: function() { 
    $('.sp-thumb-el').each(function(){ 
     var this_color = $(this).data('color'); 
     if ($.inArray(this_color, primary) >= 0){ 
      $(this).find('.sp-thumb-inner').addClass('primary-thumb'); 
     } 
    }); 
}, 
+0

Если я запустил эту демонстрацию, я не вижу границ. Я просто забываю их или где они должны появляться? – ZerOne

+0

Моя ошибка, я попробовал что-то с CSS и не исправил ее. Возможно, вы заметили, что фоновый цвет имел неправильное значение. – Popnoodles

+1

Хорошая работа! Но: Не следует ли проверять, если inArray> = 0? – ZerOne

1

Это быстрый взлом.

/*The Array of RGP colors you want to border*/ 
 
var arrayOfRGBColors = ['rgb(255, 128, 0)', 'rgb(255, 235, 205)', 'rgb(255, 255, 255)']; 
 

 
/*Simple flat pallete*/ 
 
$("#flat").spectrum({ 
 
    flat: true, 
 
    showPaletteOnly: true, 
 
    showPalette: true, 
 
    color: 'blanchedalmond', 
 
    palette: [ 
 
     ['black', 'white', 'blanchedalmond', 
 
      'rgb(255, 128, 0);', 'hsv 100 70 50'], 
 
     ['red', 'yellow', 'green', 'blue', 'violet'] 
 
    ], 
 
    move: function (color) { 
 
     border(); 
 
    }, 
 
    show: function() { 
 
     border(); 
 
    }, 
 
    beforeShow: function() { 
 
     border(); 
 
    }, 
 
    hide: function() { 
 
     border(); 
 
    }, 
 
    change: function() { 
 
     border(); 
 
    }, 
 
}); 
 

 
function border() { 
 
    /*Foreach pallete item, set the css*/ 
 
    $('.sp-thumb-inner').each(function() { 
 
     /*Get the RGB color*/ 
 
     var color = $(this).css('background-color'); 
 
     /*If the color is found in the array*/ 
 
     if ($.inArray(color, arrayOfRGBColors) > 0) { 
 
      /*Set the border*/ 
 
      $(this).addClass('bord'); 
 
     } 
 
    }); 
 
}
.bord{ 
 
    border:1px dashed black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.7.1/spectrum.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.7.1/spectrum.min.css" rel="stylesheet" /> 
 

 
<input type='text' id="flat" />

+0

Кажется, чтобы работать, я дам ему попробовать, спасибо! – ZerOne

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