微信小程序实现自上而下字幕滚动


Posted in Javascript onJuly 14, 2018

本文实例为大家分享了微信小程序实现字幕滚动的具体代码,供大家参考,具体内容如下

微信小程序实现自上而下字幕滚动

需求:

实现框内的文字自下而上的自动循环滚动。

解决方案:

第一种方法:

经查询,最一开始实现字幕滚动是使用的微信小程序的swiper组件,后来发现,使用swiper组件实现的效果类似于轮播图,不符合需求。

<swiper class="swiper_container" vertical="true" autoplay="true" circular="true" interval="2000">
 <view class='list'>
 <view wx:for="{{List}}" wx:key="index">
 <swiper-item>
 <text class='txt-light'>{{item.checkTime}}</text> {{item.content}}
 </swiper-item>
 </view>
 </view>
</swiper>

第二种方法:

使用微信小程序的动画来来实现字幕滚动。

思路:

1.当list底部到container框的顶部时,即,内容全部走出了框外。结束字幕滚动,重新开始下一轮的滚动。
2.计算container框的高度,list的高度。一个框中的内容显示时长为 1500(暂定),通过list的高度除以container框的高度来判断显示时长(求整数并加1(+1是为了显示最后一个空白框))。

实现:

wxml

<view class="container">
 <view class='list' animation="{{animationData}}">
 <view>
 <text class="txt-light">09:08</text> 很多人的一生,基本都是自己跟别人较劲,比如别人对自己的期待,比如把别人看得太重把自己看得太轻。其实一个人最应该考虑的问题是,自己如何与自己相处,比如人去楼空的时候如何照顾好自己的孤独,比如夜深人静的时候如何跟心灵沟通。自己跟自己能和谐共处,自己跟别人就能相安无事。
 </view>
 <view>
 <text class="txt-light">19:08</text> 平和是待人处事的一种态度,也是做人酌一种美德。平和既是一种修养,又是一种工作方法。平和的人,从不被忙碌所萦绕,闲时吃紧,忙里悠闲。待人不严,教人勿高。宽严得宜,分寸得体。身心自在,能享受生活之乐趣。平和的人生,是和谐的人生,健康的人生。
 </view>
 </view>
</view>

wxss

.container {
 background-color: #ccc;
 height:150rpx;
 margin: 20rpx 20rpx 20rpx 20rpx; 
 overflow:auto;
}
.txt-light {
 color:#acadbe;
}

js

Page({
 
 /**
 * 页面的初始数据
 */
 data: {
 
 },
 
 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {
 
 },
 
 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function () {
 
 },
 
 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function () {
 // this.util();
 this.getHeight();
 },
 util: function (obj) {
 console.log(obj);
 console.log(-obj.list);
 var continueTime = (parseInt(obj.list / obj.container) + 1) * 1500;
 var setIntervalTime = 50 + continueTime;
 
 var animation = wx.createAnimation({
 duration: 200, //动画时长
 timingFunction: "linear", //线性
 delay: 0 //0则不延迟
 });
 this.animation = animation;
 animation.translateY(obj.container).step({ duration: 50, timingFunction: 'step-start' }).translateY(-obj.list).step({ duration: continueTime });
 this.setData({
 animationData: animation.export()
 })
 setInterval(() => {
 animation.translateY(obj.container).step({ duration: 50, timingFunction: 'step-start' }).translateY(-obj.list).step({ duration: continueTime });
 this.setData({
 animationData: animation.export()
 })
 }, setIntervalTime)
 // setInterval(() => {
 // animation.translateY(50).step({ duration: 50, timingFunction: 'step-start' }).translateY(-250).step({ duration: 5000 });
 // this.setData({
 // animationData: animation.export()
 // })
 // }, 6000)
 },
 getHeight() {
 var obj = new Object();
 //创建节点选择器
 var query = wx.createSelectorQuery();
 query.select('.container').boundingClientRect()
 query.select('.list').boundingClientRect()
 query.exec((res) => {
 obj.container = res[0].height; // 框的height
 obj.list = res[1].height; // list的height
 // return obj;
 this.util(obj);
 })
 }
})

20180712更新:

1.框设置为禁止滑动,即

.container {
 overflow: hidden;
}

防止手动滑动动画,从而影响setinterval的执行。

2.设置setinterval的执行时间>动画执行时间,防止setinterval执行卡顿。

另外一种实现方式:scroll-view实现字幕滚动

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
完整显示当前日期和时间的JS代码
Sep 17 Javascript
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
JavaScript原型链示例分享
Jan 26 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
jquery实现拖动效果
Aug 10 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
Aug 14 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 Javascript
微信小程序scroll-view实现字幕滚动
Jul 14 #Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 #Javascript
通过封装scroll.js 获取滚动条的值
Jul 13 #Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 #Javascript
Angular5.0 子组件通过service传递值给父组件的方法
Jul 13 #Javascript
vue实现组件之间传值功能示例
Jul 13 #Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 #Javascript
You might like
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
Python和php通信乱码问题解决方法
2014/04/15 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
利用python实现数据分析
2017/01/11 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
音乐幼师求职信
2014/07/09 职场文书
体育教师个人工作总结
2015/02/09 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技