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 相关文章推荐
二级域名转向类
Nov 09 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
Jan 15 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
触屏中的JavaScript事件分析
Feb 06 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
html5+javascript实现简单上传的注意细节
Apr 18 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
Feb 02 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
解决webpack多页面内存溢出的方法示例
Oct 08 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
Dec 25 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登陆页的密码处理方式分享
2013/10/14 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
用于table内容排序
2006/07/21 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
python中的编码知识整理汇总
2016/01/26 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Numpy数组的广播机制的实现
2020/11/03 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
Hotels.com印度:酒店预订
2019/05/11 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
团拜会策划方案
2014/06/07 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
高中历史教学反思
2016/02/19 职场文书
导游词之日月潭
2019/11/05 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers