Echarts和 Bootstrap :响应宽度

jyztefdp  于 2022-12-08  发布在  Bootstrap
关注(0)|答案(5)|浏览(226)

使用Etarts(来自百度),我想把一个饼图放在一个div元素中(我使用的是bootstrap)。
所以我有:

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

我从官方文档www.example.com中获取了javascript代码https://ecomfe.github.io/echarts/doc/example/pie1.html#-en
问题是饼图没有出现,因为检查html代码,我看到宽度为0。为什么echarts不从父元素设置宽度?我不想设置静态宽度(我看到它工作),因为图表没有响应。

busg9geu

busg9geu1#

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

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

它对我很有效!另外,如果你想确保图表是响应性的,你可以知道窗口的大小是什么时候调整的,并强制图表也调整大小。像这样:

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

希望它有帮助!

eh57zj3b

eh57zj3b2#

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

$(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);

    });

图表容器的样式为:高度:400 px;宽度:100%;这很重要,当你在使用echart工具箱的时候。它喜欢走出容器。
我希望它能有所帮助:)

u2nhd7ah

u2nhd7ah3#

只需使用ResizeObserver来检测图表容器元素大小的变化。即使布局发生变化,它也能工作,并且不依赖于窗口大小等。顺便说一句,如果需要,Polyfill也可用。

const container = document.querySelector('#chart');
const chart = echarts.init(container);

new ResizeObserver(() => chart.resize()).observe(container);
zzwlnbp8

zzwlnbp84#

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

这对我很有效。最小宽度:100%的效果。

t1rydlwq

t1rydlwq5#

设置width: 100%会导致echarts以节点大小(100px)出现,而设置min-width: 100%则根本不会出现。所以这是相对css单位的问题。
但是我们仍然可以使用JS设置图表容器的大小。

let main = document.querySelector("main");
let chartDom = document.getElementById("echartsGrafikon");

// getting width of element we want to size up to our chart
// do this before chart initialization
let grafikonWidth = main.getBoundingClientRect().width;
chartDom.style.width = grafikonWidth + "px";

// initializing echart
let echartGrafikon = echarts.init(chartDom);

// to dynamically change size         
window.onresize = function () {
    echartGrafikon.resize();
};

相关问题