javascript - jVectormap渐变背景填充

标签 javascript jvectormap

jVectormap插件,有没有办法让 map 填充渐变背景?

我尝试执行这段代码,但它确认只是纯全黑。

fillColor: {
      linearGradient: {
            stops: [
                 [0, 'rgba(255,255,255,0.5)'],
                 [1, 'rgba(255,255,255,0.0)'],
            ]
      }
},

最佳答案

如果你不想使用 d3.js 你可以使用我创建的这个函数将渐变设置为 svg

function createGradient(svg, id, stops) {
  var svgNS = svg.namespaceURI;
  var grad = document.createElementNS(svgNS, 'linearGradient');
  grad.setAttribute('gradientUnits', 'userSpaceOnUse');
  grad.setAttribute("x1", "0%");
  grad.setAttribute("x2", "0%");
  grad.setAttribute("y1", "0%");
  grad.setAttribute("y2", "100%");
  grad.setAttribute('id', id);

  for (var i = 0; i < stops.length; i++) {
      var attrs = stops[i];
      var stop = document.createElementNS(svgNS, 'stop');
      for (var attr in attrs) {
          if (attrs.hasOwnProperty(attr)) stop.setAttribute(attr, attrs[attr]);
      }
      grad.appendChild(stop);
  }

  var defs = svg.querySelector('defs') || svg.insertBefore(document.createElementNS(svgNS, 'defs'), svg.firstChild);
  return defs.appendChild(grad);
};


function initializeMapColors() {
  createGradient($('svg')[0], 'MyGradient', [{
    offset: '0%',
    'stop-color': '#D96B6C'
  }, {
    offset: '100%',
    'stop-color': '#E35980'
  }]);

  $('path').attr('fill', 'url(#MyGradient)');
};

initializeMapColors();

关于javascript - jVectormap渐变背景填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592029/

相关文章:

javascript - Vue js - 在同一级别的两个组件内传递数据

javascript - Jquery 清除文本框不起作用?

javascript - 为什么 `useContext` 不重新渲染我的组件?

javascript - 如果没有选中复选框,请选中第一个复选框

javascript - jVectorMap 加载 ajax 数据时出现问题

javascript - jvectormap标记颜色问题

javascript - AngularJS 延迟编译指令直到元素可见

javascript - XHTML 中 noscript 标签的可行替代方案是什么

javascript - Jvector map 不工作准备 IE8?

javascript - JVectorMap Multimap 向下钻取时有不同的样式,我怎样才能更改这种样式?