每天学习一点点,每天记录一点点、每天提高一点点——————《伊索寓言》
效果图
代码
<template> <div class="outWrap"> <div :class=" isHorizontalScreen ? 'horizontalEchartsFather' : 'verticalEchartsFather' " > <!-- 全屏进入退出按钮 --> <h3 @click="switchFn" :class="isHorizontalScreen ? 'horizontalIcon' : 'verticalIcon'" > {{ isHorizontalScreen ? "退出横屏" : "进入横屏" }} </h3> <!-- echarts局部 --> <div id="echartsId" :class="isHorizontalScreen ? 'horizontal' : 'vertical'" ></div> </div> </div></template><script>import Echarts from "echarts";export default { data() { return { myChart: null, // echarts的实例 isFull: false, // 是否全屏 isHorizontalScreen: false, // 是否是横向屏幕,默认false,默认是竖向屏幕 option: { dataZoom: [ { type: "inside", }, ], xAxis: { data: [ "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "4.7", "4.8", "4.9", "4.10", "4.11", "4.12", "4.13", "4.14", "4.15", "4.16", "4.17", ], }, yAxis: {}, series: { name: "股价", type: "line", data: [ 51, 61, 71, 27, 19, 20, 15, 8, 21, 2, 19, 66, 88, 4, 21, 77, 6, ], itemStyle: { normal: { color: "green", //扭转折线点的色彩 lineStyle: { color: "green", //扭转折线色彩 }, }, }, }, }, }; }, watch: { // 当横屏进入退出要重绘一下echarts isHorizontalScreen(newVal) { console.log("横屏切换", newVal); this.myChart.setOption(this.option, true); this.$nextTick(() => { this.resize(); }); }, }, mounted() { // 增加自适应监听 window.addEventListener("resize", this.resize); this.echarts(); }, methods: { // 初始化 echarts() { this.myChart = Echarts.init(document.querySelector("#echartsId")); this.myChart.setOption(this.option); }, resize() { this.myChart.resize(); // 窗口大小发生变化的时候重置 }, // 切换 程度垂直~全屏默认屏 switchFn() { this.isHorizontalScreen = !this.isHorizontalScreen; this.isFull = !this.isFull; }, }, // 移除自适应监听 beforeDestroy() { window.removeEventListener("resize", this.resize); },};</script><style lang="less" scoped>// 最外层满屏.outWrap { width: 100%; height: 100vh; background: #e9e9e9;}/* 用于给竖向echarts画布定位用 */.verticalEchartsFather { width: 100%; height: 50%; background-color: #fff; position: relative;}// 竖向的失常百分比即可.vertical { width: 100%; height: 100%;}/* 用于给横向echarts画布定位用,横向就旋转90度即可 */.horizontalEchartsFather { transform: rotate(90deg); position: relative; width: 100%;}// 因为横向了,所以颠倒一下.horizontal { width: 100vh; height: 100vw;}/* 进入横屏和退出横屏两套款式,定位在不同的地位 */.verticalIcon { position: absolute; top: 2px; right: 6px; z-index: 999; user-select: none;}.horizontalIcon { position: absolute; top: 2px; left: 6px; z-index: 999; user-select: none;}</style>
总结
横屏的时候,即为竖屏旋转90度,加上监听管制,而后改一下款式,最初别忘了重绘一下Echarts
A good memory is better than a bad pen. Write it down
If this article helped you, don't forget to jump to my GitHub and give a star ⭐⭐⭐ Thanks a lot...