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图像处理—亮度对比度应用案例
Jan 03 Javascript
用js设置下拉框为只读的小技巧
Apr 10 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
JavaScript中的null和undefined区别介绍
Jan 01 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
jQuery查找节点并获取节点属性的方法
Sep 09 Javascript
bootstrap css样式之表单
Jan 19 Javascript
基于jQuery实现咖啡订单管理简单应用
Feb 10 Javascript
canvas实现刮刮卡效果
Mar 14 Javascript
w3c编程挑战_初级脚本算法实战篇
Jun 23 Javascript
详解ES6中的三种异步解决方案
Jun 28 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 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学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP 微信支付类 demo
2015/11/30 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
详解Python 循环嵌套
2020/07/09 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
物理教师自荐信范文
2013/12/28 职场文书
学生期末评语大全
2014/04/30 职场文书
物业管理工作方案
2014/05/10 职场文书
生活部的活动方案
2014/08/19 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
2016公司新年问候语
2015/11/11 职场文书
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫