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 相关文章推荐
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
JavaScript实现的in_array函数
Aug 27 Javascript
JS控制表单提交的方法
Jul 09 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
js变形金刚文字特效代码分享
Aug 20 Javascript
解析浏览器端的AJAX缓存机制
Jun 21 Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 Javascript
layui弹出层效果实现代码
May 19 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 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小偷的核心程序
2007/04/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
php Undefined index的问题
2009/06/01 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
重命名批处理python脚本
2013/04/05 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
python实现名片管理器的示例代码
2019/12/17 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
广州某公司软件工程师面试题
2014/12/22 面试题
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js