Echart自定义悬浮tooltip 设置字体颜色

option = {
    tooltip : {         // Option config. Can be overwrited by series or data
        trigger: 'axis',
        //show: true,   //default true
        showDelay: 0,
        hideDelay: 50,
        transitionDuration:0,
        backgroundColor : 'rgba(255,0,255,0.7)',
        borderColor : '#f50',
        borderRadius : 8,
        borderWidth: 2,
        padding: 10,    // [5, 10, 15, 20]
        position : function(p) {
            // 位置回调
            // console.log && console.log(p);
            return [p[0] + 10, p[1] - 10];
        },
        textStyle : {
            color: 'yellow',
            decoration: 'none',
            fontFamily: 'Verdana, sans-serif',
            fontSize: 150,
            fontStyle: 'italic',
            fontWeight: 'bold'
        },
        formatter: function (params,ticket,callback) {
            console.log(params)
            var res = 'Function formatter : <br/>' + params[0].name;
            for (var i = 0, l = params.length; i < l; i++) {
                res += '<br/>' + params[i].seriesName + ' : ' + params[i].value;
            }
            setTimeout(function (){
                // 仅为了模拟异步回调
                callback(ticket, res);
            }, 1000)
            return 'loading';
        }
        //formatter: "Template formatter: <br/>{b}<br/>{a}:{c}<br/>{a1}:{c1}"
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    xAxis : {
        data : ['周一','周二','周三','周四','周五','周六','周日']
    },
    yAxis : {
        type : 'value'
    },
    series : [
        {
            name:'坐标轴触发1',
            type:'bar',
            data:[
                {value:320, extra:'Hello~'},
                332, 301, 334, 390, 330, 320
            ]
        },
        {
            name:'坐标轴触发2',
            type:'bar',
            data:[862, 1018, 964, 1026, 1679, 1600, 157]
        },
        {
            name:'数据项触发1',
            type:'bar',
            tooltip : {             // Series config.
                trigger: 'item',
                backgroundColor: 'black',
                position : [0, 0],
                formatter: "Series formatter: <br/>{a}<br/>{b}:{c}"
            },
            stack: '数据项',
            data:[
                120, 132,
                {
                    value: 301,
                    itemStyle: {normal: {color: 'red'}},
                    tooltip : {     // Data config.
                        backgroundColor: 'blue',
                        formatter: "Data formatter: <br/>{a}<br/>{b}:{c}"
                    }
                },
                134, 90,
                {
                    value: 230,
                    tooltip: {show: false}
                },
                210
            ]
        },
        {
            name:'数据项触发2',
            type:'bar',
            tooltip : {
                show : false,
                trigger: 'item'
            },
            stack: '数据项',
            data:[150, 232, 201, 154, 190, 330, 410]
        }
    ]
};

这里写图片描述

参考网址:http://echarts.baidu.com/echarts2/doc/example/tooltip.html

### ECharts 横坐标显示不全的解决方案 在处理 ECharts 图表时,如果横坐标的数据显示不全或者被自动隐藏,可以采取多种方法来优化展示效果。以下是几种常见的解决方案: #### 方法一:通过 `axisLabel` 属性设置间隔和旋转角度 为了防止横坐标因数据过多而自动隐藏部分内容,可以通过配置 `axisLabel` 的 `interval` 和 `rotate` 参数实现更友好的显示方式。 ```javascript xAxis: { type: 'category', data: this.accessDate, axisLabel: { interval: 0, // 设置为0表示强制显示所有标签 rotate: 30 // 将标签倾斜一定角度以节省空间 } } ``` 这种方法适用于需要完整显示所有横坐标值的情况[^1]。 --- #### 方法二:对过长的文字进行截断并支持鼠标悬浮提示 对于某些场景下横坐标文字较长而导致无法完全显示的问题,可以在前端对字符串长度进行控制,并利用 ECharts 提供的 `formatter` 功能配合工具提示(tooltip),使得用户能够查看完整的文本内容。 ```javascript xAxis: { type: 'category', data: this.longLabels.map(label => label.length > 10 ? `${label.slice(0, 10)}...` : label), axisLabel: { formatter: function (value) { return value; // 可在此处进一步自定义格式化逻辑 } }, tooltip: { trigger: 'axis', // 配置为轴触发模式 formatter: function (params) { let result = ''; params.forEach(param => { result += `<div>${param.name}</div>`; // 完整显示原始名称 }); return result; } } } ``` 这种方式特别适合于描述字段较长的数据集,在保持界面简洁的同时提供额外的信息交互功能[^2]。 --- #### 方法三:动态调整刻度之间的间距 除了固定地设定 `interval=0` 外,还可以依据实际需求灵活调节相邻两个刻度线间的距离。例如,当发现即使启用了上述措施仍然存在拥挤现象时,则可尝试增大字体大小或减少每单位宽度内的项目数量。 ```javascript xAxis: [{ nameLocation: 'middle', splitNumber: 5, // 控制分段数目,默认为5 minInterval: 1 // 强制最小间隔步长至少为指定数值 }] ``` 此外,也可以考虑结合屏幕尺寸适配策略,比如监听窗口变化事件重新渲染图形布局等操作[^3]。 --- 以上三种途径均能有效缓解甚至彻底消除ECharts图表中遇到的此类难题,请根据具体业务背景选取最合适的办法加以实施。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值