Vue2原生始轮播图组件,支持宽度自适应、高度设置、轮播时间设置、左右箭头按钮控制,圆点按钮切换,以及箭头、圆点按钮是否显示。
<v-carousel :slideData="slideData" :height="450" :begin="0" :interval="3000" :dot="true" :arrow="true"></v-carousel>


话不多说直接上源码
轮播图应用页面 \components\public\home.vue
<template>
<div id="home">
<v-carousel :slideData="slideData" :height="450" :begin="0" :interval="3000" :dot="true" :arrow="true"></v-carousel>
</div>
</template>
<script> import carousel from "./public/carousel"; export default {
name: 'home',
data() {
return {
slideData:[
{
title:'这是一个Vue轮播图组件',
src:require('../assets/pic1.jpg'),
url:'/show/499'
},
{
title:'这是一个Vue轮播图组件',
src:require('../assets/pic2.jpg'),
url:'/show/499' },
{
title:'这是一个Vue轮播图组件',
src:require('../assets/pic3.jpg'),
url:'/show/499'
},
{
title:'这是一个Vue轮播图组件',
src:require('../assets/pic4.jpg'),
url:'/show/499'
},
{
title:'这是一个Vue轮播图组件',
src:require('../assets/pic5.jpg'),
url:'/show/499'
},
]
}
},
components:{
'v-carousel': carousel,
},
methods: { },
mounted() {
}
}
</script>
<style scoped>
</style>

轮播图组件页面 src\components\public\carousel.vue

<template>
<div id="carousel">
<div class="carousel" ref="carousel" v-bind:style="{height:height+'px'}">
<transition-group tag="ul" class="slide clearfix" :name="transitionName" >
<li v-for="(item,index) in slideData" :key="index" v-show="index==beginValue" v-bind:style="{height:height+'px'}" >
<router-link :to="item.url">
<img :src="item.src">
<div class="title">{{item.title}}</div>
</router-link>
</li>
</transition-group>
<div class="up" @click="up" v-show="arrow"></div>
<div class="next" @click="next" v-show="arrow"></div>
<div class="slideDot" v-show="dot">
<span v-for="(item,index) in slideData" :class="{active:index==beginValue}" @click="change(index)" :key="index"></span>
</div>
</div> </div>
</template> <script>
export default {
name: "carousel",
data(){
return{
setInterval:'',
beginValue:0,
transitionName:'slide'
}
},
beforeDestroy() {
// 组件销毁前,清除监听器
clearInterval(this.setInterval);
},
methods:{
change(key){
if(key>(this.slideData.length-1)){
key=0;
}
if(key<0){
key=this.slideData.length-1;
} this.beginValue=key;
},
autoPlay(){
//console.log(this.$refs.carousel.getBoundingClientRect().width);
this.transitionName='slide';
this.beginValue++
if(this.beginValue>=this.slideData.length){
this.beginValue=0;
return;
}
},
play(){
this.setInterval=setInterval(this.autoPlay,this.interval)
},
mouseOver(){ //鼠标进入
//console.log('over')
clearInterval(this.setInterval)
},
mouseOut(){ //鼠标离开
//console.log('out')
this.play()
},
up(){ //上一页
--this.beginValue;
this.transitionName='slideBack';
this.change(this.beginValue); },
next(){ //下一页
++this.beginValue;
this.transitionName='slide';
this.change(this.beginValue);
} },
mounted(){
var box = this.$refs.carousel; //监听对象
box.addEventListener('mouseover',()=>{
this.mouseOver();
})
box.addEventListener('mouseout',()=>{
this.mouseOut();
})
this.beginValue=this.begin;
this.play(); },
props:{
height:{
type: Number,
default: 600
},
dot:{
type: Boolean,
default: true
},
arrow:{
type: Boolean,
default: true
},
interval:{
type: Number,
default: 5000
},
begin:{
type: Number,
default: 0
},
slideData:{
type: Array,
default: function () {
return [];
} }
}
}
</script> <style scoped> .slide{position: relative;margin: 0;padding: 0; overflow: hidden;width: 100%; height:450px;}
.slide li{list-style: none;position: absolute;width: 100%; height:450px;}
.slide li img{width: 100%; height:450px;cursor:pointer}
.slide li .title{position: absolute; left:0; bottom: 0; padding: 10px 20px; width: 100%; background: rgba(0,0,0,.35);color: #fff;font-size: larger; text-align: center} .slideDot{position: absolute;z-index: 999; bottom: 60px;right:15px; }
.slideDot span{display: inline-block; width: 30px; height: 7px; background:rgba(255,255,255,.65); margin-left: 5px;}
.slideDot span.active{background:rgba(255,255,255,1);}
.up,.next{position: absolute; left:0; top: 50%; margin-top: -32px; cursor: pointer; width:64px;height: 64px;
background-repeat: no-repeat;
background-position: 50% 50%;
}
.up{background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABSklEQVRoQ9Xa220CMRCF4XMqIB0kdJASSCfpIDWlAzqAElIC6SBUMNFIywsCtB7PjX336v/k3YexTBQ+IvIC4AvAN8mTJYWWRR5rROQdwAGAIk4kt5b3lgCu4rX7l+TbUwBuxJ8B7Ej+tAd4xys47ROKiE8DRMWnACLjwwHR8aGAjPgwQFZ8CCAz3h2QHe8KqIh3A1TFuwAq46cB1fFTgA7xZkCXeBOgU/wwoFv8EKBj/GpA1/gRgJ4e7JaZdWqGtcy9j9asGilFRM9sXpcX/QH4sA7hVQA9wzkC2HRDrNoBjV7+g3aI1YCuiCFAR8QwoBvCBOiEMAO6IKYAHRDTgGqEC6AS4QaoQrgCKhDugGxECCATEQbIQoQCMhDhgGhECiASkQaIQqQCIhDpgDuI57orcQNxJqmXPoafkh24VIqIXvD4BLC3HtP8A6pfGkB3vbyXAAAAAElFTkSuQmCC");}
.next{left: auto;right:0;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABOElEQVRoQ9Xa0W0CQQyEYU9JqShQAXSSEgIdUAIlQAd04milezgdOiHZ4/GGN5C8/N/u060Olvy4+8nMngDuyaVC4whNLUPufjazn+XrEcAls15klgkY/y9HpACj2N3Hrn+vdk+KSAO6ERRAJ4IG6EJQAR0IOkCNKAEoEWUAFaIUoECUA6oREkAlQgaoQkgBFQg5gI1oATARbQAWohXAQLQDsogpABnENIAoYirADuILwGPvxmJGwK+ZHVbB/wfg7tv4K4A15u0gpjmBSPzQTAGIxk8ByMS3A7LxrQBGfBuAFd8CYMbLAex4KaAiXgaoipcAKuPLAdXxpQBFfBlAFV8CUMbTAep4KqAjngboiqcAOuPTgM27EmO9j8+we7cL0d9Tj5QbgDw+fQLLPc54Y+UF4BbdxczcH9Le8DFn39OvAAAAAElFTkSuQmCC");}
.up:hover{background-color: rgba(0,0,0,.3)}
.next:hover{background-color: rgba(0,0,0,.3)} /*进入过渡生效时的状态*/
.slide-enter-active{
transform:translateX(0);
transition: all 1s ease;
} /*进入开始状态*/
.slide-enter{
transform:translateX(-100%);
} /*离开过渡生效时的状态*/
.slide-leave-active{
transform:translateX(100%);
transition: all 1s ease;
} /*离开过渡的开始状态*/
.slide-leave{
transform:translateX(0);
} /*进入过渡生效时的状态*/
.slideBack-enter-active{
transform:translateX(0);
transition: all 1s ease;
} /*进入开始状态*/
.slideBack-enter{
transform:translateX(100%);
} /*离开过渡生效时的状态*/
.slideBack-leave-active{
transform:translateX(-100%);
transition: all 1s ease;
} /*离开过渡的开始状态*/
.slideBack-leave{
transform:translateX(0);
} </style>

  

Vue2 轮播图组件 slide组件的更多相关文章

  1. 2.bootstrap练习笔记-轮播图

    bootstrap练习笔记-轮播图 1.要使用轮播图,首先要将其放在一个主div里面 设置id为myCaroysel class为carousel slide 设置id是标识这个div是轮播图,等到l ...

  2. 用原生js封装轮播图

    原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...

  3. React Native 之轮播图swiper组件

    注释:swiper组件是第三方组件 所以在使用之前应该先在命令行安装,然后将第三方的模块引入(第三方模块地址:https://github.com/leecade/react-native-swipe ...

  4. vue自定义轮播图组件 swiper

    1.banner 组件 components/Banner.vue <!-- 轮播图 组件 --> <template> <div class="swiper- ...

  5. bootstrap轮播图组件

    一.轮播图组件模板(官方文档) <div id="carousel-example-generic" class="carousel slide" dat ...

  6. ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS

    react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...

  7. 原生JS面向对象思想封装轮播图组件

    原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...

  8. 前端笔记之JavaScript面向对象(四)组件化开发&轮播图|俄罗斯方块实战

    一.组件化开发 1.1组件化概述 页面特效的制作,特别需要HTML.CSS有固定的布局,所以说现在越来越流行组件开发的模式,就是用JS写一个类,当你实例化这个类的时候,页面上的效果布局也能自动完成. ...

  9. reactjs-swiper react轮播图组件基于swiper

    react轮播图组件基于swiper demo地址:http://reactjs-ui.github.io/reactjs-swiper/simple.html 1. 下载安装 npm install ...

随机推荐

  1. Java Web开发中的转发和重定向的问题

    Java Web的页面实现跳转有两种方式,一种是转发,另外一种是重定向.一般来说,转发比重定向快.重定向会经过客户端,转发却不会. 转发 request.getRequestDispatcher(&q ...

  2. APACHE如何一个站点绑定多个域名?

    大家肯定遇到过这样的情况,需要APACHE2里一个站点绑定多个域名,那么如何操作呢?用ServerAlias 以前很笨,要使多个域名指向同一站点总是这样写: ServerAdmin admin@dom ...

  3. MSSQL->serverlink[Oracle]

    需求描述:     SQL Server数据库连接Oracle数据库   条件准备:     SQL Server数据库,SQL Server 2008R2     Oracle数据库,Oracle ...

  4. java 通过调用存储过程获取结果集

    一般在java中,数据查询是通过Statement, PreparedStatement获取结果集,今天向大家介绍通过CallableStatement调用存储过程,从而获取结果集.        本 ...

  5. Ubuntu下Visual Studio Code的配置

    最近在Ubuntu系统里用Visual Studio Code编写vue代码时,在build的时候老是报错,后来发现原来Visual Studio Code里默认Tab是4个空格,而vue代码要求ta ...

  6. DB2问题记录本

    1.System.Data.OleDb.OleDbException (0x80004005): 未指定的错误. 场景:部署网站到IIS上,使用oledb连接DB2数据库报错,开发环境正常 解决方案: ...

  7. Facebook POP 使用指南

    Facebook POP 使用指南 Pop是一个动画引擎,用以扩展iOS.OSX的动画类型.相较于iOS.OSX中的基本动画效果,Pop扩展后支持弹簧动画效果与衰减动画效果,你可以用Pop动画引擎来构 ...

  8. Linux watch命令详解

    watch可以帮你监测一个命令的运行结果,来监测你想要的一切命令的结果变化 常见命令参数 Usage: watch [-dhntv] [--differences[=cumulative]] [--h ...

  9. December 12th 2016 Week 51st Monday

    Nothing is impossible for a willing heart. 心之所愿,无所不成. I wish I can be a strong, clever, powerful and ...

  10. [T-ARA][Day by Day]

    歌词来源:http://music.163.com/#/song?id=22704409 作曲 : 金泰贤/赵英秀 [作曲 : 金泰贤/赵英秀] [作曲 : 金泰贤/赵英秀] 作词 : 金泰贤/赵英秀 ...