Хотелось играть и иметь повод, чтобы узнать больше jQuery, поэтому я решил попробовать свои силы в Color Thief, но у меня проблема с правильной выдачей массива. К сожалению, документация не самая большая для Color Thief, но после некоторых поисков я нашел вопрос в отношении getColor()
но не getPalette().
Из моего понимания блога Color Thief был createPalette()
- массив, но когда я пытаюсь отобразить содержимое, которое он остается на <span>
:
HTML:
<div class="imgtest">
<img id="theimage" src="item.jpg" alt="image">
</div>
<div id="results"></div>
jQuery:
<script type="text/javascript">
$(window).ready(function(){
var sourceImage = document.getElementById("theimage");
var colorThief = new ColorThief();
var color = [colorThief.getPalette(sourceImage, 2)];
var newHTML = $.map(color, function(value) {
return('<span>' + value + '</span>');
});
$("#results").html(newHTML.join(""));
});
</script>
Вывод:
<span>205,144,9,245,228,217,172,196,11</span>
Что я делаю не так? Моя конечная цель - отображать каждый цвет в массиве с именем color[]
.
Если я прав, думая, что вы хотите, чтобы каждый цвет находился внутри него, вам нужно присоединиться к значениям внутри отображения. Каждое значение color
представляет собой массив, содержащий значения цвета RGB:
var color = colorThief.getPalette(sourceImage, 2);
var newHTML = $.map(color, function(value) {
return('<span>' + value.join(', ') + '</span>');
});
$("#results").html(newHTML.join(''));
<span>119, 175, 169</span><span>214, 191, 131</span><span>53, 37, 28</span>
и все это в одной строке. Если они вам нужны в разных строках, поменяйте разметку.(', ')
делает?