【发布时间】:2019-09-22 14:35:08
【问题描述】:
我已经使用 bootstrap-vue 设置了一个轮播。我使用了一个 for 循环和一个对象数组来动态创建组件。在每张幻灯片中,我将包含一个文本和一个背景图像。我能够动态呈现文本。但是,背景图像只出现在第一张幻灯片上。对于后续的幻灯片,图像将不再呈现。似乎是什么问题?下面是我的代码和结果截图
更新:我仍然无法让它工作。谁能帮我?
<template>
<div>
<b-carousel
id="carousel-1"
v-model="slide"
:interval="4000"
controls
indicators
background="#ababab"
style="text-shadow: 1px 1px 2px #333;"
@sliding-start="onSlideStart"
@sliding-end="onSlideEnd"
>
<!-- Text slides with image -->
<b-carousel-slide
v-for="item in carouselItems"
:key="item.id"
:text="item.text"
:style="{ 'background-image' : 'url(\'' + item.image + '\')' }"
></b-carousel-slide>
</b-carousel>
<ProductList/>
</div>
</template>
<script>
// 1. Loading images asychronously later on from S3
// https://stackoverflow.com/questions/50659676/how-to-load-image-src-url-in-vuejs-asyncronously
import ProductList from "@/components/product/ProductList.vue";
export default {
components: {
ProductList
},
data() {
return {
carouselItems: [
{
id: 1,
image: "https://source.unsplash.com/LAaSoL0LrYs/1920x1080",
text: "Nulla vitae elit libero, a pharetra augue mollis interdum. (1)"
},
{
id: 2,
image: "https://source.unsplash.com/LAaSoL0LrYs/1920x1080",
text: "Nulla vitae elit libero, a pharetra augue mollis interdum. (2)"
},
{
id: 3,
image: "https://source.unsplash.com/LAaSoL0LrYs/1920x1080",
text: "Nulla vitae elit libero, a pharetra augue mollis interdum. (3)"
}
],
slide: 0,
sliding: null
};
},
methods: {
onSlideStart(slide) {
this.sliding = true;
},
onSlideEnd(slide) {
this.sliding = false;
}
}
};
</script>
<style scoped>
.carousel-item {
height: 100vh;
min-height: 350px;
background: no-repeat center center scroll;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
</style>
【问题讨论】:
-
我认为问题在于您如何在 b-carousel-slide 中编写 v-bind:style。试试这个:
:style="{ backgroundImage : url(item.image) }" -
您好,它不起作用。轮播甚至没有与您的代码一起出现
标签: twitter-bootstrap vue.js bootstrap-4 carousel bootstrap-vue