前言:
最近帮助朋友解决了一个使用Element-plus中Carousel(走马灯)图片无法正常加载的bug,经过笔者的不断努力终于实现了,现在跟大家分享一下:
朋友原来的代码是这样的:
<template>
<div class="wai-banner">
<div class="banner">
<el-carousel :interval="4000" type="card" height="1500px">
<el-carousel-item v-for="(item, index) in items" :key="index">
<img :src="item" style="width: 500px; height: 1000px;">
</el-carousel-item>
</el-carousel>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
const items = ref([
'../assets/vue.svg',
'../assets/child.png',
'../assets/draw.png'
])
</script>
<style scoped></style>
运行之后,兴致勃勃去看效果,结果傻眼了,因为他发现效果是这样的:
后来笔者查阅了大量的资料,发现是路径无法正确解析,在Vue中直接使用相对路径访问图片不利于模块
解决方案:使用import导入图片
修改之后的代码展示:
<template>
<div class="wai-banner">
<div class="banner">
<el-carousel :interval="4000" type="card" height="1500px">
<el-carousel-item v-for="(item, index) in items" :key="index">
<img :src="item.url" style="width: 500px; height: 1000px;">
</el-carousel-item>
</el-carousel>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
import image1 from '../assets/vue.svg'
import image2 from '../assets/child.png'
import image3 from '../assets/draw.png'
const items = ref([
{
url: image1
},
{
url: image2
},
{
url: image3
}
])
</script>
实现效果如下: