ECharts 高度宽度自适应(转载)

最近在写一个地图类的应用,用的是echarts的图表,然而一上来就一脸懵逼,如果父级容器的height/width属性设置为百分比的形式,那么echarts就会warning,且不能正常的生成图表。所以div容器的高度宽度必须指定为px,这设计不知道是为啥。 
google到的解决方案如下

  • 添加window.onresize=myCharts.resize在setOption之后

我添加后图表的高度被压缩到了min-height,很奇怪,于是自己采用了如下解决方案,直接贴代码了。

var worldMapContainer = document.getElementById(‘WorldMap‘);

//用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
var resizeWorldMapContainer = function () {
    worldMapContainer.style.width = window.innerWidth+‘px‘;
    worldMapContainer.style.height = window.innerHeight+‘px‘;
};
//设置容器高宽
resizeWorldMapContainer();
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(worldMapContainer);

// 指定图表的配置项和数据
var option = {
    title: {
        text: ‘ECharts 入门示例‘
    },
    tooltip: {},
    legend: {
        data:[‘销量‘],
        height: worldMapContainer.style.height,
        width: worldMapContainer.style.width
    },
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis: {},
    series: [{
        name: ‘销量‘,
        type: ‘bar‘,
        data: [5, 20, 36, 10, 10, 20]
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

//用于使chart自适应高度和宽度
window.onresize = function () {
    //重置容器高宽
    resizeWorldMapContainer();
    myChart.resize();
};

此时,worldMapContainer的高宽已经无所谓了,因为我们已经在js中设定了div容器高宽。 
这个方法可以在使ECharts在高度和宽度上均自适应,如若遇到什么坑,之后再补充。

  • 如果是需要图表跟随容器自适应的话,将上述window.innerWidthwindow.innerHeight替换为容器元素的container.clientWidthcontainer.clientHeight即可。其根本原理就是通过JavaScript来刷新图表宽高而非直接css自适应(因为ECharts不支持)

来源:http://blog.csdn.net/u012043416/article/details/51912011

原文地址:https://www.cnblogs.com/hao-1234-1234/p/8427534.html

时间: 2024-10-10 23:05:32

ECharts 高度宽度自适应(转载)的相关文章

iframe高度宽度自适应(转)

http://www.cnblogs.com/snandy/p/3900016.html 跨子域的iframe高度自适应 完全跨域的iframe高度自适应 同域的我们可以轻松的做到 1. 父页面通过iframe的contentDocument或document属性访问到文档对象,进而可以取得页面的高度,通过此高度值赋值给iframe tag. 2. 子页面可以通过parent访问到父页面里引入的iframe tag,进而设置其高度. 但跨域的情况则不允许对子页面或父页面的文档进行访问(返回und

iframe高度/宽度自适应(使用body而不是docuemntElement对象)

iframe在ie11中会显示过于短.为了自适应,增加如下代码: <iframe *** onload='changeFrameHeight()' > <script> function changeFrameHeight() { var ifm = document.getElementById("content3"); ifm.height = document.body.clientHeight ; ifm.width = document.body.cl

iframe 高度宽度自适应

<iframe id="iframeHome" name="iframeHome" src="/Page/NewHome/GongZuoTai.html" scrolling="yes" onload="iFrameHeight()" frameborder="0" style="padding: 0px; width:980px;float:left; margin:0

固定背景图的高度,让宽度自适应

将容器的高度固定,宽度设置成百分百,然后将background-size设置成cover.当宽度不够时,背景图的两边会隐藏 如下:将class是con的容器高度固定.宽度自适应 .con { width: 100%; height: 300px; background: url("image/vpb_intro/introduce_9.png") center center no-repeat; background-size: cover; filter: progid:DXImag

android scollview嵌套webview底部空白,高度无法自适应解决

最近要做一个页面,需要scollview嵌套webview,怎么嵌套,怎么解决焦点和touch时间冲突,网上一大堆,这里就不赘述了 但是发现webview从一个高度很高的网页加载一个高度很低的网页的时候,高度无法自适应了,造成底部会有一大片的空白,解决方案找到了挺多,描述一下 1.google建议不要在scrollview中使用webview,但是毕竟无法避免,产品的需求 2.每次加载新的url的时候remove掉旧的webview,重新加入一个新的webview去加载这个新url,这种方案是可

我熟知的三种三栏网页宽度自适应布局方法

一.前言在如今各个分辨率显示器N足鼎立的时期,页面采用流动性布局(亦可称自适应布局)不失为一个好选择.当然,具体实现不是那么容易,需要一定的css功力和实践经验.本文不讲细节,只讲外部的自适应架构,这也是实现整个页面自适应的前提.目前为止,我所熟知的左中右三栏宽度自适应于浏览器的方法有三个:绝对定位法,margin负值法以及自身浮动法.这些方法简洁实用,且无兼容性问题.如果您想在您的页面上使用流动性布局,相信本文给您一些启示的. 二.三种方法为了演示的需要,首先限定下示例的布局结构:左中右三栏布

移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 )

序言:应朋友要求随手写了一下移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 ) ,以备后用 LESS代码: .adaptive-circle { margin: 50px auto 0; width: 80%; height: 0; padding-top: 80%; border-radius: 100%; border: 1px solid #000; box-sizing: border-box; // for .layout { height: 100%; } positi

三栏的网页布局,中间宽度自适应

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

echarts legend 重叠 (转载)

解决方案:  1. 调整option中的grid.top值才能避免重叠:(可以设置定制,也可以定义了一个计算公式) 2. 文档注明[特殊字符串 ''(空字符串)或者 '\n' (换行字符串)用于图例的换行.] 转载来源:http://blog.csdn.net/doleria/article/details/52503763 内容如下: github地址:Data Visualization ----------------------------------------------------