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 相关文章推荐
jQuery温习篇 强大的JQuery选择器
Apr 24 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
Sep 02 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
Nov 09 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
JS实现超简单的汉字转拼音功能示例
Dec 22 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 Javascript
javascript实现移动端红包雨页面
Jun 23 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
低门槛开发iOS、Android、小程序应用的前端框架详解
Oct 16 Javascript
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
论建造顺序的重要性
2020/03/04 星际争霸
PHP学习之正则表达式
2011/04/17 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php中chdir()函数用法实例
2014/11/13 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
javascript add event remove event
2008/04/07 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
跟老齐学Python之数据类型总结
2014/09/24 Python
开始着手第一个Django项目
2015/07/15 Python
深入理解python函数递归和生成器
2016/06/06 Python
详解python中sort排序使用
2019/03/23 Python
python-numpy-指数分布实例详解
2019/12/07 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Python中如何引入第三方模块
2020/05/27 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
车辆安全检查制度
2014/01/12 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
员工拓展培训方案
2014/02/15 职场文书
六年级小学生评语
2014/12/26 职场文书
给老师的感谢信
2015/01/20 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python