vue tab切换,解决echartst图表宽度只有100px的问题
解决思路直接将图表的宽高写死,根据实际代码进行改写,提供一个思路
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的问题就是长沙网络推广分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程