ECharts无法获取准确的父元素大小

在一个页面里有一个div存放一个图表

 使用基础折线图

 

发现不会根据父元素的大小来自适应

 

<template>
    <div class="box" id="rightMain">
    </div>
</template>
<script setup>
import * as echarts from 'echarts/lib/echarts';
import 'echarts/lib/component/grid';
import 'echarts/lib/chart/line';


import { onMounted, ref } from 'vue'

const chartDom = ref('')
let myChart
const option = ref(null)

onMounted(() => {
    chartDom.value = document.getElementById('rightMain');
    myChart = echarts.init(chartDom.value);
    option.value = {
        xAxis: {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
            type: 'value'
        },
        series: [
            {
                data: [150, 230, 224, 218, 135, 147, 260],
                type: 'line'
            }
        ]
    };

    option.value && myChart.setOption(option.value);
})

</script>
<style scoped>
.box {
    width: 100%;
    height: 100%;
}
</style>

通过询问chatgpt

问题是由于样式 scoped 的限制,导致在 Vue 组件的 <style> 中使用的类选择器 .box 并没有正确地应用到在 JavaScript 部分使用的 chartDom 元素上,从而影响了图表容器的大小。这是由于 Vue 的样式隔离机制,它使得类选择器只在组件内部生效。

解决办法:

把类选择器改为id选择器,成功解决问题。

<template>
    <div id="rightMain">
    </div>
</template>
<script setup>
import * as echarts from 'echarts/lib/echarts';
import 'echarts/lib/component/grid';
import 'echarts/lib/chart/line';


import { onMounted, ref } from 'vue'

const chartDom = ref('')
let myChart
const option = ref(null)

onMounted(() => {
    chartDom.value = document.getElementById('rightMain');
    myChart = echarts.init(chartDom.value);
    option.value = {
        xAxis: {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
            type: 'value'
        },
        series: [
            {
                data: [150, 230, 224, 218, 135, 147, 260],
                type: 'line'
            }
        ]
    };

    option.value && myChart.setOption(option.value);
})

</script>
<style scoped>
#rightMain {
    width: 100%;
    height: 100%;
}
</style>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值