【发布时间】:2015-08-25 18:35:28
【问题描述】:
我正在尝试使用 jquery 将渐变或纯色应用于元素。为什么使用 jQuery?因为这个网站有几种不同的颜色组合,所以生成 css 类的工作量太大了。
假设我有一个从 JSON 调用生成的列表
<div class="colours">
<ul>
<li class="black white"></li>
<li class="green"></li>
</ul>
</div>
如您所见,我需要一个带有渐变(黑色/白色)的列表元素和一个纯色(绿色)元素。
所以我的问题是如何在列表类中有两种颜色时设置渐变,或者在只需要一种颜色时设置纯色??
在我下面的代码中,当我尝试应用颜色时,它总是给我“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>');
});
我做错了什么?
【问题讨论】:
-
我冒险猜测您的字符串 (
'-moz-linear-gradient(-45deg, + colors[0] + 0%, + colors[0] + 49%, + colors[1] + 49%, + colors[1] + 100%)') 是问题所在;您需要将变量与字符串连接起来(给出:'-moz-linear-gradient(-45deg,' + colors[0] + ' 0%', + colors[0] + '49%,' + colors[1] + '49%', + colors[1] + '100%)') -
你为什么在
background这一行的最后使用, -
连字符内的变量不会被 Javascript 计算。使用字符串连接
+。 -
这看起来比编辑、扩展或重置 css 要痛苦得多。
标签: javascript jquery css