前言
vue3项目中如何封装自己的轮播图效果组件呢,希望轮播图可以控制是否自动轮播,当鼠标悬停的时候停止自动轮播。点击左右切换或者分页指示器可以切换图片。这些功能是如何实现的呢?又是如何通过插件方式注册为全局组件的呢?一起来看看如何实现的吧~
一、为什么封装?
- 为了迎合es6模块化开发思想
- 注册为全局组件,可以更好地复用,需要用到的地方,直接使用标签即可
二、如何封装?
1. 准备
像之前vue3——自己封装骨架屏效果这篇博文一样的操作,通过vue插件的方式注册为全局组件。
项目中需要用到的全局组件可以统一都放到src/components
目录下,新建xx.vue
文件,名称自定义。
代码如下(示例):
<template>
<div class='carousel' @mouseenter="stop()" @mouseleave="start()">
<ul class="carousel-body">
<li class="carousel-item" v-for="(item, i) in list" :key="item.id" :class="{fade: index === i}">
<RouterLink to="/">
<img :src="item.imgUrl" alt="">
</RouterLink>
</li>
</ul>
<!-- 左右控制按钮 -->
<a href="javascript:;" class="carousel-btn prev" @click="toggle(-1)"><</a>
<a href="javascript:;" class="carousel-btn next" @click="toggle(1)">></a>
<!-- 分页器 -->
<div class="carousel-indicator">
<span v-for="(item,i) in list" :key="i" :class="{active: index === i}" @click="index = i"></span>
</div>
&l