v-show,v-if切换组件echarts显示不全的问题
首先说明一下v-shou和v-if的区别
相同点:v-if与v-show都可以动态控制dom元素显示隐藏
不同点:v-if显示隐藏是将dom元素整个添加或删除,而v-show隐藏则是为该元素添加css--display:none,dom元素还在。
需要注意的是,当一个元素默认在css中加了display:none属性,这时通过v-show修改为true是无法让元素显示的。原因是显示隐藏切换,只是会修改element style为display:""或者display:none,并不会覆盖掉或修改已存在的css属性。
问题所在
显示不全的图形
显示全的图形
解决此问题本人暂时试过四种方法
1、既简单又粗暴的方法:直接给图形所在的div设置一个固定宽度;
2、利用v-if:用v-if显示页面首次进入页面组件之间的传参未能完成;
例如:
3、通过获取父元素的宽度,将其复制给子元素,
代码例如:
<div class="echarts"> <div id="myChart" :style="{width: '100%',height: '150px'}"></div> </div>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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 = this.getStyle(echarts,'width'); // var echartsHeight = this.getStyle(echarts,'height'); // //获取图表元素 // var myChart = document.querySelector('#myChart'); // //将父元素宽高赋值给图表 // myChart.style.width = echartsWidth; // myChart.style.height = echartsHeight; }, //这是一个封装好的方法,兼容IE,第一个参数,element,第二个属性,css样式 getStyle (obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return document.defaultView.getComputedStyle(obj, null )[attr]; } } } |
4、v-show控制组件显示,这里我们利用控制v-show的变量;首先我们把这个变量传进子组件中来监听这个变量的变化,在给一个判断如果当这个变量等于v-show所控制的当前组件的值时触发resize()这个方法;
努力到无能为力,拼搏到感动自己。
欢迎大家在下方多多评论。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了