vue2.0中自适应echarts图表、全屏插件screenfull

本文介绍了如何在Vue2.0项目中结合ElementUI和ECharts实现自适应图表,通过设置弹性盒子布局和监听窗口尺寸变化来调整图表大小。同时,利用screenfull插件实现了全屏功能,包括检查全屏支持、进入和退出全屏的逻辑。示例代码详细展示了如何在mounted生命周期钩子中初始化图表并响应窗口大小变化,以及如何结合ElementUI按钮实现全屏切换功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


该案例是基于vue2.0脚手架,使用了elementUI、eCharts、screenfull插件

自适应echarts图表

第一,自适应的echarts图表,要配合着能够自适应的盒子来使用,首先就是盒子要能够跟随屏幕大小改变而改变,比如我们使用弹性盒子就可以实现。
第二,要想实现自适应的echarts图表,就是当窗口发生改变时,echarts图表的尺寸重新定义一下,使用resize的方法就可以实现。


总体布局

<template>
    <div class="aboutPage">
        <div class="chartBoxWrap" ref="chartBox">
            <div id="chartBox"></div>
        </div>
    </div>
</template>
<style lang="scss" scoped>
.chartBoxWrap {
   
    display: flex;
    height: 600px;

    #chartBox {
   
        flex: 1;
        background-color: #f0faf0;
    }
}
</style>


创建echarts图表的方法

initChart(e){
   
            let myChart = echarts.init(document.getElementById("chartBox"))
            myChart.setOption({
   
                title:{
   
                    text:"自适应图表"
                },
                legend:{
   
                    show:true,
                    icon:'circle'
                },
                xAxis:{
   
                    type:'category',
                    name:"月份",
                    data:e.xData
                }
### Vue2 中使用 DataV 和 ECharts 实现大屏适配的方法 #### 一、环境准备 为了在 Vue2 项目中集成 DataV 和 ECharts 并实现大屏适配,需先完成必要的依赖安装。以下是具体操作: 1. 安装 `echarts` 库: 使用 npm 或 yarn 进行安装。 ```bash npm install echarts --save ``` 2. 安装 `datav-vue2` 组件库(适用于 Vue2 的 DataV 版本): 同样通过 npm 安装该组件库。 ```bash npm install datav-vue2 --save ``` 3. 配置全局引入或按需加载: 如果需要全局注册 DataV 组件,则可以在项目的入口文件中配置如下代码[^1]: ```javascript import { DvBorderBox1, DvLoading } from 'datav-vue2'; export default { components: { DvBorderBox1, DvLoading, }, }; ``` #### 二、屏幕尺寸自适应方案 大屏显示通常涉及动态调整图表大小以匹配不同分辨率设备的需求。可以采用以下方法来解决这一问题。 1. **基于窗口监听事件** 添加对浏览器窗口变化的侦听器,在每次触发 resize 时重新计算容器宽度并更新图表实例参数。 ```javascript mounted() { window.addEventListener('resize', this.handleResize); this.$nextTick(() => { this.initChart(); }); }, beforeDestroy() { if (!this.chart) return; window.removeEventListener('resize', this.handleResize); this.chart.dispose(); // 销毁 chart 对象释放内存资源 }, methods: { handleResize() { setTimeout(() => { this.chart.resize(); }, 200); // 延迟执行防止频繁调用影响性能 } } ``` 2. **百分比布局配合媒体查询** 利用 CSS 设置父级 DOM 节点宽高比例固定为全屏模式下的相对单位 `%`, 结合 media query 来定义多套样式规则满足各种终端需求: ```css .screen-container { width: 100%; height: 100vh; /* 占满整个视口高度 */ background-color: black; @media (max-width: 768px){ font-size: 1rem !important; /* 移动端字体缩小 */ } @media (min-width: 1920px){ transform: scale(2); /* 支持超高清显示器缩放 */ } } ``` #### 三、实际案例演示 下面给出一段完整的代码片段展示如何组合上述技术构建一个简单的数据可视化页面。 ```html <template> <div class="screen-container"> <!-- 边框装饰 --> <dv-border-box-1 :reverse="true" style="width:100%;height:100%"> <div ref="chartRef" id="main"></div> </dv-border-box-1> </div> </template> <script> import * as echarts from 'echarts'; export default { data(){ return{ chart:null } }, mounted(){ const initChart=()=>{ let myChart = echarts.init(this.$refs['chartRef']); var option={ title:{ text:'销售统计', textStyle:{color:'#fff'} }, tooltip:{}, legend:[{data:['销量']}], xAxis:{ type:'category', boundaryGap:false, axisLine:{lineStyle:{color:"#ccc"}}, splitLine:{show:true,lineStyle:{color:"#ddd"}} }, yAxis:{ name:"数量", minInterval:1e-5,//避免数值过小时无法正常渲染坐标轴刻度线 axisLabel:{formatter:function(value){return value.toFixed(2)}} }, series:[ { name:'销量', type:'line', smooth:true, symbolSize:8, itemStyle:{normal:{color:'#ffdb5c'}}, areaStyle:{normal:{}}, data:[120,200,150,80,70,110,130] }] }; myChart.setOption(option); this.chart=myChart; } initChart(); window.onresize=function(){myChart.resize();} }, destroyed(){ this.chart&&this.chart.dispose() } }; </script> <style scoped lang="scss"> .screen-container { position:relative; } #main { width: 100%; height: calc(100% - 40px); } </style> ``` #### 四、总结说明 以上介绍了在 Vue2 环境下利用 DataV 及其配套插件与第三方图形绘制工具 ECharts 构建响应式交互界面的技术要点,并提供了基础框架搭建流程以及部分核心逻辑实现细节。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值