繁体   English   中英

jVectormap渐变背景填充

[英]jVectormap gradient background fill

jVectormap插件中,有没有办法用渐变背景填充地图?

我通过执行此代码进行了尝试,但是它只显示了纯黑色。

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();

您可以将渐变元素添加到地图的<defs>元素,然后将fill属性链接到其id。 要添加渐变,您可以使用3d.js库

初始化地图并设置fill属性

$(function () {
    $('#map').vectorMap({
        map: 'world_mill_en',
        regionStyle: {
            initial: {
                fill:  'url(#my-gradient)'
            },
        }
    });
});

使用d3.js添加渐变定义

$(function () {
    var defs = d3.select('defs');
    var myGradient = defs.append('linearGradient')
        .attr('id', 'my-gradient')
        .attr('x1', '0%')
        .attr('y1', '100%')
        .attr('x2', '100%')
        .attr('y2', '0%');
    myGradient.append('stop')
        .attr('offset', '0%')
        .attr('style', 'stop-color:rgb(255,255,255)')
        .attr('stop-opacity', 1);
    myGradient.append('stop')
        .attr('offset', '100%')
        .attr('style', 'stop-color:rgb(51,51,51)')
        .attr('stop-opacity', 1);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM