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

vue-echarts高度缩小时autoresize失效

背景

项目中采用动态给x-vue-echarts style赋值width,height的方式实现echarts图表尺寸的改变
在这里插入图片描述

  <v-chart...autoresize></v-chart>

给v-chart添加autoresize后,在图表宽度变化,高度增加时无异常,高度减小时图表并未缩小,反而被截断了

先说结论

添加全局样式进行覆盖

div.vue-echarts-inner {height: 100% !important;
}

原理

查看vue-echarts源码
在这里插入图片描述
在这里插入图片描述
这里的inner以及useAutoresize中的root值为该dom节点
在这里插入图片描述
所以实际上是在监听div.vue-echarts-inner这个dom节点的尺寸变化,从而去给inner的子盒子设置width和height
在这里插入图片描述
下面是父盒子的css属性
在这里插入图片描述
下面是inner的css属性
在这里插入图片描述
问题就在于flex和height auto

  • 父盒子为flex盒且flex-direction为column,子盒子设置flex-grow:1,那么子盒子会填满父盒子的高度
  • 父盒子设置高度为height:auto,那么高度会以其子盒子内容高度为准,也就是子盒子是300px,就会把该盒子高度撑到300px

但两者在一块就有冲突
这里分为父,子,孙三个盒子

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.father {display: flex;flex-direction: column;background-color: red;width: 500px;height: 500px;}.me {flex: 1;width: 300px;background-color: green;height: auto;}.son {width: 100px;background-color: blue;height: 500px;}</style>
</head><body><div class="father"><div class="me"><div class="son"></div></div></div>
</body></html>

结论:

  • 父盒子高度大于孙盒子时,子盒子高度跟随父盒子
    在这里插入图片描述

  • 父盒子高度小于孙盒子时,子盒子高度跟随孙盒子
    在这里插入图片描述
    回到vue-echarts场景,所以在高度减少时,inner的父盒子高度减少,但inner子盒子高度不变,所以inner盒子高度不会变,不会触发resize

解决办法:inner设置height: 100%,这样inner的高度会跟随其父盒子高度而变化,而不会受其子盒子影响

http://www.lryc.cn/news/502244.html

相关文章:

  • rabbitMq的rabbitmqctl status报错
  • linux c++ uuid编译时的问题
  • 【STM32】RTT-Studio中HAL库开发教程九:FLASH中的OPT
  • [SWPUCTF 2021 新生赛]crypto9
  • vue中常用的指令
  • Docker Compose实战三:轻松部署PHP
  • 数据分析实战—房价特征关系
  • 云和恩墨 zCloud 与华为云 GaussDB 完成兼容性互认证
  • 【大语言模型LangChain】 ModelsIO OutputParsers详解
  • PaddleSpeech本地部署文档
  • Android 第三方框架:RxJava:源码分析:责任链模式
  • 网络安全 与 加密算法
  • UE4_贴花_贴花基础知识二
  • ElasticSearch 搜索、排序、分页功能
  • MySQL-9.1.0 实现最基础的主从复制
  • Java中的“泛型“
  • 前端(五)css属性
  • 总结拓展十七:SAP 采购订单行项目“交货“页签解析
  • 分布式日志系统设计
  • DApp开发如何平衡性能与去中心化?
  • RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10
  • 2024年12月GESPC++三级真题解析
  • vue-router路由传参的两种方式(params 和 query )
  • Asp.net 做登录验证码(MVC)
  • 在 Chrome中直接调用大型语言模型的API
  • 微信小程序调用腾讯地图-并解读API文档 JavaScript SDK和 WebService API
  • WPF 控件
  • VScode执行任务
  • MySQL(数据类型)
  • pytorch中的tqdm库