zhoushangwu
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        input[type=range] {
            -webkit-appearance: none;
            width: 100%;
            /*这个属性设置使填充进度条时的图形为圆角*/
        }

        input[type=range]::-webkit-slider-thumb {
            -webkit-appearance: none;
        }

        input[type=range]::-webkit-slider-runnable-track {
            height: 0px;
            /*轨道内置阴影效果*/
        }

        input[type=range]:focus {
            outline: none;
        }

        input[type=range]::-webkit-slider-thumb {
            -webkit-appearance: none;
            height: 6px;
            width: 40px;
            margin-top: -3px;
            /*使滑块超出轨道部分的偏移量相等*/
            background: #3a4764;
            border: solid 0.125em #3a4764;
            /*设置边框*/
        }
    </style>
</head>

<body>
    <div style="width: 500px;height: 500px;background-color: #1c1f2b; position: absolute;">
        <div id="main" style="height: 100%;"></div>

        <div id="move-panel" style="position: relative;z-index: 2;bottom: 60px;left: 50px; width: 400px; height: 0;">
            <!-- <div id="move" style="background-color: #3a4764;height: 10px;width: 30px;margin-top:-5px;cursor: pointer;">
            </div> -->
            <input type="range" value="0" style="display: block;margin: 0;">
        </div>
    </div>
    <input type="button" value="切换" id="btn_click" />
</body>

</html>
<script src="echarts.min.js"></script>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
    integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script>

    var myChart;
    var option;

    function loadLine() {
        option = {
            xAxis: {
                type: \'category\',
                data: [\'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\', \'11\', \'12\', \'13\', \'14\', \'15\', \'16\', \'17\', \'18\', \'19\', \'20\', \'21\', \'22\', \'23\'],
                axisLabel: {
                    color: \'red\'
                },// x轴文字颜色
                axisLine: {
                    lineStyle: {
                        color: \'#2d303b\'
                    }
                },// 坐标轴颜色
                axisPointer: {
                    show: true
                },
                boundaryGap: false,
            },
            yAxis: {
                type: \'value\',
                axisLine: {
                    lineStyle: {
                        color: \'#2d303b\'
                    }
                },// 坐标轴颜色
                splitLine: {
                    lineStyle: {
                        color: [\'#c555cc\']
                    }
                },// 分割线颜色
                axisLabel: {
                    color: \'red\'
                },// 坐标轴的文字颜色
            },
            series: [{
                data: [820, 932, 901, 934, 1290, 1330, 1320, 820, 932, 901, 934, 1290, 1330, 1320, 820, 932, 901, 934, 1290, 1330, 1320, 820, 932, 901, 934],
                type: \'line\',
                smooth: true,
                symbol: \'circle\',
                symbolSize: 4,
                label: {
                    show: true,
                    color: \'#28edff\'
                },
                lineStyle: {
                    color: \'#28edff\',
                    width: 1,
                },
                itemStyle: {
                    color: "#28edff"
                }
            }],
            dataZoom: [
                {
                    type: \'inside\',//slider表示有滑动块的,inside表示内置的
                    show: true,
                    xAxisIndex: [0],
                    start: 0,
                    end: 50,
                    backgroundColor: \'rgba(0,0,0,0.5)\',// 滑块背景颜色
                    fillerColor: \'rgba(255,255,0,0.5)\',// 填充颜色
                    showDetail: false,// 拖拽时,是否显示详细信息
                }
            ],
        };
        myChart = echarts.init(document.getElementById(\'main\'));
        myChart.setOption(option)

    }

    $(function () {
        loadLine();

        $("#btn_click").click(function () {
            option.dataZoom[0].start = option.dataZoom[0].start + 10;
            option.dataZoom[0].end = option.dataZoom[0].end + 10;
            myChart.setOption(option)
        })

        $(\'input\').RangeSlider({
            min: 0, max: 12, step: 1, callback: function ($value) {
                var p = 100 / 24 * $value

                if (p != option.dataZoom[0].start) {
                    option.dataZoom[0].start = p;
                    option.dataZoom[0].end = p + 50;
                    myChart.setOption(option)
                }
            }
        });

        myChart.on(\'datazoom\',function(result){
            var h = Math.round(result.batch[0].start * 23 / 100)
            var val = $(\'input\').val();

            if(h != val){
                $(\'input\').val(h);
            }

        })
    })

    $.fn.RangeSlider = function (cfg) {
        this.sliderCfg = {
            min: cfg && !isNaN(parseFloat(cfg.min)) ? Number(cfg.min) : null,
            max: cfg && !isNaN(parseFloat(cfg.max)) ? Number(cfg.max) : null,
            step: cfg && Number(cfg.step) ? cfg.step : 1,
            callback: cfg && cfg.callback ? cfg.callback : null
        };

        var $input = $(this);
        var min = this.sliderCfg.min;
        var max = this.sliderCfg.max;
        var step = this.sliderCfg.step;
        var callback = this.sliderCfg.callback;

        $input.attr(\'min\', min)
            .attr(\'max\', max)
            .attr(\'step\', step);

        $input.bind("input", function (e) {
            $input.attr(\'value\', this.value);

            if ($.isFunction(callback)) {
                callback(this.value);
            }
        });
    };
</script>

分类:

技术点:

相关文章: