h5中echarts图表,增加双指缩放功能,支持区域缩放

embedded/2024/10/22 5:17:48/

起因:在h5的echarts中,数据量过多,增加了dataZoom,但是折线图依然不美观。产品希望通过双指移动事件,显示折线图的数据。

解决:

1、echarts保留dataZoom,但是将height设置为0,start是0,end是100。

2、使用检测触摸手势的js库:hammer.js,检测手势。

3、监听手势,获得双指移动的缩放比例,更新echarts 的 dataZoom 范围。

javascript">index.html
<script src="https://cdn.bootcdn.net/ajax/libs/hammer.js/2.0.8/hammer.min.js"></script>
javascript"><script setup>
const setOptions = () => {if (props.isZoom) {option.dataZoom = [{height: 0,start: 0,end: 100,showDataShadow: true, //组件中显示数据阴影showDetail: false, //拖拽时候显示详细数值信息borderColor: "transparent", //组件边框颜色dataBackground: {lineStyle: {color: "#00b48c",type: "solid",join: "round",opacity: 1,},areaStyle: {color: "rgba(0, 214, 174, 0.49)",},}, //数据阴影的样式fillerColor: "transparent", //选中范围的填充颜色selectedDataBackground: {lineStyle: {color: "#00b48c",type: "solid",join: "round",opacity: 1,},areaStyle: {color: "rgba(0, 214, 174, 0.49)",},}, //选中部分数据阴影的样式handleStyle: {borderColor: "#00b48c",color: "#ffffff",}, //两侧缩放手柄的样式配置moveHandleSize: 0,moveHandleStyle: {color: "#00d4b7",opacity: 0.49,}, //移动手柄的样式配置emphasis: {handleStyle: {borderColor: "#00b48c",},moveHandleStyle: {color: "#00d4b7",opacity: 0.49,},},},];}// 使用指定的配置项和数据显示图表myChart.setOption(option);onTouch();
}const onTouch = () => {const hammer = new Hammer(main.value);hammer.get("pinch").set({ enable: true });hammer.on("pinch", (event) => {const scale = event.scale; // 获取缩放比例if (scale <= 0.5) return //缩放比例不足0.5,不调整范围// 根据缩放比例调整 dataZoom 的范围const start = Math.max(0, 100 - scale * 100); // 计算起始位置const end = Math.min(100, scale * 100); // 计算结束位置// 更新 echarts 的 dataZoom 范围myChart.dispatchAction({type: "dataZoom",dataZoomIndex: 0, // 指定dataZoom组件的索引,如果有多个dataZoom组件可以根据实际情况设置start, // 设置dataZoom的起始位置end, // 设置dataZoom的结束位置});});
};
</script>


http://www.ppmy.cn/embedded/26900.html

相关文章

【webrtc】MessageHandler 1: 基于线程的消息处理:以10毫秒处理音频为例

基于m98 G:\CDN\rtcCli\m98\src\audio\null_audio_poller.h分发的消息由MessageHandler 类通过其抽象接口OnMessage 实现处理 NullAudioPoller NullAudioPoller 是一个处理audio的消息的分发器 poll 启动:

Web UI自动化测试--selenium其他使用方法

一、无头浏览器 应用场景: 无头的场景,一般先有头测试,再无头运行节省资源不关注正常的操作过程对错误的仍然可以截图示例: from selenium import webdrivermy_option =webdriver.ChromeOptions() my_option.add argument(-headless) driver= webdriverChrome(options=my…

為什麼使用HTTP代理爬蟲?

HTTP代理爬蟲是一種特殊的網路爬蟲&#xff0c;它使用HTTP代理伺服器來匿名或偽裝自己的IP地址&#xff0c;從而避免被目標網站檢測和遮罩。這種技術廣泛用於網路爬蟲中&#xff0c;尤其在數據採集、網路監控和網頁爬取等領域。 HTTP的工作原理是怎樣的&#xff1f; 爬蟲通過HT…

BTCOIN发布WEB3.0论坛:生态与金融的双重叙事热点驱动自由创新意识

在数字时代&#xff0c;信息的自由流动和透明度是推动经济发展和社会进步的关键。尤其在加密货币和区块链领域&#xff0c;这一点尤为重要。BTCOIN的最新创举——一个基于WEB3.0理念的信息论坛&#xff0c;不仅标志着信息传递自由化的新篇章&#xff0c;也为数字货币市场的信息…

vue 下拉框默认值显示与多值传参

1、vue下拉框介绍 <template><el-select v-model"value" placeholder"请选择"><el-optionv-for"item in options":key"item.value":label"item.label":value"item.value"></el-option>&…

基于Spring Boot的旅游管理系统设计与实现

基于Spring Boot的旅游管理系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台浏览管理界面图&#xff0c;通过内容列表可以获取网…

【全开源】Java养老护理助浴陪诊小程序医院陪护陪诊小程序APP源码

功能介绍&#xff1a; 养老护理助浴陪诊小程序是一款专为老年人及其家庭设计的全方位服务工具。该小程序集合了养老护理、助浴和陪诊三大功能&#xff0c;为老年人的生活提供了极大的便利和舒适。 养老护理功能&#xff1a; 专业护理员预约&#xff1a;用户可以通过小程序预约…

基于springboot的母婴商城系统源码数据库

基于springboot的母婴商城系统源码数据库 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本母婴商城系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在…