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 相关文章推荐
写了一个layout,拖动条连贯,内容区可为iframe
Aug 19 Javascript
微信企业号开发之微信考勤百度地图定位
Sep 11 Javascript
JS实现向iframe中表单传值的方法
Mar 24 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
vue结合axios与后端进行ajax交互的方法
Jul 06 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
使用JS实现导航切换时高亮显示的示例讲解
Aug 22 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
Sep 25 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 Javascript
详解如何使用Node.js实现热重载页面
May 06 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
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
php的大小写敏感问题整理
2011/12/29 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
小摄影师教学反思
2014/04/27 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书