vue.js实现的幻灯片功能示例


Posted in Javascript onJanuary 18, 2019

本文实例讲述了vue.js实现的幻灯片功能。分享给大家供大家参考,具体如下:

1、在父组件中

<slide-show :slides="slides"></slide-show>
import SlideShow from '@/components/SlideShow'
export default {
 components: {
  SlideShow,
 },

2、在slideshow.vue中

<template>
  <div class="slide-show" @mouseover="clearInv" @mouseout="runInv">  // 当鼠标移入的时候清除,移出的时候
    <div class="slide-img">
      <a href="slides[nowIndex].href" rel="external nofollow" >
      <transition name="slide-trans">  // 使用动画
         <img v-if="isShow" :src="slides[nowIndex].src">
        </transition>
        <transition name="slide-trans-old">
         <img v-if="!isShow" :src="slides[nowIndex].src">
        </transition>
      </a>
    </div>
    <h2>{{ slides[nowIndex].title }}</h2>
    <ul class="slide-pages">
      <li @click="goto(prevIndex)"><</li>
      <li v-for="(item, index) in slides" @click="goto(index)">
        <a :class="{ on: index === nowIndex}">
          {{ index + 1 }}
        </a>
      </li>
      <li @click="goto(nextIndex)">></li>
    </ul>
  </div>
</template>
<script>
  export default {
    props: {
      slides: {  // 获取父组件的属性
        type: Array,
        default: []
      },
      inv: {
        type: Number,
        default: 1000
      }
    },
    data () {
      return {
        nowIndex: 0,
        isShow: true
      }
    },
    computed: {
      prevIndex () {  // 使用计算属性,
        if (this.nowIndex === 0) {
          return this.slides.length - 1
        } else {
          return this.nowIndex - 1
        }
      },
      nextIndex () {
        if (this.nowIndex === this.slides.length - 1) {
          return 0
        } else {
          return this.nowIndex + 1
        }
      }
    },
    methods: {
      goto (index) {
        this.isShow = false,
        setTimeout(() => {       // 过10毫秒后,
          this.isShow = true,
          this.nowIndex = index
        }, 10)
      },
      runInv () {         // 设置定时器
        this.timer = setInterval(() => {
          this.goto(this.nextIndex)
        }, this.inv)
      },
      clearInv () {
        clearInterval(this.timer)
      }
    },
    mounted () {     // 加载完后执行
      this.runInv()
    }
  }
</script>
<style scoped>
.slide-trans-enter-active {
 transition: all .5s;
}
.slide-trans-enter {
 transform: translateX(900px);
}
.slide-trans-old-leave-active {
 transition: all .5s;
 transform: translateX(-900px);
}
.slide-show {
 position: relative;
 margin: 15px 15px 15px 0;
 width: 900px;
 height: 500px;
 overflow: hidden;
}
.slide-show h2 {
 position: absolute;
 width: 100%;
 height: 100%;
 color: #fff;
 background: #000;
 opacity: .5;
 bottom: 0;
 height: 30px;
 text-align: left;
 padding-left: 15px;
}
.slide-img {
 width: 100%;
}
.slide-img img {
 width: 100%;
 position: absolute;
 top: 0;
}
.slide-pages {
 position: absolute;
 bottom: 10px;
 right: 15px;
}
.slide-pages li {
 display: inline-block;
 padding: 0 10px;
 cursor: pointer;
 color: #fff;
}
.slide-pages li .on {
 text-decoration: underline;
}
</style>

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JS类中定义原型方法的两种实现的区别
Mar 08 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
Jan 13 Javascript
jquery中animate动画积累的解决方法
Oct 05 Javascript
node.js中的fs.createWriteStream方法使用说明
Dec 17 Javascript
js实现浏览本地文件并显示扩展名的方法
Aug 17 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
Aug 01 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
Jan 24 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
jQuery实现简单日历效果
Jul 05 jQuery
vue ssr 实现方式(学习笔记)
Jan 18 #Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 #Javascript
jquery的$().each和$.each的区别
Jan 18 #jQuery
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 #Javascript
jquery层次选择器的介绍
Jan 18 #jQuery
js实现图片放大并跟随鼠标移动特效
Jan 18 #Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
Jan 18 #Javascript
You might like
php四种基础算法代码实例
2013/10/29 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
php实现数字补零的方法总结
2018/09/12 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
vue实现购物车的监听
2020/04/20 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
详细解读Python中的__init__()方法
2015/05/02 Python
Python中防止sql注入的方法详解
2017/02/25 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
自我评价范文
2013/12/22 职场文书
中学门卫岗位职责
2013/12/26 职场文书
爱情检讨书大全
2014/01/21 职场文书
材料会计岗位职责
2014/03/06 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
赡养老人协议书
2014/04/21 职场文书
运动会广播稿300字
2015/08/19 职场文书