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


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中根据字数截取字符串,不能截断url
Jan 12 Javascript
解析javascript系统错误:-1072896658的解决办法
Jul 08 Javascript
JQuery对id中含有特殊字符的转义处理示例
Sep 06 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
JQuery显示隐藏页面元素的方法总结
Apr 16 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
layui清除radio的选中状态实例
Nov 14 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
Apr 25 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 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 日志缩略名的创建函数代码
2010/05/26 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
javascript动态加载三
2012/08/22 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
numpy数组广播的机制
2019/07/12 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
公证委托书模板
2014/04/03 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
员工生日会策划方案
2014/06/14 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
信用卡工资证明范本
2015/06/19 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
Python 用户输入和while循环的操作
2021/05/23 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
PyTorch device与cuda.device用法
2022/04/03 Python