echarts全屏,vue

echarts实现全屏并且不失真,全屏图片需要自己换

html:

  <!-- 图表全屏盒子 -->        
<div style="position: relative;" ref="charts_orders">
     <!-- 图表 -->
     <div class="chart_box" v-show="show_orders" ref="charts" style="width: 100%; height: 100%;"></div>
          <div class="top_img">
           <!-- 全屏按钮 -->
            <img v-if="Full_screen" @click="Full_screener_orders" 
                src="../../assets/img/quan.png" alt="">
          <img v-if="!Full_screen" @click="tuier" src="../../assets/img/quan.png" alt="">
    </div>
</div>

js:

import * as echarts from "echarts";
import { ref } from "vue";
// 订单统计
const charts = ref();
// 盒子
const charts_orders = ref();
// 全屏状态
const Full_screen = ref(true);
const orders_list = () => {
  const myCharts = echarts.init(charts.value);
  let option = {
    title: {
      text: '订单统计',
      left: '3%',
      top: '5%'
    },
    tooltip: {
      trigger: 'item',
      formatter: '{a} <br/>{b} : {c} ({d}%)'
    },
    legend: {
      data: ['总订单', '未付款', '已付款', '已完成', '未完成'],
      orient: 'vertical',
      left: '25%',
      top: '5%'
    },
    series: [
      {
        name: '订单统计',
        type: 'pie',
        radius: ['40%', '90%'],
        left: '35%',
        avoidLabelOverlap: false,
        label: {
          show: false,
          position: 'center'
        },
        emphasis: {
          label: {
            show: true,
            fontSize: 15,
            fontWeight: 'bold'
          }
        },
        labelLine: {
          show: false
        },
         //你自己的数据
        data:  [
          { value: 1048, name: '总订单' },
          { value: 735, name: '未付款' },
          { value: 580, name: '已付款' },
          { value: 484, name: '已完成' },
          { value: 300, name: '未完成' },
          { value: 300, name: '已取消' }
        ]
      }
    ]
  };
  myCharts.setOption(option);
  myCharts.resize();
};  
// 全屏查看
function Full_screener_orders() {
  let element = charts_orders.value
  if (!element) {
    return
  }

  if (element.requestFullScreen) {
    // HTML W3C 提议
    element.requestFullScreen();
  } else if (element.msRequestFullscreen) {
    // IE11
    element.msRequestFullScreen();
  } else if (element.webkitRequestFullScreen) {
    // Webkit
    element.webkitRequestFullScreen();
  } else if (element.mozRequestFullScreen) {
    // Firefox
    element.mozRequestFullScreen();
  }
  Full_screen.value = false
}
// 退出全屏
function tuier() {
  let element = charts_orders.value
  if (!element) {
    return
  }
  // 退出全屏
  if (element.requestFullScreen) {
    document.exitFullscreen();
  } else if (element.msRequestFullScreen) {
    document.msExitFullscreen();
  } else if (element.webkitRequestFullScreen) {
    document.webkitCancelFullScreen();
  } else if (element.mozRequestFullScreen) {
    document.mozCancelFullScreen();
  }
  Full_screen.value = true;
}

// 当窗口大小变化时自动调整图表尺寸
window.onresize = function () {
  // 图表
  orders_list();
};

css:

.echarts_zhong {
  width: 34.5%;
  height: 100%;
  display: flex;
  justify-content: space-between;
  flex-direction: column;
}

.echarts_zhong>div {
  width: 100%;
  height: 48%;
  border-radius: 8px;
  border: 1px solid #eaeaea;
}

/*<!-- 图表盒子 -->*/
.chart_box {
  border: 1px solid #eaeaea;
  border-radius: 8px;
  background-color: white;
  display: flex;
  user-select: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  position: relative;
  align-items: center;
  justify-content: center;
}


.top_img>img {
  width: 20px;
  height: 20px;
}

.top_img>div {
  width: 1px;
  height: 80%;
  background-color: #eaeaea;
}

### 在 Vue3 中使用 ECharts 实现全屏显示 要在 Vue3 项目中实现 ECharts 图表的全屏显示功能,可以按照以下方法操作: #### 安装依赖 首先需要安装 `echarts` 庄件: ```bash npm install echarts --save ``` #### 创建组件并初始化图表 创建一个 Vue 组件来加载和管理 ECharts 图表实例。以下是基于 Vue3 和 Composition API 的示例代码: ```vue <template> <div class="container"> <div ref="chartRef" style="width: 100%; height: 100%;" /> <button @click="toggleFullScreen">切换全屏</button> </div> </template> <script setup> import { ref, onMounted, onUnmounted } from 'vue'; import * as echarts from 'echarts'; const chartRef = ref(null); let chartInstance = null; onMounted(() => { if (chartRef.value) { chartInstance = echarts.init(chartRef.value); const option = { title: { text: 'ECharts 全屏示例', }, tooltip: {}, xAxis: { data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'], }, yAxis: {}, series: [ { name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20], }, ], }; chartInstance.setOption(option); } }); // 切换全屏逻辑 function toggleFullScreen() { if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { // 请求进入全屏模式 document.querySelector('.container').requestFullscreen(); } else { // 如果已经在全屏下,则退出全屏 if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } resizeChart(); // 调整图表尺寸以适配新窗口大小 } // 自定义调整图表尺寸的方法 function resizeChart() { setTimeout(() => { if (chartInstance) { chartInstance.resize(); } }, 300); // 延迟执行以确保 DOM 已更新完毕 } onUnmounted(() => { if (chartInstance) { chartInstance.dispose(); // 销毁图表实例释放资源 } }); </script> <style scoped> .container { width: 100%; height: 400px; position: relative; } </style> ``` 上述代码实现了以下几个关键点: - **请求全屏**:通过调用浏览器原生的 `requestFullscreen()` 方法使容器进入全屏状态[^1]。 - **退出全屏**:检测当前是否处于全屏状态,并调用对应的退出方法。 - **动态调整图表尺寸**:当进入或退出全屏时,触发 `resizeChart()` 函数重新设置图表尺寸。 #### 关键说明 - 需要监听全屏事件以便及时响应页面变化。可以通过 `fullscreenchange` 或其他兼容性前缀事件捕获这些行为。 - 动态调整图表尺寸非常重要,因为不同分辨率下的布局可能会影响展示效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值