vue tab切换,解决echartst图表宽度只有100px的问题


Posted in Javascript onJuly 19, 2020

解决思路:直接将图表的宽高写死,根据实际代码进行改写,提供一个思路

1.将图表放进一个div里面

<div class="echarts">
 <div id="myChart" :style="{width: '100%', height: '150px'}"></div>
</div>

2.定义一个方法,并在mounted视图更新的时候执行

<script>
export default {
 mounted() {
 this.setMyChart();
 },
 methods: {
 setMyChart() {
 // jq写法
 // 获取父元素
 var echarts = $('.echarts');
 // 获取父元素宽高
 var echartsWidth = echarts.outerWidth(true);
 var echartsHeight = echarts.outerHeight(true);
 // 获取图表元素
 var myChart = $('#myChart');
 // 将父元素宽高赋值给图表
 myChart.css('width', myChart);
 myChart.css('height', myChart);
 
 // 原生js写法
 // 获取父元素
 // var echarts = document.querySelector('.echarts');
 // 获取父元素宽高
 // var echartsWidth = getStyle(echarts,'width');
 // var echartsHeight = getStyle(echarts,'height');
 // 获取图表元素
 // var myChart = document.querySelector('#myChart');
 // 将父元素宽高赋值给图表
 // myChart.style.width = echartsWidth;
 // myChart.style.height = echartsHeight;

 // 这是一个封装好的方法,兼容IE,第一个参数,element, 第二个属性,css样式
 // function getStyle(obj, attr) { 
 // if (obj.currentStyle) { 
 // return obj.currentStyle[attr]; 
 // } else { 
 // return document.defaultView.getComputedStyle(obj,null)[attr]; 
 // } 
 // }
 }
 }
};
</script>

3.样式

<style scoped>
.echarts {
 width:300px;
 height:150px;
} 
</style>

如果本篇文章对你有帮助的话,很高兴能够帮助上你。

补充知识:vue项目tab切换echart图表切换宽度缩小和图表内容不正确解决

代码:

布局:

<TabButton :btnValue1="'总数'" :btnValue2="'明细'" @watchFlag="handler"></TabButton>
 <div class="it_content">
 <div class="picture" id="work" ref="work" v-show="flag===false"></div>
 <div class="picture" id="workTotal" ref="workTotal" v-show="flag===true"></div>
 </div>

处理函数:

handler(flag){
 this.flag=flag;
 if(!this.flag){
 this.$nextTick(() => {
    this.drawwork(); // 明细图
   });
 }else{
 this.$nextTick(() => {
    this.drawworkTotal(); // 总数图
   });
 }
 },

1、解决宽度缩小的问题

本来是用vue指令的v-if,但是发现用v-if出现宽度缩小的问题。后来改用v-show。这是因为v-if指令是将Dom元素去除掉位置空间了,v-show是将Dom元素位置空间保留了,但并没有进行渲染。v-show保留所定义的样式,空间位置也被保留,echarts图表的宽高依旧和之前一样,所以不会缩小。

2、图表内容不正确

利用this.$nextTick(() => {})。Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。 $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM。flag发生变化之后,Dom没有立即更新了,通过 $nextTick 回调函数,执行echarts的绘画。

nextTick的由来:

由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新。

nextTick的触发时机:

在同一事件循环中的数据变化后,DOM完成更新,立即执行nextTick(callback)内的回调。

结合nextTick的由来,可以推出每个事件循环中,nextTick触发的时机:

同一事件循环中的代码执行完毕 -> DOM 更新 -> nextTick callback触发

应用场景:

需要在视图更新之后,基于新的视图进行操作。

以上这篇vue tab切换,解决echartst图表宽度只有100px的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript数组前面插入元素的方法
Apr 06 Javascript
基于javascript简单实现对身份证校验
Jan 25 Javascript
jQuery validate验证插件使用详解
May 11 Javascript
jQuery下拉框的简单应用
Jun 24 Javascript
ajax级联菜单实现方法实例分析
Nov 28 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
使用typescript改造koa开发框架的实现
Feb 04 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 Javascript
vue实现广告栏上下滚动效果
Nov 26 Vue.js
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 #Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 #Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
Jul 19 #Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 #Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
Jul 19 #Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
Jul 19 #Javascript
JavaScript中reduce()的5个基本用法示例
Jul 19 #Javascript
You might like
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
jQuery常用选择器详解
2017/07/17 jQuery
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
通过cmd进入python的实例操作
2019/06/26 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
2013年研究生毕业感言
2014/02/06 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
李开复演讲稿
2014/05/24 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
投诉信回复范文
2015/07/03 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang