HighCharts: ярлыки, видимые над подсказкой - программирование
Подтвердить что ты не робот

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>
4b9b3361

Ответ 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;
}

Снимок экрана