Javascript 在动态元素上应用渐变色或纯色
我正在尝试使用jquery将渐变或纯色应用于元素。为什么要使用jQuery?因为这个网站有几个不同的颜色组合,所以生成css类的工作太多了 假设我有一个JSON调用生成的列表Javascript 在动态元素上应用渐变色或纯色,javascript,jquery,css,Javascript,Jquery,Css,我正在尝试使用jquery将渐变或纯色应用于元素。为什么要使用jQuery?因为这个网站有几个不同的颜色组合,所以生成css类的工作太多了 假设我有一个JSON调用生成的列表 <div class="colours"> <ul> <li class="black white"></li> <li class="green"></li> </ul> </div> 我做错了什么?我建议单独阅
<div class="colours">
<ul>
<li class="black white"></li>
<li class="green"></li>
</ul>
</div>
我做错了什么?我建议单独阅读每种颜色,然后应用渐变/纯色逻辑。比如:
$('li').each(function(){
var classNames = $(this).attr("class").toString().split(' ');
$.each(classNames, function (i, className) {
// do solid color or gradient
});
});
下面是一个使用数据属性的解决方案
css()
将线性渐变应用于css规则- 数据颜色(“rgb(255123,43)”代码>
数据颜色(“#222#546”)代码>
数据颜色(“rgb(2150255)#3a1”)代码>
$(“.colors”).find('li')。每个(函数(索引,e){
变量$elem=$(e);
var COLORATTRI=$(此).data(“颜色”);
var colors=coloratri.split(“,”);
如果(颜色.长度>=2){
var linear=“线性梯度(90度)”;
用于(颜色的var指数){
线性+=颜色[指数];
如果(索引!=colors.length-1){
线性+=“,”;
}
}
线性+=”;
$elem.css({
背景:线性,
});
}else if(colors.length==1){
$elem.css(“背景色”,颜色[0]);
}
});代码>
li{
填充:20px;
颜色:白色;
}
- 此处有一些文字
- 这里有一些文字
- 此处有一些文字
- 此处有一些文字
- 这里有一些文字
这里有一些文字
这里有一些文字
我猜你的字符串(“-moz线性梯度(-45度,+颜色[0]+0%,+颜色[0]+49%,+颜色[1]+49%,+颜色[1]+100%)”
)就是问题所在;您需要将变量与字符串连接起来(给出:'-moz线性梯度(-45度,+colors[0]+'0%'、+colors[0]+'49%,“+colors[1]+'49%,+colors[1]+'100%)
)为什么要在最后一行中使用,
,连字符中的变量将不会由Javascript计算。使用字符串连接+
。这看起来比编辑、扩展或重置css要痛苦得多。我不完全理解。。。类名是动态生成的??!或者这是json调用后的一个“函数”…你能解释一个liitle吗?不,它只是在每个列表项中循环使用类名。好的,这正是我想要的!只有一件事。。。是否可以将eg设置为50%白色和50%黑色?因此,您将获得与普通css规则相同的线性渐变(135度,#0000000%,#00000049%,#ffffff 49%,#ffffff 100%)你试过了吗?哦,好吧,我想我会为你更新的。是的,代码工作得非常完美。唯一的一点是,它需要是每种颜色的50%,而不是真正的渐变;)现在它在“,”而不是“,(空格)上分开了。好吧,我明白你(我想)做了什么;)。。。你从类名中获取的颜色是如“黑色”等。。。我之前的问题实际上是,我如何才能将50%添加到该类名中,使其读取线性渐变(135度,#0000000%,#00000049%,#ffffff49%,#ffffffff100%)代码>??我自己无法添加,因为类名是动态生成的。。。
$('li').each(function(){
var classNames = $(this).attr("class").toString().split(' ');
$.each(classNames, function (i, className) {
// do solid color or gradient
});
});