HighCharts: ярлыки, видимые над подсказкой
Ярлыки на моей диаграмме показывают всплывающую подсказку, которая выглядит не очень красиво. Я попытался сыграть с zIndex
, но без результата. Как сделать всплывающие подсказки непрозрачными? Здесь my jsFiddle: http://www.jsfiddle.net/4scfH/3/
$(function() {
var chart;
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'graf1',
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
margin: 40,
text: 'Podíl všech potřeb'
},
tooltip: {
//pointFormat: '<b>{point.y} Kč [{point.percentage}%]</b>',
percentageDecimals: 2,
backgroundColor: "rgba(255,255,255,1)",
formatter: function() {
return this.point.name + '<br />' + '<b>' + Highcharts.numberFormat(this.y).replace(",", " ") + ' Kč [' + Highcharts.numberFormat(this.percentage, 2) + '%]</b>';
}
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorWidth: 2,
useHTML: true,
formatter: function() {
return '<span style="color:' + this.point.color + '"><b>' + this.point.name + '</b></span>';
}
}
}
},
series: [{
type: 'pie',
name: 'Potřeba',
data: [
['Firefox', 45.0],
['IE', 26.8], {
name: 'Chrome',
y: 12.8,
sliced: true,
selected: true
},
['Safari', 8.5],
['Opera', 6.2],
['Others', 0.7]
]
}]
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<div id="graf1" style="width: 400px; height: 250px; float:left"></div>
Ответы
Ответ 1
Вы можете установить .dataLabels.useHTML#series.dataLabels.useHTML rel="nofollow noreferrer"> useHTML
и определить свою собственную подсказку через css:
http://jsfiddle.net/4scfH/4/
tooltip: {
borderWidth: 0,
backgroundColor: "rgba(255,255,255,0)",
borderRadius: 0,
shadow: false,
useHTML: true,
percentageDecimals: 2,
formatter: function () {
return '<div class="tooltip">' + this.point.name + '<br />' + '<b>' + Highcharts.numberFormat(this.y).replace(",", " ") + ' Kč [' + Highcharts.numberFormat(this.percentage, 2) + '%]</b></div>';
}
},
CSS
.label {
z-index: 1 !important;
}
.highcharts-tooltip span {
background-color: white;
border:1 px solid green;
opacity: 1;
z-index: 9999 !important;
}
.tooltip {
padding: 5px;
}
Объяснение: когда вы устанавливаете для useHTML
значение true, он отображает текст всплывающей подсказки в виде HTML на слое HTML, но по-прежнему рисует форму SVG в верхнем графике, отображающем SVG для прямоугольника и стрелки. В итоге метки данных выглядят так, как будто они нарисованы в верхней части всплывающей подсказки, а сам текст подсказки - поверх меток данных. Параметры конфигурации, приведенные выше, эффективно скрывают форму всплывающей подсказки SVG, а также создают и оформляют подсказку исключительно с помощью HTML/CSS. Единственным недостатком является то, что вы теряете маленький указатель "стрелка".
Ответ 2
Если вы установите tooltip.backgroundColor на "rgba (255,255,255,1)", вы получите всплывающую подсказку с "без прозрачности"
Вам нужно будет удалить useHTML: true в настройках пирога.
Вилка вашего jsfiddle: http://jsfiddle.net/kairs/Z3UZ8/1/
tooltip: {
backgroundColor: "rgba(255,255,255,1)"
}
Документация по высокому графику
Ответ 3
У меня была такая же проблема. Мое решение.
Всплывающая подсказка - useHTML = true.
Tooltip - Formatter = HTML-код там с одним контейнером div.
здесь маржа в отрицательном значении важна в css.
tooltip: {
backgroundColor: "rgba(255,255,255,1)",
useHTML: true,
formatter: function() {
var html = [];
html.push('<b>Correlation to ' + this.point.p + '</b><br>');
if (null != this.point.associatedPoints
&& typeof this.point.associatedPoints != 'undefined'
&& this.point.associatedPoints.length > 0) {
$.each(this.point.associatedPoints, function(i, associatedPoint) {
html.push('Responses: ' + associatedPoint.nFormatted);
});
}
return '<div class="tooltip-body">' + html.join('') + '</div>';
}
CSS
.highcharts-tooltip span {
z-index: 9999 !important;
top:2px !important;
left:2px !important;
}
.highcharts-tooltip span .tooltip-body{
background-color:white;
padding:6px;
z-index:9999 !important;
margin-bottom:-14px;
margin-right:-14px;
}
Ответ 4
У меня была та же проблема. Ярлыки были видны над всплывающей подсказкой. Удаление useHTML = true для ярлыков, работающих для меня.
Ответ 5
и если вы не хотите впадать в проблемы, есть в использованииHTML, вот как это сделать в svg:
Highcharts.wrap(Highcharts.Chart.prototype, 'redraw', function(proceed, animation) {
proceed.call(this, animation);
try {
if (this.legend.options.floating) {
var z = this.legend.group.element, zzz = z.parentNode;
zzz.removeChild(z);
zzz.appendChild(z); //zindex in svg is determined by element order
}
} catch(e) {
}
});
Ответ 6
У меня все еще были проблемы с некоторыми решениями, установив z-index: 999 на .tooltip не оказал никакого эффекта из-за различных контейнеров div. Но, я нашел, что это работает хорошо (когда легенда и всплывающая подсказка - HTML). Не нужно устанавливать другие z-индексы:
.highcharts-legend {
z-index: -1;
}
Ответ 7
Для всплывающих подсказок Highchart с форматом html
Конфигурация Highchart
tooltip: {
borderWidth: 0,
backgroundColor: "rgba(255,255,255,0)",
shadow: false,
useHTML: true
........
},
CSS
.highcharts-tooltip>span {
background-color: #fff;
border: 1px solid #172F8F;
border-radius: 5px;
opacity: 1;
z-index: 9999!important;
padding: .8em;
left: 0!important;
top: 0!important;
}
![Снимок экрана]()