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 相关文章推荐
瀑布流布局并自动加载实现代码
Mar 12 Javascript
网页整体变灰白色(兼容各浏览器)实例
Apr 21 Javascript
js字符串截取函数substr substring slice使用对比
Nov 27 Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 Javascript
javascript中Object使用详解
Jan 26 Javascript
js定时器+简单的动画效果实例
Nov 10 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 Javascript
发布Angular应用至生产环境的方法
Dec 10 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 10 Javascript
layer弹出层显示在top顶层的方法
Sep 11 Javascript
用Angular实现一个扫雷的游戏示例
May 15 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
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
js 省地市级联选择
2010/02/07 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
浅谈Django REST Framework限速
2017/12/12 Python
django文档学习之applications使用详解
2018/01/29 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Django实现基于类的分页功能
2019/10/31 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
经济与贸易专业应届生求职信
2013/11/19 职场文书
企业演讲稿范文
2013/12/28 职场文书
追悼会上的答谢词
2014/01/10 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python