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 相关文章推荐
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
Apr 12 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
Aug 30 Javascript
微信小程序视图template模板引用的实例详解
Sep 20 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
vue移动端的左右滑动事件详解
Jun 17 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 04 Javascript
vue通过接口直接下载java生成好的Excel表格案例
Oct 26 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分页函数
2006/07/08 PHP
PHP的FTP学习(四)
2006/10/09 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
深入PHP变量存储的详解
2013/06/13 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
js每次Title显示不同的名言
2008/09/25 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
python如何求解两数的最大公约数
2018/09/27 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
学生党员的自我评价范文
2014/03/01 职场文书
小学运动会口号
2014/06/07 职场文书
社团活动总结书
2014/06/27 职场文书
感恩教师节主题班会
2015/08/12 职场文书
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL
Java中的Kotlin 内部类原理
2022/06/16 Java/Android
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android