我正在努力以正确的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;
}
答案 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