当前位置: 首页 > news >正文

可视化图表与源代码显示的动态调整

可视化图表与源代码显示的动态调整

页面效果描述:本篇代码实现了通过拖动一个可调整大小的分隔符,用户可以动态地调整图表显示区域和源代码显示区域的大小。通过监听鼠标事件,当用户拖动分隔符时,会动态计算并更新两个区域的大小
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en" style="height: 100%">
<head><meta charset="utf-8"><style>body, html {height: 100%;margin: 0;display: flex;flex-direction: column;}#main-container {display: flex;flex: 1; /* 占据剩余空间 */overflow: hidden;}#chart-container {flex: 1; /* 初始时占据一半空间 */height: 100%;overflow: hidden;position: relative;}#source-container {flex: 0; /* 初始时不占据空间,根据需要调整 */background-color: rgba(111, 231, 35, 0.36);padding: 30px;overflow: auto;height: 90%;}#splitter {background-color: #ccc;cursor: ew-resize;width: 5px;position: absolute;right: 0;top: 0;bottom: 0;z-index: 1;}#downloadButton {padding: 10px 20px;background-color: #007bff;color: #1ed5cf;border: none;border-radius: 5px;cursor: pointer;font-size: 16px;position: absolute;top: 20px;right: 20px;z-index: 1000;}</style>
</head>
<body><div id="main-container"><div id="chart-container"><div id="container" style="height: 100%;"></div><div id="splitter"></div></div><div id="source-container"><pre id="source-code"></pre><button id="downloadButton" onclick="downloadSourceCode()">下载</button></div></div><script src="echarts.min.js"></script><script type="text/javascript">var dom = document.getElementById('container');var myChart = echarts.init(dom, null, {renderer: 'canvas',useDirtyRect: false});var app = {};var option;option = {title: {text: '题目'},tooltip: {trigger: 'axis',axisPointer: {type: 'cross',label: {backgroundColor: '#6a7985'}}},legend: {data: ['数据1', '数据2', '数据3', '数据4', '数据5']},// toolbox: {//   feature: {//     saveAsImage: {}//   }// },grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},xAxis: [{type: 'category',boundaryGap: false,data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']}],yAxis: [{type: 'value'}],series: [{name: '数据1',type: 'line',stack: 'Total',areaStyle: {},emphasis: {focus: 'series'},data: [120, 132, 101, 134, 90, 230, 210]},{name: '数据2',type: 'line',stack: 'Total',areaStyle: {},emphasis: {focus: 'series'},data: [220, 182, 191, 234, 290, 330, 310]},{name: '数据3',type: 'line',stack: 'Total',areaStyle: {},emphasis: {focus: 'series'},data: [150, 232, 201, 154, 190, 330, 410]},{name: '数据4',type: 'line',stack: 'Total',areaStyle: {},emphasis: {focus: 'series'},data: [320, 332, 301, 334, 390, 330, 320]},{name: '数据5',type: 'line',stack: 'Total',label: {show: true,position: 'top'},areaStyle: {},emphasis: {focus: 'series'},data: [820, 932, 901, 934, 1290, 1330, 1320]}]
};if (option && typeof option === 'object') {myChart.setOption(option);}window.addEventListener('resize', myChart.resize);// 设置源代码显示document.getElementById('source-code').textContent = document.documentElement.outerHTML;let startX, startWidth, isResizing = false;document.getElementById('splitter').addEventListener('mousedown', function(e) {isResizing = true;startX = e.clientX;startWidth = document.getElementById('chart-container').offsetWidth;document.addEventListener('mousemove', onMouseMove);document.addEventListener('mouseup', onMouseUp);document.addEventListener('mouseleave', onMouseUp);});function onMouseMove(e) {if (!isResizing) return;let newWidth = startWidth + (e.clientX - startX);newWidth = Math.max(100, Math.min(document.getElementById('main-container').offsetWidth - 5, newWidth));document.getElementById('chart-container').style.flex =`${newWidth / document.getElementById('main-container').offsetWidth * 100}%`;document.getElementById('source-container').style.flex = `calc(100% - ${newWidth}px)`;}function onMouseUp() {isResizing = false;document.removeEventListener('mousemove', onMouseMove);document.removeEventListener('mouseup', onMouseUp);document.removeEventListener('mouseleave', onMouseUp);}// 下载源代码功能function downloadSourceCode() {var element = document.createElement('a');element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(document.documentElement.outerHTML));element.setAttribute('download', 'page.html');element.style.display = 'none';document.body.appendChild(element);element.click();document.body.removeChild(element);}</script>
</body>
</html>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vite静态资源处理,处理vite项目中src和url路径问题
  • DedeCMS-V5.7.82-UTF8织梦
  • 复现一下最近学习的漏洞(sqlab 1-10)
  • 速盾:爬虫攻击和cc攻击的区别是什么?
  • Git在日常项目中的实用技巧
  • 汉诺塔(C++)
  • 2024华数杯数学建模A题完整论文讲解(含每一问python代码+结果+可视化图)
  • 总线学习4--UART
  • pom.xml和.m2的setting的区别?
  • 【秋招笔试】24-07-27-OPPO-秋招笔试题(后端卷)
  • ES相关介绍与扫盲
  • 【C语言】C语言期末突击/考研--详解一维数组与字符数组
  • 罗杰斯的逆势投资:破而后立
  • 如何选择合适的气膜生产厂家—轻空间
  • 动态规划.
  • 【译】理解JavaScript:new 关键字
  • Joomla 2.x, 3.x useful code cheatsheet
  • k8s 面向应用开发者的基础命令
  • Redis中的lru算法实现
  • Terraform入门 - 1. 安装Terraform
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 构建二叉树进行数值数组的去重及优化
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 记一次用 NodeJs 实现模拟登录的思路
  • 来,膜拜下android roadmap,强大的执行力
  • 力扣(LeetCode)22
  • 区块链将重新定义世界
  • 算法-图和图算法
  • 详解移动APP与web APP的区别
  • 新版博客前端前瞻
  • 一个SAP顾问在美国的这些年
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #、%和$符号在OGNL表达式中经常出现
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #LLM入门|Prompt#3.3_存储_Memory
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (C语言)fgets与fputs函数详解
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .net 验证控件和javaScript的冲突问题
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .Net组件程序设计之线程、并发管理(一)
  • @ConfigurationProperties注解对数据的自动封装
  • @KafkaListener注解详解(一)| 常用参数详解
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [AI Google] 使用 Gemini 取得更多成就:试用 1.5 Pro 和更多智能功能