解决思路:直接将图表的宽高写死,根据实际代码进行改写,提供一个思路
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的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。