Vue2 轮播图组件 slide组件
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组件的更多相关文章
- 2.bootstrap练习笔记-轮播图
bootstrap练习笔记-轮播图 1.要使用轮播图,首先要将其放在一个主div里面 设置id为myCaroysel class为carousel slide 设置id是标识这个div是轮播图,等到l ...
- 用原生js封装轮播图
原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...
- React Native 之轮播图swiper组件
注释:swiper组件是第三方组件 所以在使用之前应该先在命令行安装,然后将第三方的模块引入(第三方模块地址:https://github.com/leecade/react-native-swipe ...
- vue自定义轮播图组件 swiper
1.banner 组件 components/Banner.vue <!-- 轮播图 组件 --> <template> <div class="swiper- ...
- bootstrap轮播图组件
一.轮播图组件模板(官方文档) <div id="carousel-example-generic" class="carousel slide" dat ...
- ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS
react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...
- 原生JS面向对象思想封装轮播图组件
原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...
- 前端笔记之JavaScript面向对象(四)组件化开发&轮播图|俄罗斯方块实战
一.组件化开发 1.1组件化概述 页面特效的制作,特别需要HTML.CSS有固定的布局,所以说现在越来越流行组件开发的模式,就是用JS写一个类,当你实例化这个类的时候,页面上的效果布局也能自动完成. ...
- reactjs-swiper react轮播图组件基于swiper
react轮播图组件基于swiper demo地址:http://reactjs-ui.github.io/reactjs-swiper/simple.html 1. 下载安装 npm install ...
随机推荐
- Sublime Text 3.1 3170正式版+Patch注册机
Sublime Text 是一款轻量级的代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等. ...
- 简说mvc路由
首先我们通过在Global.asax中的Application_Start将路由信息注册到RouteTable的Routes静态属性中.如下代码所示: public class RouteTable ...
- Python学习---range/for/break/continue简单使用
range的使用:注意,在python3中,交互模式下已经不显示了 for循环的使用 打印50-70 # 第一种方案 for i in range(100): if i <= 70 and i ...
- Linux 配置samba服务实现与Windows文件共享
目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍 Samba 最先在 ...
- Who are you, What is the science
Please read: 地球月球有多大? 我们乃至我们赖以生存的地球, 甚至是我们硕大的银河系放到茫茫大宇中真的不过是一粒尘埃, 我们司空见惯的事物,我们习以为常的生活,我们笃定信奉的科学, 是不 ...
- Linux中配置ftp服务器
1. 先用rpm -qa| grep vsftpd命令检查是否已经安装,如果ftp没有安装,使用yum -y install vsftpd 安装,(ubuntu 下使用apt-get instal ...
- javaservlet处理四种常用api请求get,put,post,delete
一般在网站搭建中servlet只需处理post,get请求便足已.本篇注重使用javaweb编写restful风格api,在servlet中对四种常用请求进行处理. 在api中对于一个请求要做的通常是 ...
- jq局部打印插件jQuery.print.js(兼容IE8)
/* @license * jQuery.print, version 1.5.1 * (c) Sathvik Ponangi, Doers' Guild * Licence: CC-By (http ...
- BZOJ 3211 花神游历各国 线段树平方开根
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3211 题目大意: 思路: 由于数据范围只有1e9,一个数字x开根号次数超过logx之后 ...
- 报错 Filtered offsite request
用scrapy框架迭代爬取时报错 scrapy日志: 在 setting.py 文件中 设置 日志 记录等级 LOG_LEVEL= 'DEBUG' LOG_FILE ='log.txt' 观察 scr ...