【问题标题】:Border is partially hidden on hover in Highcharts column and pie charts在 Highcharts 列和饼图中悬停时,边框部分隐藏
【发布时间】:2017-12-09 00:06:11
【问题描述】:

当我将鼠标悬停在堆积条形图或饼图的某个部分上时,我希望该部分始终有一个黑色边框。但是,对于堆积柱形图和饼图,特别是悬停部分的一侧保留了将其与下一个部分分开的白色边框:

incomplete bar segment border

是否有 Highcharts 设置或 CSS 样式以使边框在将鼠标悬停在该段上时一直显示在该段周围?

图表设置和 JSFiddle 链接:

柱形图:http://jsfiddle.net/nyh22g2e/1/

柱形图设置:

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

  plotOptions: {
    series: {
      states: {
        hover: {
          brightness: 0,
          borderColor: 'black',
          halo: false,
        }
      }
    }
  },

  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]
  }]
});

饼图:http://jsfiddle.net/djpjtmzg/

饼图设置:

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

  plotOptions: {
    series: {
      states: {
        hover: {
          brightness: 0,
          borderColor: 'black',
          halo: false,
        }
      }
    }
  },

  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]
  }]
});

【问题讨论】:

    标签: css svg highcharts


    【解决方案1】:

    边框的某些部分不可见,因为它们与其他列的“常规”边框重叠。在非悬停状态下将borderWidth设置为0似乎可以解决这个问题:

    plotOptions: {
        series: {
            stacking: 'normal',
            borderWidth: 0, // regular border disabled
            states: {
                hover: {
                    brightness: 0,
                    borderColor: 'black',
                    borderWidth: 1 // enable border on hover
                }
            }
        }
    }
    

    现场演示: http://jsfiddle.net/kkulig/1kh7kvqq/

    API 参考: https://api.highcharts.com/highcharts/plotOptions.column.borderWidth


    编辑

    我注意到 Highcharts 论坛上有更好的解决方案:https://forum.highcharts.com/highcharts-usage/stacked-bar-and-pie-border-on-hover-t39961/

    它使用mouseOver 事件来增加悬停元素的zIndex

    下边框问题:

    删除悬停系列的"clip-path" SVG 属性修复了该问题:

      events: {
        mouseOver: function() {
          this.update({
            zIndex: 1
          });
          this.group.attr({
            "clip-path": ""
          });
        }
      },
    

    现场演示: http://jsfiddle.net/kkulig/p9cqzs3f/

    【讨论】:

    • 太好了,解决了问题!一个快速的后续问题:每个堆叠列的底部段的底部边框被轴线隐藏。有没有办法移除或稍微移动线条,以便在列中的每个段周围一直显示边框?
    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多