Echarts 和 bootstrap:响应式宽度

Posted

技术标签:

【中文标题】Echarts 和 bootstrap:响应式宽度【英文标题】:Echarts and bootstrap: responsive width 【发布时间】:2016-01-31 23:57:12 【问题描述】:

使用 Echarts(来自百度)我想在 div 元素中放置一个饼图(我正在使用引导程序)。

所以我有:

<div class="row">
   <div class="col-md-4">
      <div id="chartGift" style="height:400px;"></div>
    </div>
</div>

我从官方文档中获取了 javascript 代码 https://ecomfe.github.io/echarts/doc/example/pie1.html#-en

问题是饼图没有出现,因为检查 html 代码,我看到宽度为 0。为什么 echarts 不设置父元素的宽度?我不想设置静态宽度(我看到它有效),因为图表没有响应。

【问题讨论】:

【参考方案1】:

如果您只想设置固定高度,请尝试将宽度设置为容器的 100% 并设置最小高度:

<div id="chartGift" style="width: 100%; min-height: 400px"></div>

它对我有用! 另外,如果您想确保图表响应,您可以知道窗口何时调整大小并强制图表调整大小。像这样:

    $(window).on('resize', function()
        if(chart != null && chart != undefined)
            chart.resize();
        
    );

希望对您有所帮助!

【讨论】:

这是一个很好的答案。关键是要有width: 100%,否则resize() 不起作用。文档也没有提到这一点,但我想这只是常识:) 但是,如果我的父 div 是 Material-ui 卡,它就不起作用:(【参考方案2】:
<div id="echart" style="width: 400px; min-width: 100%; height:400px;"></div>

这对我有用。 A min-width: 100% 就可以了。

【讨论】:

【参考方案3】:

我在购买的管理模板中找到了解决方案。加载内容后有初始化图表的解决方案。这是工作示例:

    $(document).ready(function () 

        setTimeout(function () 

            // based on prepared DOM, initialize echarts instance
            var myChart = echarts.init(document.getElementById('chart-amount'), 'macarons');
            // specify chart configuration item and data
            var option = ..options of chart here ..


            // use configuration item and data specified to show chart
            myChart.setOption(option);


        , 100);

    );

图表容器的样式为:style="height: 400px; width: 100%; 这很重要,当您使用echart工具箱时。它喜欢走出容器。

希望对你有帮助:)

【讨论】:

以上是关于Echarts 和 bootstrap:响应式宽度的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 4 响应式表格不会占用 100% 的宽度

当宽度属性消失时,如何使 Bootstrap 响应式 div 转换

Bootstrap响应式栅格系统设计

前端可视化ECharts 实现响应式图表

css模拟Bootstrap响应式布局——栅格

移动WEB开发之响应式布局