ECharts中标签长度过长,显示省略号,鼠标浮上后出现全称的效果展示

废话不多说,直接上效果图。截图截不到鼠标0 0

 

vue组件:

<template>
  <div style="width: 800px;height: 400px;margin-left: 30px;" id="myChart">
  </div>
</template>

<script>
//通过this.$echarts来使用
export default {
  name: 'HelloWorld',
  data() {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  mounted() {
    this.drawLine();
  },
  methods: {
    drawLine() {
      // 基于准备好的dom,初始化echarts实例
      let myChart = this.$echarts.init(document.getElementById('myChart'))
      // 绘制图表
      myChart.setOption({
        title: {
          text: 'demo'
        },
        series: [{
          type: 'bar',
          data: [291, 335, 405, 421, 576, 742, 801, 840, 913, 975],
          barCategoryGap: '70%',/*多个并排柱子设置柱子之间的间距*/
          showBackground: true,

          itemStyle: {
            normal: {
              color: '#4ad2ff',
            }
          },
          backgroundStyle: {
            color: 'rgb(14, 92, 111,0.2)',

          },
        }],
        tooltip: { // 鼠标悬浮提示框显示 X和Y 轴数据
          trigger: 'axis',
          backgroundColor: 'rgba(32, 33, 36,.7)',
          borderColor: 'rgba(32, 33, 36,0.20)',
          borderWidth: 1,
          textStyle: { // 文字提示样式
            color: '#fff',
            fontSize: '12'
          }
        },
        legend: {
          data: ['销量']
        },
        xAxis: {
          show: false,//不显示坐标轴线、坐标轴刻度线和坐标轴上的文字
          axisTick: {
            show: false//不显示坐标轴刻度线
          },
          axisLine: {
            show: false,//不显示坐标轴线
          },
          axisLabel: {
            show: false,//不显示坐标轴上的文字
          },

        },
        yAxis: [
          {
            type: 'category',
            axisTick: { show: false },
            //开启鼠标事件!!这一句很重要
            triggerEvent: true,
            // nameLocation: 'end',
            axisLine: {
              show: false
            },
            axisLabel: {
              color: '#fff', // 文字颜色
              // 文字省略
              formatter: function (value) {
                if (value.length > 3) {
                  return `${value.slice(0, 7)}...`
                }
                return value
              }
            },
            data: ["10. SR测试设备", "09. SR测试设备", "08. SR测试设备", "07. SR测试设备", "06. SR测试设备", "05. SR测试设备", "04. SR测试设备", "03. SR测试设备", "02. SR测试设备", "01. SR测试设备"],
          },
          {
            type: 'category',
            nameLocation: 'end',
            position: 'right',
            // offset: 30,
            axisLabel: {
              color: '#fff',

            },
            axisLine: {
              show: false
            },
            axisTick: { show: false },
            data: ['291人', '335人', '405人', '421人', '576人', '742人', '801人', '840人', '913人', '975人'],
          }
        ],

      });
      this.extension(myChart)
    },
    extension(chart) {
      // 注意这里,是以X轴显示内容过长为例,如果是x轴的话,需要把params.componentType == 'xAxis'改为yAxis
      // 判断是否创建过div框,如果创建过就不再创建了
      // 该div用来盛放文本显示内容的,方便对其悬浮位置进行处理
      var elementDiv = document.getElementById('extension')
      if (!elementDiv) {
        var div = document.createElement('div')
        div.setAttribute('id', 'extension')
        div.style.display = 'block'
        document.querySelector('html').appendChild(div)
      }
      chart.on('mouseover', function (params) {
        if (params.componentType == 'yAxis') {
          var elementDiv = document.querySelector('#extension')
          //设置悬浮文本的位置以及样式
          var elementStyle =
            'position: absolute;z-index: 99999;color: #fff;font-size: 12px;padding: 5px;display: inline;border-radius: 4px;background-color: #303133;box-shadow: rgba(0, 0, 0, 0.3) 2px 2px 8px'
          elementDiv.style.cssText = elementStyle
          elementDiv.innerHTML = params.value
          document.querySelector('html').onmousemove = function (event) {
            var elementDiv = document.querySelector('#extension')
            var xx = event.pageX - 10
            var yy = event.pageY + 15
            console.log('22', xx)
            elementDiv.style.top = yy + 'px'
            elementDiv.style.left = xx + 'px'
          }
        }
      })
      chart.on('mouseout', function (params) {
        //注意这里,我是以X轴显示内容过长为例,如果是y轴的话,需要改为yAxis
        if (params.componentType == 'yAxis') {
          var elementDiv = document.querySelector('#extension')

          elementDiv.style.cssText = 'display:none'
        }
      })
    },
  }
}

</script>

其中值得注意的是,在你要出现全称的轴上需写明

 triggerEvent: true,

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值