настройка дизайна всплывающих подсказок в электронных диаграммах с помощью react

#javascript #css #reactjs #charts #echarts

#javascript #css #reactjs #Диаграммы #электронные диаграммы

Вопрос:

Я работаю над диаграммой, используя библиотеку echarts с antd и react, и я должен следовать определенному дизайну всплывающей подсказки, как показано ниже :

ожидаемая всплывающая подсказка

что я мог бы сделать, так это :

фактическая всплывающая подсказка

реализация всплывающих подсказок :

  const chartOptions = {


    tooltip: {
        trigger: 'item',
        responsive: true,
        position: 'top',
        formatter: '{c}',
        backgroundColor: '#fafcfe',
        borderColor: '#c8e2f7',
        borderWidth: '0.8',
        textStyle: {
            color: '#5d6f80'
        }
    },
    xAxis: {
        data: xdata,
    },

    yAxis: {
        type: 'value',
        position: 'right',
    },
    series: [{
        data: data1,
        type: 'line',
        name: 'data1',
    },
    {
        data: data2,
        type: 'line',
        name: 'data2',
    } ] 
} 
  

есть ли какой-либо способ добавить стрелку вниз и ссылку (синяя линия между всплывающей подсказкой и символом)

решение css приемлемо, но я новичок в css и разработке интерфейса в целом

любое предложение было бы полезно, спасибо

Ответ №1:

Чтобы добавить эту линию вертикальной оси, вы можете просто изменить на trigger: 'axis' . Имейте в виду, что position: 'top' этот параметр не работает, поэтому вам придется изменить его на что-то вроде этого:

 position: function (point) {
    return [point[0], '20%'];
    // if u wanna center it to the line, then u could do something like
    // [point[0] - width_of_tooltip / 2, '20%']
}, ...
  

Что касается стрелки вниз, я вижу два варианта:

Измените параметр форматирования на функцию:

 formatter: function (params) {
        return `<div class="tooltip">${params[0]}</div>`;
    }, ...
  

и затем вы можете создать стрелку с помощью css, назначенную этому tooltip классу (смотрите пример в разделе Стрелки всплывающих подсказок здесь: https://www.w3schools.com/css/css_tooltip.asp ).

Другим вариантом было бы вручную добавить фоновое изображение стрелки всплывающей подсказки и назначить его с помощью extraCssText опции, например:

 tooltip: {
    trigger: 'axis',
    extraCssText: "background-image: url(https://f0.pngfuel.com/png/287/216/white-box-illustration-png-clip-art.png);background-size:cover;min-height:100px;",
    ...
}
  

там вы можете добавить дополнительные параметры CSS, чтобы все выглядело так, как вы хотите (я просто выбрал случайное текстовое поле).
Лично мне больше понравился бы первый вариант. Удачи!

Комментарии:

1. когда я устанавливаю (trigger: ‘axis’), он просто отображает всплывающую подсказку первой серии. Есть ли другое решение для отображения всплывающей подсказки для обеих серий данных отдельно, поскольку я использую две разные линейные диаграммы? с помощью (триггер: ‘ось’)?

2. trigger: 'axis' имеет все значения ряда в params аргументе, поэтому вы можете отображать все ряды, но все в одной всплывающей подсказке. Другим вариантом было бы сохранить trigger: 'item' , а затем добавить axisPointer tooltip: { trigger: 'item', axisPointer: { type: 'cross', crossStyle: { type: 'solid' } } } , но при этом будут отображаться линии осей x и y.