Echarts y軸(x軸)文本內容太長的解決方案--文本滾動

我前面有寫Echarts x軸文本內容太長的幾種解決方案 裏面有幾種方法,這裏面寫的是y軸的文本內容太長的時候很長很長 ,

滾動

image.png
此時y軸上的文本內容就開始想左側開始滾動
首先要把y軸的文本顯示爲false,然後用div代替y軸的文本部分

此文本內容是滾動顯示的 不會錄製gif 可以自行復制代碼查看效果

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
        body,html{
            width: 100%;
            height: 100%;
            background: #f1f1f1;
        }
    </style>
</head>
<body>
<div style="padding-bottom:0px;width:30%;height:30%">
    <div style="box-shadow: none;margin-bottom: 0px;width:100%;height:100%;position:relative">
        <p class="m10" style="margin: 0; padding:6px 10px;margin-bottom: 5px; border-bottom: 1px solid #f1f1f1; width: 100%;font-size: 14px;"><span>TOP10</span></p>
        <div id="itemName" style="height:90%;width:15%;display: inline-block;position:absolute;top:12%"></div>
        <div id="topCanvas" style="height:90%;width:85%;display: inline-block;">
    </div>
</div>
</div>
<script src="../jquery-1.8.3.js"></script>
<script src="echarts.min.js"></script>
<script>
    var data = {
        "result":"success",
        "nameList":[
            "1-0001:我是長字段我要滾動了",
            "2-0001:我是長字段我要滾動了1",
            "3-0001:我是長字段要滾動了",
            "4-0002:我是長字段",
            "0", "0", "0", "0", "0", "0"
        ],
        "numList":[
            5, 2, 1, 1, 0, 0, 0, 0, 0, 0
        ]};

    getTop();
    function getTop() {
        initTopChart(data);
        var html = "";
        for(var i = data.nameList.length-1;i >= 0;i--){
            var itemName = "";
            if (data.numList[i] != 0) {
                itemName = data.nameList[i].split(':')[1];
            }
            html += '<div class="scrollItem" style="white-space:nowrap;height:9%;overflow: hidden;line-height: 30px;margin-left:10px;font-size: 12px;color:#808080" title="'+itemName+'">'+itemName+'</div>'
        }
        $("#itemName").html(html);
        $(".scrollItem").each( function (index,elem) {
            setTimeout(function () {
                if (elem.scrollWidth > elem.offsetWidth) {
                    var div = $(elem);
                    var text = div.html();
                    div.empty();
                    div.append("<div style='margin-left:0;height:100%'>" + text + "</div>");

                    var childDiv = div.children();
                    var speed = 100;
                    var ml = 0;
                    var distance = elem.scrollWidth - elem.offsetWidth + 20; //額外向左滾動N px

                    function Marquee() {
                        if (ml < distance) {
                            ml++;
                            childDiv.css("marginLeft", "-" + ml + "px");
                        } else if (ml < distance + 10) {//到頭後停頓N個週期
                            ml++;
                            childDiv.css("marginLeft", "0px");
                        } else {
                            ml = 0;
                        }
                    }

                    var inter = setInterval(Marquee, speed);
                    elem.onmouseover = function(){
                        clearInterval(inter);
                    }
                    elem.onmouseout = function(){
                        inter = setInterval(Marquee,speed);
                    }
                }
            }, 0);
        })
    }
    function initTopChart(data) {
        var numList = data.numList.reverse();
        var nameList = data.nameList.reverse();
        var myChart = echarts.init(document.getElementById('topCanvas'));
        var typeOption = {
            title: {
                text: "目錄使用次數Top10",

                show: false,
                x: 'left',
                textStyle:{ //設置主標題風格
                    color:'#3d3d3d',//設置主標題字體顏色
                    fontWeight:"600",
                },
            },
            color: ['#02a7ff'],
            tooltip: {
                trigger: 'axis',
                formatter: function (params) {
                    if(params[0].name == "0") {
                        return '暫無數據';
                    }
                    var array = params[0].name.split(":");
                    var res = '編號 : ' + array[0];
                    res += '<br/>名稱 : ' + array[1];
                    res += '<br/>數量 : ' + params[0].value;
                    return res;
                },
                position:function(pos, params, dom, rect, size){
                    var top = $("#topCanvas div:last-child").css("top");
                    var left = $("#topCanvas div:last-child").css("left");
                    top = top.substring(0, top.length - 2);
                    left = left.substring(0, left.length - 2);
                    return [pos[0] + 200 - left, pos[1] + 20 - top];
                },
                axisPointer: {            // 座標軸指示器,座標軸觸發有效
                    type: 'shadow'        // 默認爲直線,可選爲:'line' | 'shadow'
                }
            },
            legend: {
                data: ['數量'],
                show: false
            },
            grid: {
                left: '40',
                right: '35',
                bottom: '10',
                top:'0',
                // height: 320,
                containLabel: true
            },
            xAxis: [
                {
                    type: 'value',
                    axisLine: {
                        lineStyle: {
                            color:'#999'
                        }
                    },
//                    minInterval:1,
                    splitLine:{//網格線的格式
                        // show:false//去掉y軸上的網格線——
                        lineStyle:{
                            color: '#999',//網格線顏色
                            width: 1,//網格線寬度
                            type: 'dashed'//網格線樣式
                        }
                    },
                    axisTick:{
                        show:false,
                    },
                    axisLabel:{//座標軸文字
                        color:"#666666",
                        fontFamily:"Arial"
                    }
                }
            ],
            yAxis: [
                {
                    show:false,
                    type: 'category',
                    data:nameList,
                    axisLabel:{//座標軸文字
                        color:"#666666",
                        formatter :'{c}',
                        textStyle: {
                            show:false,
                            align:'left',
                            baseline:'middle',
                        }
                    }
                }
            ],
            series: [
                {
                    name: '當前資源',
                    type: 'bar',
                    stack: '總量',
                    barWidth: 8,
                    data:data.numList,
                    itemStyle:{
                        //柱形圖圓角,鼠標移上去效果,如果只是一個數字則說明四個參數全部設置爲那麼多
                        emphasis: {
                            barBorderRadius: 30
                        },
                        normal: {
                            //柱形圖圓角,初始化效果
                            barBorderRadius:[10, 10, 10, 10],
                        }
                    },
                    label: {
                        normal: {
                            show: true,
                            position: 'right',
                            color:"#666666",
                            fontFamily:"Arial",
                        }
                    },
                }
            ]
        };
        myChart.resize();
        myChart.setOption(typeOption);
    };
    window.onresize = function(){
        getTop();
    }
</script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章