咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

示例简介

本实例介绍利用Vue实现幻灯片组件,可设置幻灯片不同图片、图片点击跳转地址和切换时间等;

最终效果:

实现过程

一、子组件代码如下(slide.vue),原理分析:

1、切换幻灯片时候,使用两个transition(使用vue的动画效果),一个左移动并消失(slide-trans-old),另一个左移动并显示(slide-trans,即点击要显示的幻灯片);

2、点击切换函数toggleSlide:

2.1 每次点击数字,左移动并消失当前幻灯片(isShow = false),同时显示点击数字的幻灯片(nowIndex = index);

2.2 每次点击左右箭头,由于使用了计算属性(computed),点击左箭头传参prevIndex,所以会切换到当前上一个幻灯片;而点击右箭头传参nextIndex,所以会切换到当前下一个幻灯片;

2.3 自动切换幻灯片函数autoToggleSlide,每次都会根据设置的定时器时间(slideTime)调用函数toggleSlide;

3、鼠标移到幻灯片上面(mouseover),会停止自动切换(clearInv);移开则重新开始自动切换(autoToggleSlide)。

<style lang="less" scoped=""> .slide-box { position: relative; width: 600px; height: 342px; overflow: hidden; .slide { width: 100%; height: 100%; .arrows { position: absolute; top: 50%; transform: translateY(-50%); img { width: 50px; opacity: 0.8; cursor: pointer; } &.right { right: 0; img { transform: rotateZ(180deg); } } } .slide-link { display: block; width: 100%; height: 100%; } .slide-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; } .slide-mes { position: absolute; bottom: 0; width: 100%; background-color: #000; color: #fff; opacity: 0.5; color: #fff; padding: 8px 15px; box-sizing: border-box; font-size: 12px; display: flex; .slide-title { flex: 1; } .slide-number { cursor: pointer; display: inline-block; width: 30px; text-align: center; &.active { font-size: 16px; text-decoration: underline; } } } } } /* 动画效果 */ .slide-trans-enter-active { transition: all .5s; } .slide-trans-enter { transform: translateX(600px); } .slide-trans-old-leave-active { transition: all .5s; transform: translateX(-600px); } </style>

二、父组件代码如下(slidePage.vue),原理分析:

主要用来传参(slideList和slideTime)给子组件,slideList是幻灯片显示的数据,slideTime是幻灯片切换的时间。

<style lang="less" scoped=""> </style>