VUE-使用计算属性设置v-if 显示与否
轮播组件默认显示最后一张图片,原因:传递的是空数组;解决:使用v-if="list.length" 当父组件传递过来数据才显示 ,此方法不够优雅优雅方法:在模板部分尽量减少逻辑,因此,写在逻辑部分,使用属性方法 v-if="showSwiper"<template><div class="wrapper"><!-- 轮播插件 --&...
·
- 轮播组件默认显示最后一张图片,
- 原因:传递的是空数组;
- 解决:使用v-if="list.length" 当父组件传递过来数据才显示 ,此方法不够优雅
- 优雅方法:在模板部分尽量减少逻辑,因此,写在逻辑部分,使用属性方法 v-if="showSwiper"
<template>
<div class="wrapper">
<!-- 轮播插件 -->
<swiper :options="swiperOption" v-if="showSwiper">
<swiper-slide v-for="item of list" :key="item.id">
<img class="swiper-img" :src="item.imgUrl" />
</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
</swiper>
</div>
</template>
<script>
export default {
name: 'HomeSwiper',
props: {
list: Array
},
data () {
return {
swiperOption: {
pagination: '.swiper-pagination',//3,插件属性,显示小点,这里需要修改小点的颜色
loop: true //5,支持循环轮播
}
}
},
computed: {
//计算属性,当有值时才加载轮播图
showSwiper () {
return this.list.length
}
}
}
</script>
<style lang="stylus" scoped>
// 4,样式穿透
.wrapper >>> .swiper-pagination-bullet-active
background: #fff
.wrapper
overflow: hidden
width: 100%
height: 0
padding-bottom: 31.25% //2,图片宽高比例为31.25,主要是防止在fast 3G模式下,图片还未加载出来时,下方的文字抖动现象
background: #eee
.swiper-pagination-bullet-active
background: #fff //修改小点的背景,放在此处,不起作用
.swiper-img
width: 100% //1,设置图片的宽高
</style>
更多推荐
已为社区贡献32条内容
所有评论(0)