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与Div对层定位和移动获得坐标的实现代码
Sep 08 Javascript
jQuery 联动日历实现代码
May 31 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
Apr 27 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
Oct 25 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
Jan 08 jQuery
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
vue 对axios get pust put delete封装的实例代码
Jan 05 Javascript
uni-app 自定义底部导航栏的实现
Dec 11 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 json_encode奇怪问题说明
2011/09/27 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
劳资人员岗位职责
2013/12/19 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
文案策划岗位职责
2015/02/11 职场文书
餐馆开业致辞
2015/08/01 职场文书
外出培训学习心得体会
2016/01/18 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
详解Go语言中Get/Post请求测试
2022/06/01 Golang