-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何做到自适应?我想在移动端优美的展示 #45
Comments
“优美的展示” 可以具体一点吗? |
我已经解决了谢谢 |
怎么解决啊?我这边总是报 Can't get dom width or height |
用在什么场景下? |
|
如果我定死高宽,图表是可以显示出来,但是依然会报Can't get dom width or height |
当width为100%时,如果容器因素的不存在或不被显示,相当于width没有设置,此时Echarts是获取不到容器宽度的。解决的方法类似上面提供的那个例子,在确定容器已经渲染好了(一般是在nextTick之后),调用一下resize方法,这样图就可以显示出来了。 |
那nextTick写在vue的哪个钩子里? |
一般是mounted,如果容器的渲染是在mounted后执行的,比如是通过某个变量控制,那就要在这个变量变化后(一般写在watch里)执行nextTick。 |
容器宽高我是定好了的,使用mounted方法还是不行
|
方便抽象出一个例子看看吗?或者描述一下大致的 dom 结构,使用场景。 |
dom结构就是最上面列举出来的那个 |
升个版本试试 v1.11.3 |
如果可以的话,在 jsfiddle 上简化出一个可以重现这个问题的例子吧,这样可以更有针对性的解决你遇到的问题。 |
谢谢,问题已经解决 |
麻烦问下怎么解决的? |
@GuangxinZhang 是出现什么报错了吗?还是展示的时候样式有问题? |
@xiguaxigua 我的页面刷新后,曲线图会溢出,在mounted里resize也不起作用,改变窗口大小后,就没问题了。每次刷新页面就又会溢出,感觉像echarts先于父元素渲染了大小,echarts比父元素大。 |
方便抽出一个示例吗? |
@xiguaxigua 我点击按钮事件,执行resize,是没问题的,但是每次刷新页面,echarts就回溢出。
package.json |
在 mounted 内部增加 nextTick 修改一下看看:
|
大概是这个问题,我有个左侧菜单,echarts渲染的时候,没有考虑左侧菜单的大小,上面那个代码单独显示echarts图形是没有问题的,我加上左侧菜单以后,就显示不正常了。 |
侧边栏是可以切换显示隐藏的吗? |
@xiguaxigua 嗯嗯,是的 |
对于溢出的问题,一般是由于 echarts 渲染时的 html 结构的宽度还不是预期的宽度导致的,解决的方案是在合适的时机触发一下 echarts 的 resize 方法。 不是很了解你得页面里是如何实现这个侧边栏的,我这边写了一个小例子 https://jsfiddle.net/vue_echarts/qc441x6m/1/ ,跟你写的这个样式差不多的,可以看一下里面的内容那些不一样,也可以把你写的 HTML 结构抽出一个大致的例子,这样解决起来可能更加方便一些。 |
是这样的,整个页面是一个布局组件,头部和左侧是固定的,内容区是变化的内容
layout.vue:
index.vue:
通过点击按钮显示隐藏侧边栏,我传递了{{drawer}}点击变量到index.vue,监听变化,并且重置echarts大小,能正常收到变量值,但是重置不起作用,感觉像echarts在以最大的窗口为基准resize,而不是当前的index.vue组件。 |
应该是这样的:Vue 异步执行 DOM 更新,内容区可能比侧边栏优先渲染,这是echarts获取到的父元素的大小是整个窗口的大小,echarts已经设置了大小,然后侧边栏才渲染,官方解决方案确实是用Vue.nextTick(callback),但是我在index.vue的mounted方法里执行了这个,的确不起作用,官方提到如果执行环境不支持nextTick,可以使用setTimeout,于是我设置了以下方法,这时问题解决了:
但是这个方法实在是太不优雅,而且图形会卡顿一下,我设置100ms都有时候会无法显示正常 |
@GuangxinZhang |
@xiguaxigua 没有效果~ |
方便让我看一下你的整个项目吗? 我这边没办法重现,不好去判断到底是哪里的问题。 |
或者是在 jisfiddle 或者 codesandbox 上写一个例子 |
https://73jj91oq6j.codesandbox.io/#/index 修改了一个css,看下在你的项目里能不能修复样式的问题。 |
No description provided.
The text was updated successfully, but these errors were encountered: