封装vue轮播图组件

通过vue走马灯组件制作轮播图

carousel.vue:子组件(存放了轮播图组件)
index.vue:父组件(通过传递参数,决定子组件的宽、高和展示图片)

carousel.vue

<template>
	<div class="block">
		<el-carousel :height="heightStyle" ref="carousel" :interval="3000" arrow="always" 
    			 :style="widthStyle" @click.native="linkTo">   
      		<el-carousel-item class="carousel-item" v-for="item in imgs" :key="item.url">
       			<img class="carousel-img" :src="item.url" />      
      		</el-carousel-item>
    	</el-carousel>
  	</div>
</template>

<script>
export default {
	name: "carousel",
  	props: {
    	width: {type: String},
    	imgs: {type: Array},
    	height:{type: String}
  	},
  	computed: {
    	widthStyle: function () {return {width: this.width + "px"};
    	heightStyle: function () {return this.height + "px";},
  	},
  	methods: {
    	linkTo() {
      		let activeIndex = this.$refs.carousel.activeIndex;
      		this.$router.push(this.imgs[activeIndex].link);
    	},
  	},
};
</script>

<style scoped>
.carousel-item {
  width: 100%;
  height: 100%;
  background: white;
  display: flex;
  justify-content: center;
}
.carousel-img {
  max-width: 100%;
  max-height: 100%;
}
</style>

index.vue

<template>
  	<ly-grid>
    	<carousel :imgs="imgs"  height="400" width="600"></carousel>
  	</ly-grid>
</template>

<script>
import carousel from "./components/carousel";
export default {
  	name: "index",
  	components: {  carousel },
  	data() {
    	return {
      		imgs: [
        		{ url: require("@/assets/carousel/pic1.png"), link: "/content1" },
        		{ url: require("@/assets/carousel/pic2.png"), link: "/content2" },
        		{ url: require("@/assets/carousel/pic3.png"), link: "/content3" },
        		{ url: require("@/assets/carousel/pic4.png"), link: "/content4" },
        		{ url: require("@/assets/carousel/pic5.png"), link: "/content5" },
      		],
    	};
  	},
};
</script>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值