封装了一个echarts图全屏放大的功能

这篇具有很好参考价值的文章主要介绍了封装了一个echarts图全屏放大的功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意:1、没有监听屏幕的大小,我感觉没必要
2、如果是监听屏幕大小变化,直接echarts.resize()就行了。

封装的js文件

import * as echarts from 'echarts'
/**
 * el:目标渲染元素
 * option:echarts配置项
 * resize:是否需要全屏功能
 */

export const initEcharts = (el, option, resize = false) => {
    const chartDom = el;
    const myChart = echarts.init(chartDom);
    let num = 0
    //全屏放大功能,增加全屏按钮,点击全屏按钮(自己添加)传递resize参数=true就行
    if (resize) {
        myChart.resize()
        const resizeObserver = new ResizeObserver(entries => {
            num++
            if (num >= 2) {
                myChart.resize()
                if (!document.webkitIsFullScreen) {
                    num = 0
                    setTimeout(() => {
                        resizeObserver.disconnect()
                    }, 50)
                }
            }
        });
        resizeObserver.observe(el)
    }
    myChart.clear()
    myChart.setOption(option);
}

export const screenFull = e => {
    if (e.requestFullscreen) {
        e.requestFullscreen();
    } else if (e.mozRequestFullScreen) {
        e.mozRequestFullScreen();
    } else if (e.webkitRequestFullscreen) {
        e.webkitRequestFullscreen();
    } else if (e.msRequestFullscreen) {
        e.msRequestFullscreen();
    }
};

使用

1、initEcharts接收三个参数,参一为echarts渲染的目标元素
参二为echarts渲染的配置项
参三控制是否需要全屏放大的相关功能

2、screenFull 为控制某个元素放大的按钮,传递需要放大的元素即可文章来源地址https://www.toymoban.com/news/detail-424905.html

<template>
	<div class="main-pie">
		<button @click="fn">点击此按钮进入全屏(根据需求可以换成icon的形式,搭配hover)</button>
		<div class="main-echarts" ref="main-echarts"></div>
	</div>
</template>
<script>
	import { initEcharts, screenFull } from "@/utils/initEcharts.js";
	export default {
		data() {
			return {
				option2: {
					tooltip: {
						trigger: "item"
					},
					legend: {
						type: "scroll",
						orient: "vertical",
						right: "center",
						top: 20,
						bottom: 20
					},
					series: [
						{
							type: "pie",
							radius: "90%",
							left: "50%",
							itemStyle: {
								borderColor: "#fff",
								borderWidth: 2
							},
							data: [
								{
									value: 1548,
									name: "CityE"
								},
								{ value: 735, name: "基础治疗" },
								{ value: 510, name: "挂号" },
								{ value: 434, name: "正畸形" },
								{ value: 335, name: "修复类" },
								{ value: 335, name: "种植类" }
							]
						},
						{
							itemStyle: {
								borderColor: "#fff",
								borderWidth: 2
							},
							type: "pie",
							radius: "90%",
							right: "50%",

							data: [
								{
									value: 1548,
									name: "CityE"
								},
								{ value: 735, name: "基础治疗" },
								{ value: 510, name: "挂号" },
								{ value: 434, name: "正畸形" },
								{ value: 335, name: "修复类" },
								{ value: 335, name: "种植类" }
							]
						}
					]
				}
			};
		},
		props: {},
		watch: {},
		mounted() {
			this.initMainEcharts();
		},
		created() {},
		methods: {
			initMainEcharts(resize = false) {
				let el = this.$refs["main-echarts"];
				initEcharts(el, this.option2, resize);
			},
			fn() {
				screenFull(this.$refs["main-echarts"]);
				//全屏放大,需要等待容器缩放完成后,重绘echarts图像
				setTimeout(() => {
					this.initMainEcharts(true);
				}, 50);
			}
		}
	};
</script>
<style lang="scss" scoped>
	.main-pie {
		li {
			list-style: none;
			display: flex;
			align-items: center;
			padding: 6px;
			cursor: pointer;
			white-space: nowrap;
			> div {
				width: 10%;
				height: 10px;
				margin-right: 10px;
			}
		}
		.title-echarts {
			width: 100%;
			height: 80px;
			display: flex;
			align-items: center;
			justify-content: space-between;
			p {
				text-align: center;
				width: 42%;
				font-size: 18px;
			}
		}
		width: 100%;
		> .main-echarts {
			background-color: white;
			height: calc(100vh - 270px);
		}

		.main-echarts {
			width: 100%;
		}

		p {
			padding: 0;
			margin: 0;
			color: #000000;
		}
	}
</style>

到了这里,关于封装了一个echarts图全屏放大的功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue 封装一个鼠标拖动选择时间段功能

       

    2024年02月15日
    浏览(39)
  • 基于 Guava Retry 在Spring封装一个重试功能

    pom依赖 注解类 测试类

    2024年02月13日
    浏览(42)
  • 微信小程序点击图片放大预览,新页面中全屏预览图片

    第一步:在wxml中定义image组件,并设置绑定事件。 第二步:在js中设置需要预览图片的URL数组, 切记一定要是数组 ,即使一张图也要是数组,不能直接字符串赋值。 2.1 data数据设置 2.2 绑定事件函数编制 3.wx.previewImage组件官方调用指南 4、效果预览

    2024年02月11日
    浏览(73)
  • 封装一个类似微信通讯录带有字母检索功能的vue组件

    这里我们直接使用 scrollIntoView 方法 该方法将调用它的元素滚动到浏览器窗口的可见区域 element.scrollIntoView(); // 等同于element.scrollIntoView(true) element.scrollIntoView(alignToTop); //布尔参数 element.scrollIntoView(scrollIntoViewOptions); //对象参数 分析一下功能就知道很简单了。 首先需要

    2024年02月12日
    浏览(62)
  • Ajax_3 Ajax原理+ (XMLHttpRequest + Promise )+ 封装一个axios插件库,实现功能。

    01-Ajax原理-XMLHttpRequest 使用XMLHttpRequest 步骤: 创建XMLHttpRequest对象 配置请求方法请求url网址 监听loadend事件,接受响应结果 发起请求 需求:使用XMLHttpRequest对象与服务器通信 代码示例 02-XMLHttpRequest-查询参数 定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的

    2024年02月14日
    浏览(45)
  • vue3.0 使用echarts与echarts-gl 实现可旋转,可放大3D饼图

    echarts与echarts-gl 实现3D饼图 实现效果: 旋转效果 缩放效果 实现步骤 1、安装echarts npm install echarts npm install echarts-gl 2、页面定义容器 3、js中引入echarts VUE 组件完整源码:

    2024年04月26日
    浏览(41)
  • VSCode常用快捷键(放大/缩小字体、切换全屏、跳转指定行数、返回上一次位置、隐藏 /显示导航、注释代码)

    ——推荐几个常用的快捷键: ——1)“Ctrl+B” = 隐藏 /显示左侧导航 ——2) F11= 切换至全屏模式(禅宗模式)有利于集中注意力开发 ——3)“Ctrl + +” = 放大编辑器页面字体 ——4)“Ctrl + -” =缩小编辑器页面字体 ——5)“Ctrl + /” = 代码注释 ——6)“Ctrl + S\\\" = 文件保存

    2024年02月09日
    浏览(46)
  • 全屏API及vue3 hook封装

    最近在一个大屏项目遇到一个需求:用户可以通过一个按钮,触发页面部分模块全屏。通过以下API可以实现: Element.requestFullscreen()方法用于发出异步请求使元素进入全屏模式。 且全屏状态变化会触发以下事件: fullscreenchange 事件会在浏览器进入或退出全屏模式后立即触发。

    2024年02月05日
    浏览(37)
  • 一个超级大的文件如何更快读

    问题起因 一个有千万的数据的txt文件如何发挥IO的全部性能更快的读和写。 使用ChatGPT4的方案 在C#中,我们可以使用多线程来处理大量的数据并将其写入数据库。在处理大数据时,我们需要将任务分解为多个子任务,这样我们可以在不同的线程中并行执行它们以提高性能。

    2024年02月08日
    浏览(37)
  • vue3 echart组件封装

    项目中用到了很多echart图表,进行了简单的组件封装,主要包含以下功能: 创建图表实例,渲染图表 支持传入自定义函数,可拿到图表实例,实现个性化功能 支持配置更新后图表自动刷新,可配置是清空后再刷新 loading状态控制 resize时图表更新 支持饼图默认高亮功能 echa

    2024年03月09日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包