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


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实现的页面关键字密度查询代码
Dec 27 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
Aug 17 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
Apr 19 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
JavaScript笔记之数据属性和存储器属性
Mar 31 Javascript
AngularJS表达式讲解及示例代码
Aug 16 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
Sep 09 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
JS使用H5实现图片预览功能
Sep 30 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
五句话帮你轻松搞定js原型链
Dec 09 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 程式大小
2006/12/06 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
javaScript语法总结
2016/11/25 Javascript
JS常用知识点整理
2017/01/21 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
Django中使用locals()函数的技巧
2015/07/16 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python实现简单http服务器功能
2018/09/17 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
对python中各个response的使用说明
2020/03/28 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
当当网软件测试笔试题
2015/11/24 面试题
执行总经理岗位职责
2014/02/03 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
大学生演讲稿
2014/04/25 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
学雷锋日活动总结
2015/02/06 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
家装电话营销开场白
2015/05/29 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书