一、需求说明

  • 1、点击标签按钮切换不同的echarts图表,考虑用Ant Design Vue,但是其样式无法自定义

  • 2、div的整体布局样式使用tailwindcss,标签页的来回切换样式使用自定义的css样式

  • 3、实现方案:

  1) 页面初始化时,一个 div 显示折线图,另一个div显示柱状图。默认显示折现图,隐藏柱状图

  2) 通过点击按钮控制两个 div 的显示和隐藏,并且来回切换按钮的样式

  3) 即使连续点击同一个按钮也不会发生变化

  4) js 中 动态控制 css 样式

  5) 加载渲染图表时,出现需要点击两次按钮才能显示图表的情况,是因为隐藏div并且显示另一个div时,不能同时渲染echarts图表。解决方法是 调用时用 setTimeout 延迟加载

二、标签页功能实现

  • 1、代码部分
  1. <template>
  2. <div class="w-full h-full flex flex-col">
  3. <div class="w-full h-full flex flex-row">
  4. <!-- class用动态样式 -->
  5. <button @click="showChartLine" :class="`${btnLine}`">折线图</button>
  6. <button @click="showChartBar" :class="`${btnBar}`">柱状图</button>
  7. </div>
  8. <div class="w-full h-4/5 bg-blue bg-opacity-80 flex flex-col">
  9. <!-- 页面初始化时,先默认显示折现图,隐藏柱状图 -->
  10. <div v-if="showLine" class="w-full h-full" id="line"></div>
  11. <div v-else-if="showBar" class="w-full h-full" id="line"></div>
  12. </div>
  13. </div>
  14. </template>
  15. <script setup>
  16. import { computed, ref } from "vue";
  17. let showLine = ref(true);
  18. let showBar = ref(false);
  19. let isDisabled = ref(true);
  20. // 初始化按钮的css样式变量
  21. let btnLine = computed(() => {
  22. return isDisabled ? "btn-Bule" : "btn-Grey";
  23. });
  24. let btnBar = computed(() => {
  25. return !isDisabled ? "btn-Bule" : "btn-Grey";
  26. });
  27. // 按钮的点击函数。
  28. // 加载渲染图表时,出现需要点击两次按钮才能显示图表的情况,是因为隐藏div并且显示另一个div时,不能同时渲染echarts图表
  29. // 解决方法是 调用时用 setTimeout 延迟加载
  30. function showChartLine(){
  31. // 点击折现图时,先让柱状图隐藏,再让折线图显示
  32. showBar.value = false;
  33. showLine.value = true;
  34. // 并且交换两个按钮的样式
  35. btnBar._value = "btn-Grey";
  36. btnLine._value = "btn-Bule";
  37. // 调用画图函数
  38. // toDrawLine();
  39. }
  40. function showChartBar(){
  41. showLine.value = false;
  42. showBar.value = true;
  43. btnLine._value = "btn-Grey";
  44. btnBar._value = "btn-Bule";
  45. // toDrawBar();
  46. }
  47. </script>
  48. <style>
  49. .btn-Bule {
  50. height: 100%;
  51. width: 50%;
  52. color: #03f5c7;
  53. background-color: #17326b;
  54. opacity: 0.8;
  55. font-size: 1rem;
  56. line-height: 1.5rem;
  57. }
  58. .btn-Grey {
  59. height: 100%;
  60. width: 50%;
  61. color: #7f88ad;
  62. background-color: #14264e;
  63. opacity: 0.8;
  64. font-size: 1rem;
  65. line-height: 1.5rem;
  66. }
  67. </style>

Vue自定义标签页,并且在其中渲染Echarts图表的更多相关文章

  1. 剖析html对标准标签和自定义标签闭合与不闭合渲染问题

    昨天在修改去年写的系统的时候无意中看到了当时写的一个利用标准标签未闭合在单元格内把整个单元格颜色渲染成红色的效果,如下: 当时的问题是从后台返回来的是个int整数而%是写在页面上的如图 这 时候就出现 ...

  2. Vue自定义标签

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  3. WebStorm开发Vue自定义标签提示是未知标签解决办法

    打开 File -> Settings -> File Types 在右侧的窗口中找到Vue.js Template 并选中,在下面的窗口中添加 *.vue 即可解决问题. 修改后

  4. mpvue——动态渲染echarts图表

    前言 使用mpvue-echarts来写图表,那个F2再提醒自己下要踩坑不能忘记.遇到了一个问题就是数据不能动态的去渲染,这个其实官方给了我们对应的方法 懒加载 代码 修改了调用initChart() ...

  5. Android学习笔记_41_TabHost自定义标签和TraceView性能测试

    一.tabhost第一种用法,通过在帧布局放入定义好的page页面来实现,这样导致在当前activity下代码量比较大. 1.页面布局: |        |        |        |    ...

  6. vue单页面条件下添加类似浏览器的标签页切换功能

    在用vue开发的时候,单页面应用程序,而又有标签页这种需求,各种方式实现不了, 从这个 到这个,然后再返回上面那个 因为每个标签页的route不一样,导致组件重新渲染的问题,怎么都不知道如何实现... ...

  7. 代码走查25条疑问 C# 跳转新的标签页 C#线程处理 .Net 特性 attribute 学习 ----自定义特性 看懂 ,学会 .NET 事件的正确姿势-简单版

    代码走查25条疑问   代码走查(Code Review) 是一个开发人员与架构师集中讨论代码的过程.通过代码走查可以提高代码的 质量,同时减少Bug出现的几率.但是在小公司中并没有代码走查的过程在这 ...

  8. 【vue】vue中实现标签页

    前言 tab标签页实现很多, 纯css实现, js实现等, 外加一些特殊动画. vue中实现标签页实现 keep-alive标签和is特性 vue-router中嵌套路由 is特性实现(推荐) 优点: ...

  9. vue 标签页以及标签页赋值

    背景: 使用vue增加了标签页,点击不同标签页传给后端的值不一样,用来做区分,如图: vue代码如下: 使用 form.PageA   form.PageB ,后端接收到的值 first.second ...

随机推荐

  1. Maven脑图

    转自:https://segmentfault.com/a/1190000017832792 参考:https://www.cnblogs.com/mzywucai/p/11053341.html

  2. Google 开发console查找元素或方法

    F12 后 在console中输入: $("#R")[0] 查找ID 为R的元素, 如需打印出元素属性值,则输入: console.dir($("#R")[0] ...

  3. Web安全-CDN相关技术

    CDN介绍 CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发. ...

  4. Blazor WebAssembly 应用程序中进行 HTTP 请求

    翻译自 Waqas Anwar 2021年5月13日的文章 <Making HTTP Requests in Blazor WebAssembly Apps> [1] 在我的前篇文章< ...

  5. PyTorch安装及试用 基于Anaconda3

    设置Torch国内镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ ...

  6. Java并发之AQS原理解读(一)

    前言 本文简要介绍AQS以及其中两个重要概念:state和Node. AQS 抽象队列同步器AQS是java.util.concurrent.locks包下比较核心的类之一,包括AbstractQue ...

  7. JavaScript高级程序设计(读书笔记)之BOM

    BOM(Browser Object Model)提供了很多对象用于访问浏览器的功能,这些功能与任何网页内容无关. 8.1 window对象 BOM的核心对象是window,它表示一个浏览器实例.在浏 ...

  8. openresty(nginx) 配置 http与https使用同一个端口,禁止 IP 直接访问

    准备好工作目录 mkdir work cd work mkdir conf logs 准备好 conf/nginx.conf 配置文件, 把 your.domain 换成你自己的域名 user abc ...

  9. Python之sqlite3模块

    python自带有sqlite3模块,该模块可以方便我们操作sqlite数据库,下面一起跟随示例了解sqlite3模块的具体用法. import sqlite3 # 连接数据库 connection ...

  10. Charles-抓取https请求

    在未经设置之前,Charles是无法抓取https请求的,会出现unknown的标识.我们可以通过以下两步设置,解决该问题. 第一步:安装证书 https是在http的基础上加入ssl层,通过ssl来 ...