Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 渐变文本交叉浏览器_Jquery_Html_Css_Gradient - Fatal编程技术网

Jquery 渐变文本交叉浏览器

Jquery 渐变文本交叉浏览器,jquery,html,css,gradient,Jquery,Html,Css,Gradient,我想做一个水平渐变的菜单栏。我在使用-webkit背景剪辑时取得了一些成功,但这在Firefox中不起作用 我找到了一个跨浏览器兼容的jQuery插件pxgradient,但我无法让它跨越几个li元素。请参阅以下JSFIDLE: 我希望梯度更像顶部的梯度。理想情况下,我希望边界底部包含相同的悬停梯度,但我可能生活在一个没有这个梯度的世界里 PS-font-awesome图标之所以出现,只是因为它在前面给了我一些问题,所以我现在就加入了它,以确保它能正常工作 更新: 我玩的另一个可能的想法是读取

我想做一个水平渐变的菜单栏。我在使用
-webkit背景剪辑时取得了一些成功,但这在Firefox中不起作用

我找到了一个跨浏览器兼容的jQuery插件pxgradient,但我无法让它跨越几个
li
元素。请参阅以下JSFIDLE:

我希望梯度更像顶部的梯度。理想情况下,我希望边界底部包含相同的悬停梯度,但我可能生活在一个没有这个梯度的世界里

PS-
font-awesome
图标之所以出现,只是因为它在前面给了我一些问题,所以我现在就加入了它,以确保它能正常工作

更新: 我玩的另一个可能的想法是读取元素的数量,然后划分每个元素的颜色,并使用第n-child()选择器分配每个颜色

<script>
//Get number of list items
var menuItems = $("li").children().length;

//Convert colors to hex
hexString1 = '2850FF';
hexString2 = 'FF0066';
color1 = parseInt(hexString1, 16);
color2 = parseInt(hexString2, 16);

//Calculate difference in colors and color step
colorDifference = color2 - color1;
colorStep = colorDifference / (menuItems - 1);
colorStep = parseInt(colorStep);

//Loop through elements and apply gradients
for (i = 0; i < menuItems; i++) {
    newColor1 = color1 + (i * colorStep);
    newColor2 = color1 color2 -1;
    gradientStart = newColor1.toString(16);
    gradientEnd = newColor2.toString(16);

    //use gradientStart and gradientEnd as colors in the function, not sure on this part yet

}

</script>

//获取列表项的数量
var menuItems=$(“li”).children().length;
//将颜色转换为十六进制
hexString1='2850FF';
hexString2='FF0066';
color1=parseInt(hexString1,16);
color2=parseInt(hexString2,16);
//计算颜色差异和颜色步长
色差=色差2-色差1;
colorStep=色差/(菜单项-1);
colorStep=parseInt(colorStep);
//在元素中循环并应用渐变
对于(i=0;i

这似乎太过分了,一定有更简单的解决办法吗?此外,与只有几个字符的元素相比,具有许多字符的元素将具有相对缓慢的渐变。这可能通过计算每个元素的字符数来解决,但这一切似乎都相当低效

一个简单的解决方案,可以在FF、Chrome和Safari中使用混合模式

诀窍在于,在ul中,梯度设置在a下

设置混合模式:屏幕,此颜色将仅显示在黑色区域(文本和悬停时的边框)

ul{
显示:内联块;
填充:0;
字体大小:30px;
字体大小:粗体;
背景:线性梯度(90度,红色,蓝色);
}
李{
混合模式:屏幕;
背景色:白色;
盒影:8px 0px 0px白色;
}
李,李a{
显示:内联块;
文字装饰:无;
底部边框:3倍纯白;
}
李:停一停{
底部边框:3倍纯黑;
文本阴影:0px 0px 2px灰色;
}


Hmm在摆弄你的小提琴时,我从链接中删除了HREF属性,使文本看起来像你想要的,但当我尝试在pxgradiant调用后插入URL时,它不起作用。如果你想找一份工作或其他方式,我会让你知道的。谢谢你的关注。我有一个不同的想法,但我如何才能回答我自己的问题与常规编辑?长期阅读stackoverlow,第一次海报。@Robert如果你需要澄清什么,请编辑你的问题。编辑“按钮”位于标签下面,如果你找不到它。不可能!我对像你这样的简单解决方案已经放弃了希望。
<script>
//Get number of list items
var menuItems = $("li").children().length;

//Convert colors to hex
hexString1 = '2850FF';
hexString2 = 'FF0066';
color1 = parseInt(hexString1, 16);
color2 = parseInt(hexString2, 16);

//Calculate difference in colors and color step
colorDifference = color2 - color1;
colorStep = colorDifference / (menuItems - 1);
colorStep = parseInt(colorStep);

//Loop through elements and apply gradients
for (i = 0; i < menuItems; i++) {
    newColor1 = color1 + (i * colorStep);
    newColor2 = color1 color2 -1;
    gradientStart = newColor1.toString(16);
    gradientEnd = newColor2.toString(16);

    //use gradientStart and gradientEnd as colors in the function, not sure on this part yet

}

</script>