You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过jQuery添加带厂商前缀背景渐变,为何仅最后一个样式生效?

解决背景渐变前缀样式被覆盖的问题

你的代码里出现的问题根源是JavaScript对象的键唯一性:当对象中存在多个同名键时,后面的键值对会直接覆盖前面的,所以你定义的三个background属性最终只有最后一个生效。

解决方案1:拆分带前缀的属性名

将不同浏览器前缀的渐变属性拆分为独立的带前缀属性,确保每个声明都能被应用:

$('.colorshiftdots:nth-child(1) .colorshiftfilter').each(function() {
  var styles = {        
    '-webkit-background': '-webkit-gradient(linear, right top, left top, from(rgba(' + backgroundcolor + ', 1)), color-stop(55%, rgba(' + backgroundcolor + ', .13)), color-stop(70%, rgba(0, 0, 0, 0)), to(rgba(255, 255, 255, 1)))',
    '-o-background': '-o-linear-gradient(right, rgba(' + backgroundcolor + ', 1) 0%, rgba(' + backgroundcolor + ', .13) 55%, rgba(0, 0, 0, 0) 70%, rgba(255, 255, 255, 1) 100%)',
    'background': 'linear-gradient(-90deg, rgba(' + backgroundcolor + ', 1) 0%, rgba(' + backgroundcolor + ', .13) 55%, rgba(0, 0, 0, 0) 70%, rgba(255, 255, 255, 1) 100%)',
    'opacity': '1'
  };

  $(this).css(styles);
});

解决方案2:合并为单个background值

把所有前缀渐变声明合并到同一个background属性中,浏览器会自动忽略不支持的语法:

$('.colorshiftdots:nth-child(1) .colorshiftfilter').each(function() {
  var gradientStr = [
    '-webkit-gradient(linear, right top, left top, from(rgba(' + backgroundcolor + ', 1)), color-stop(55%, rgba(' + backgroundcolor + ', .13)), color-stop(70%, rgba(0, 0, 0, 0)), to(rgba(255, 255, 255, 1)))',
    '-o-linear-gradient(right, rgba(' + backgroundcolor + ', 1) 0%, rgba(' + backgroundcolor + ', .13) 55%, rgba(0, 0, 0, 0) 70%, rgba(255, 255, 255, 1) 100%)',
    'linear-gradient(-90deg, rgba(' + backgroundcolor + ', 1) 0%, rgba(' + backgroundcolor + ', .13) 55%, rgba(0, 0, 0, 0) 70%, rgba(255, 255, 255, 1) 100%)'
  ].join(', ');

  var styles = {        
    'background': gradientStr,
    'opacity': '1'
  };

  $(this).css(styles);
});

额外提示

目前主流浏览器已经全面支持标准的linear-gradient语法,如果不需要兼容IE9及更早版本、旧版Safari/Opera,完全可以只保留标准声明,去掉前缀版本,让代码更简洁。

内容的提问来源于stack exchange,提问作者Jason Howard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:35:51