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中继承的三种方式
Oct 16 Javascript
关于javascript中的typeof和instanceof介绍
Dec 04 Javascript
js怎么终止程序return不行换jfslk
May 30 Javascript
JavaScript基础知识学习笔记
Dec 02 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
Mar 17 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
vue实现验证码输入框组件
Dec 14 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
原生JS实现相邻月份日历
Oct 13 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 函数中使用static的说明
2012/06/01 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中自定义函数的教程
2015/04/27 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Python如何生成xml文件
2020/06/04 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
幼儿园国庆节活动方案
2014/02/01 职场文书
网管求职信
2014/03/03 职场文书
总经理任命书
2014/03/29 职场文书
探亲假请假条
2014/04/11 职场文书
餐饮投资计划书
2014/04/25 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
python用字节处理文件实例讲解
2021/04/13 Python