我已经使用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>
答案 0 :(得分:0)
在使用bootstrap-vue库时,可以使用“标题”属性代替“文本”,并使用“ img-src”代替style:background。因为b-carousel-slide
组件会覆盖样式标签。
<b-carousel-slide
v-for="item in carouselItems"
:key="item.id"
:caption="item.text"
:img-src="item.image"
></b-carousel-slide>
如果您想为自定义对象设置自定义样式,则可以为标签设置其他类attr,例如:
<b-carousel-slide
class="MyCustomClass"
....
></b-carousel-slide>
<style>
.MyCustomClass {
width: 100%;
object-fit: cover;
}
</style>
但是请注意,您使用的旋转木马既有响应能力,又有全宽度。我认为您的问题是另外一回事。