一、数据准备

在页面中的幻灯片一般都会作为一个组件,由父组件将幻灯片组件需要的数据传入,数据slides如下:

slides: [{src: require('../assets/slideShow/pic1.jpg'),title: 'xxx1',href: 'detail/analysis'},{src: require('../assets/slideShow/pic2.jpg'),title: 'xxx2',href: 'detail/count'},{src: require('../assets/slideShow/pic3.jpg'),title: 'xxx3',href: 'http://xxx.xxx.com'},{src: require('../assets/slideShow/pic4.jpg'),title: 'xxx4',href: 'detail/forecast'}
],

二、幻灯片的点击切换功能

组件内部需要一个data,nowIndex为当前正在显示的幻灯片的index,也是slides数组的下标。

data() {return {nowIndex: 0}
}

页面的html为

<div class="slide-show"><div class="slide-img"><a :href="slide[nowIndex].href"><img :src="slides[nowIndex].src"></a></div><h2>{{slides[nowIndex].title}}</h2><ul class="slide-pages"><li @click="goto(pervIndex)">&lt;</li><li v-for="(item, index) in slides" @click="goto(index)"><a :class="{on: index === nowIndex}">{{index + 1}}</a></li><li @click="nextIndex">&gt;</li></ul>
</div>

这里我们定义了一个方法,goto接收一个参数index,跳转到指定页数

methods: {goto(index) {this.nowIndex = index;}
}

在点击前一页和后一页的时候我们用到了一个nextIndex和prevIndex,这两个变量我们定义在计算属性里

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;}}
}

样式如下:

.slide-show {position: relative;width: 900px;height: 350px;margin: 15px 15px 15px 0;overflow: hidden;}.slide-img {width: 100%;}.slide-img img {width: 100%;position: absolute;top:0;}.slide-show h2 {position: absolute;bottom: 0;color: #fff;background-color: #000;opacity: 0.5;text-align: left;width: 100%;;height: 30px;line-height: 30px;padding-left: 15px;}.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;}

三、自动播放

自动播放我们使用的方法是setInterval,为了让组件更加灵活,自动播放间隔的时间可以由父组件传入,inv为Number类型的props。
当鼠标移入时触发clearInv,鼠标移出时触发runInv

methods: {runInv() {this.invId = setInterval(() => {this.goto(this.nextIndex);}, this.inv);}clearInv() {clearInterval(this.invId);}
},
mounted() {this.runInv();
}

四、动画效果

动画效果就是在切换图片的时候,前一张离开,后一张进来,会有一个时刻两张图片同时存在。使用的是vue的transition.
组件中需要加入一个新的data,isShow为true时新的图片显示

data() {return {nowIndex: 0,isShow: false}
}

更改html显示图片的部分

<transiton 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>

第一个transition包含的为新要显示的图片,第二个transition包含的为将要消失的旧图片。
修改goto方法,在10ms后更改nowInex和isShow,这样在两个transition中就是不同的图片了

goto(index) {this.isShow = false;setTimeout(() => {this.isShow = true;this.nowIndex = index;})
}

在样式中加入

.slide-trans-enter-active {transition: all .5s;}.slide-trans-enter {transform: translateX(900px);}.slide-trans-old-leave-active {transition: all .5s;transform: translateX(-900px);}

使用Vue制作幻灯片相关推荐

  1. vue制作幻灯片-左右移动

    组件中: <template> <div class="slide-show" @mouseover="clearInv" @mouseout ...

  2. 用Beamer制作幻灯片(卷三 动画篇)

    在前面的两个章节中主要讲解的是怎么制作幻灯片的大体框架,要使得幻灯片更吸引眼球我们就还需要为其添加一些动画. 1.覆盖 覆盖是最为基本的一种幻灯片效果.严格地说,它甚至不是"动态" ...

  3. 用Beamer制作幻灯片(卷二 色彩篇)

    在用Beamer类制作幻灯片卷一里讲解了怎么使用Latex的简单的类来制作幻灯片,只是给了基本的怎么制作幻灯片的一个大体框架.但是一个很好的幻灯片远远不止这些功能. beamer的功能还有很多.今天要 ...

  4. 如何用计算机完成一片文稿制作,怎样在家用电脑上制作幻灯片?

    利用PowerPoint 2000轻松制作课件 多媒体课件已经越来越广泛地应用在现代化教育中,许多教师可能觉得课件制作的难度比较高.其实PowerPoint 2000是一个很方便的课件制作软件,方便大 ...

  5. flask 检测post是否为空_用Flask和Vue制作一个单页应用(五)

    使用POST向后台发送数据 Flask app修改 可以直接使用现有的路由处理函数来接收前端发来的数据,server/app.py中的all_res()修改如下: @app.route('/resou ...

  6. Pandoc中使用Reveal-js制作幻灯片

    工具:Typora (markdown编辑器) + Pandoc + reveal.js 如果需要使用 pandoc 命令,则需将 pandoc 添加到 path 环境变量中 Pandoc pando ...

  7. 怎样用计算机做ppt,怎样在家用电脑上制作幻灯片?

    利用PowerPoint 2000轻松制作课件 多媒体课件已经越来越广泛地应用在现代化教育中,许多教师可能觉得课件制作的难度比较高.其实PowerPoint 2000是一个很方便的课件制作软件,方便大 ...

  8. 我的计算机制作幻灯片在哪,电脑ppt制作软件,电脑里制作PPT(幻灯片)的软件在哪?...

    电脑里制作PPT(幻灯片)的软件在哪? 电脑里制作PPT(幻灯片)的软件需要自行安装,如果已经安装可以在开始选项的搜索栏中搜索PowerPoint即可找到该软件. 找到并打开PowerPoint幻灯片 ...

  9. 移动端vue实现部门结构功能_基于Vue制作组织架构树组件

    编程之家收集整理的这篇文章主要介绍了基于Vue制作组织架构树组件,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 由于公司业务需求,需要开发一个展示组织架构的树组件(公司的项目是基于Vu ...

  10. WordpressCMS主题开发03-如何制作幻灯片和tab式新闻框

    这一讲中,我们将学习:如何制作幻灯片和tab式新闻框 幻灯片很容易理解,tab式新闻框指的是这块区域: tab新闻框 - WordpressCMS主题开发03-如何制作幻灯片和tab式新闻框 清空图片 ...

最新文章

  1. C++ __gnu_pbds(平板电视)超详细教程(C++内置的平衡树,字典树,hash)
  2. C语言之父,UNIX之父丹尼斯·里奇去世 享年70岁
  3. 基于依存句法分析的关键短语抽取算法实战
  4. SQL_MODE设置
  5. 哈希表-map(对于python来说是字典)
  6. webview 本地 html空白,WKWebView加载本地html遇到的坑与解决办法
  7. plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘not found
  8. 企业Linux安全机制遭遇信任危机 SELinux成骇客帮凶?
  9. wps linux 字体_WPS Office:Linux 上的 Microsoft Office 的免费替代品 | Linux 中国
  10. 主板检测卡c5_电脑主板检测卡的代码是什么意思_电脑主板故障诊断检测卡代码汇总(5)_飞翔教程...
  11. Iphone8如何投屏到电脑 苹果手机投屏到电脑
  12. lisp成套电气设计_针对电气成套行业的专业设计仿真软件
  13. python 苹果李子橙_分享|苹果和它千万不能放在一起!因为它们会……
  14. Python中过滤列表中全部奇数
  15. 浅析微信支付:公众平台卡券功能开通、HTML5线上发券(JS-SDK接口)、查看卡券详情
  16. 水果之王之猕猴桃-系列五(孕期可以吃猕猴桃吗?)
  17. 网络安全-使用PGP实现电子邮件安全
  18. 开放网络基金会(ONF)发布开放式创新渠道 开放网络迎来变革
  19. Win11自带微软浏览器无法翻译
  20. java实现空格替换

热门文章

  1. 一份Java面试宝典「Java核心知识点」囊括JVM,Spring等29个技术
  2. 头歌—练习-Java循环综合练习四之日历打印
  3. CSS卡贴悬停展开效果
  4. 127.0.0.1 已拒绝连接
  5. Python代码大全,海量代码任你下载
  6. 拥抱变化——从Atlas到ASP.NET AJAX
  7. 2024 递归Eason
  8. android小型app创意,创意无止境!17款让人脑洞大开的APP推荐
  9. C#加密和解密PDF文件
  10. 网络基础之交换机原理及4大功能