使用Vue制作幻灯片
一、数据准备
在页面中的幻灯片一般都会作为一个组件,由父组件将幻灯片组件需要的数据传入,数据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)"><</li><li v-for="(item, index) in slides" @click="goto(index)"><a :class="{on: index === nowIndex}">{{index + 1}}</a></li><li @click="nextIndex">></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制作幻灯片相关推荐
- vue制作幻灯片-左右移动
组件中: <template> <div class="slide-show" @mouseover="clearInv" @mouseout ...
- 用Beamer制作幻灯片(卷三 动画篇)
在前面的两个章节中主要讲解的是怎么制作幻灯片的大体框架,要使得幻灯片更吸引眼球我们就还需要为其添加一些动画. 1.覆盖 覆盖是最为基本的一种幻灯片效果.严格地说,它甚至不是"动态" ...
- 用Beamer制作幻灯片(卷二 色彩篇)
在用Beamer类制作幻灯片卷一里讲解了怎么使用Latex的简单的类来制作幻灯片,只是给了基本的怎么制作幻灯片的一个大体框架.但是一个很好的幻灯片远远不止这些功能. beamer的功能还有很多.今天要 ...
- 如何用计算机完成一片文稿制作,怎样在家用电脑上制作幻灯片?
利用PowerPoint 2000轻松制作课件 多媒体课件已经越来越广泛地应用在现代化教育中,许多教师可能觉得课件制作的难度比较高.其实PowerPoint 2000是一个很方便的课件制作软件,方便大 ...
- flask 检测post是否为空_用Flask和Vue制作一个单页应用(五)
使用POST向后台发送数据 Flask app修改 可以直接使用现有的路由处理函数来接收前端发来的数据,server/app.py中的all_res()修改如下: @app.route('/resou ...
- Pandoc中使用Reveal-js制作幻灯片
工具:Typora (markdown编辑器) + Pandoc + reveal.js 如果需要使用 pandoc 命令,则需将 pandoc 添加到 path 环境变量中 Pandoc pando ...
- 怎样用计算机做ppt,怎样在家用电脑上制作幻灯片?
利用PowerPoint 2000轻松制作课件 多媒体课件已经越来越广泛地应用在现代化教育中,许多教师可能觉得课件制作的难度比较高.其实PowerPoint 2000是一个很方便的课件制作软件,方便大 ...
- 我的计算机制作幻灯片在哪,电脑ppt制作软件,电脑里制作PPT(幻灯片)的软件在哪?...
电脑里制作PPT(幻灯片)的软件在哪? 电脑里制作PPT(幻灯片)的软件需要自行安装,如果已经安装可以在开始选项的搜索栏中搜索PowerPoint即可找到该软件. 找到并打开PowerPoint幻灯片 ...
- 移动端vue实现部门结构功能_基于Vue制作组织架构树组件
编程之家收集整理的这篇文章主要介绍了基于Vue制作组织架构树组件,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 由于公司业务需求,需要开发一个展示组织架构的树组件(公司的项目是基于Vu ...
- WordpressCMS主题开发03-如何制作幻灯片和tab式新闻框
这一讲中,我们将学习:如何制作幻灯片和tab式新闻框 幻灯片很容易理解,tab式新闻框指的是这块区域: tab新闻框 - WordpressCMS主题开发03-如何制作幻灯片和tab式新闻框 清空图片 ...
最新文章
- C++ __gnu_pbds(平板电视)超详细教程(C++内置的平衡树,字典树,hash)
- C语言之父,UNIX之父丹尼斯·里奇去世 享年70岁
- 基于依存句法分析的关键短语抽取算法实战
- SQL_MODE设置
- 哈希表-map(对于python来说是字典)
- webview 本地 html空白,WKWebView加载本地html遇到的坑与解决办法
- plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘not found
- 企业Linux安全机制遭遇信任危机 SELinux成骇客帮凶?
- wps linux 字体_WPS Office:Linux 上的 Microsoft Office 的免费替代品 | Linux 中国
- 主板检测卡c5_电脑主板检测卡的代码是什么意思_电脑主板故障诊断检测卡代码汇总(5)_飞翔教程...
- Iphone8如何投屏到电脑 苹果手机投屏到电脑
- lisp成套电气设计_针对电气成套行业的专业设计仿真软件
- python 苹果李子橙_分享|苹果和它千万不能放在一起!因为它们会……
- Python中过滤列表中全部奇数
- 浅析微信支付:公众平台卡券功能开通、HTML5线上发券(JS-SDK接口)、查看卡券详情
- 水果之王之猕猴桃-系列五(孕期可以吃猕猴桃吗?)
- 网络安全-使用PGP实现电子邮件安全
- 开放网络基金会(ONF)发布开放式创新渠道 开放网络迎来变革
- Win11自带微软浏览器无法翻译
- java实现空格替换