Meu*_*les 4 javascript css jquery css3
我正在尝试使用jquery将渐变或纯色应用于元素.为什么用jQuery?因为这个站点有几种不同的颜色组合,所以生成css类太多了.
假设我有一个从JSON调用生成的列表
<div class="colours">
<ul>
<li class="black white"></li>
<li class="green"></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要一个带有渐变(黑/白)和一个实心(绿色)元素的列表元素.
所以我的问题是如何在列表类中包含两种颜色时设置渐变,或者在只需要一种颜色时设置纯色?
使用下面的代码,它总是给我"productHtml不是一个函数"或[object object]
当我尝试应用颜色时.
$.each(data.product.custom, function(i, custom) {
var productsHtml = [];
$.each(custom.values, function(index, value){
var color = (value.title).toLowerCase();
var colorClean = color.replace(/\s?\/\s?/," ");
var colors = colorClean.split(/\s+/);
if (colors.length===1) {
colors[1] = colors[0];
}
// var productHtml = '' +
// '<li class="'+colorClean+'" ></li>';
var productHtml = $('<li></li>').css({
'background': '-moz-linear-gradient(-45deg, + colors[0] + 0%, + colors[0] + 49%, + colors[1] + 49%, + colors[1] + 100%)',
//etc etc
});
productsHtml.push(productHtml);
});
productsHtml = productsHtml.join('');
$('.product.'+id+' .colours').html('<ul>'+productsHtml+'</ul>');
});
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
这是使用data-attribute的解决方案.
css()
.注意它可以有任何颜色值:
data-colour("rgb(255,123,43)");
data-colour("#222 #546");
data-colour("rgb(2,150,255) #3a1");
$(".colours").find('li').each(function(index, e) {
var $elem = $(e);
var colourattri = $(this).data("colour");
var colours = colourattri.split(",");
if (colours.length >= 2) {
var linear = "linear-gradient(90deg, ";
for (var index in colours) {
linear += colours[index];
if (index != colours.length - 1) {
linear += ", ";
}
}
linear += ")";
$elem.css({
background: linear,
});
} else if (colours.length == 1) {
$elem.css("background-color", colours[0]);
}
});
Run Code Online (Sandbox Code Playgroud)
li {
padding: 20px;
color: white;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="colours">
<ul>
<li data-colour="black">Some text here</li>
<li data-colour="black, white">Some text here</li>
<li data-colour="red, blue">Some text here</li>
<li data-colour="pink, white">Some text here</li>
<!-- This can take a lot of colours-->
<li data-colour="red, Orange, green, blue, indigo, violet">Some text here</li>
<li data-colour="rgb(22,150,255), red, #2c3">Some text here</li>
<li data-colour="rgb(22,150,255) 50%, red 60%, #2c3 90%">Some text here</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)