dataLabel与renderer.rect与工具提示的Highcharts zIndex

时间:2018-10-22 08:53:00

标签: highcharts

我正在努力以正确的Z顺序获取图表元素,特别是在启用dataLabels的{​​{1}}以及通过useHTML添加矩形的情况下。以下jsfiddle中对此进行了说明:

https://jsfiddle.net/fk7b3cnz/

我希望矩形位于主要图表特征(线,标签)上方,并且工具提示位于矩形上方(即一切上方)。我设法使工具提示位于顶部(除其周围的边距...我该如何解决?),但是数据标签位于矩形上方... zIndex I为矩形设置似乎没有任何作用。

JAVASCRIPT:

chart.renderer.rect()

CSS:

Highcharts.chart('container', {
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    tooltip: {
      useHTML: true,
      formatter: function () {
        return '<div class="tooltip">value: ' + this.y + '</div>';
      }
    },

    plotOptions: {
        series: {
            dataLabels: {
                enabled: true,
                useHTML: true // need this to achieve the text formatting I want via appropriate html (not shown here)
            }
        }
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]

}, function (chart) { // on complete

    chart.renderer.rect(100, 100, 100, 100, 5)
        .attr({
            'stroke-width': 2,
            stroke: 'red',
            fill: 'yellow',
            zIndex: 9998 // want this to be above chart features but below tooltip
        })
        .add();

});

HTML:

.highcharts-tooltip span {
    background-color: white;
    border: 1px solid green;
    opacity: 1;
    z-index: 9999;
}

.tooltip {
    padding: 5px;
}

1 个答案:

答案 0 :(得分:2)

您可以使用Highcharts.SVGElement.toFront方法来代替手动添加zIndex。矩形将绘制在线条和其他svg元素上方。但是,使用HTML创建的数据标签将始终位于其他SVG元素上方(因为Highcharts v6.1.1工具提示可以绘制在HTML内容上方),就像您在Highcharts documentation中可以看到的一样:

  

“它将始终放在所有其他SVG内容之上。   具体来说,工具提示可以呈现在useHTML标签下方。   从Highcharts v6.1.1开始,可以通过设置tooltip.outside来避免这种情况   变为真实。”

chart.renderer.rect(100, 100, 100, 100, 5)
   .attr({
     'stroke-width': 2,
     stroke: 'red',
     fill: 'yellow'
   })
   .add()
   .toFront();

演示: jsfiddle