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


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 相关文章推荐
收集json解析的四种方法分享
Jan 17 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
js实现touch移动触屏滑动事件
Apr 17 Javascript
js实现横向伸展开的二级导航菜单代码
Aug 28 Javascript
Javascript技术栈中的四种依赖注入小结
Feb 27 Javascript
jQuery简单实现tab选项卡切换效果
Jun 20 Javascript
工厂模式在JS中的实践
Jan 18 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
JavaScript基础心法 数据类型
Mar 05 Javascript
webpack开发环境和生产环境的深入理解
Nov 08 Javascript
微信小程序实现简单评论功能
Nov 28 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 图片上传类代码
2009/07/17 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
python自动化测试实例解析
2014/09/28 Python
Python脚本实现格式化css文件
2015/04/08 Python
使用Python绘制图表大全总结
2017/02/11 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
python中format()函数的简单使用教程
2018/03/14 Python
学生信息管理系统python版
2018/10/17 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Python argparse模块应用实例解析
2019/11/15 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
python统计文章中单词出现次数实例
2020/02/27 Python
python安装sklearn模块的方法详解
2020/11/28 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
上海期货面试题
2014/01/31 面试题
公司节能减排倡议书
2014/05/14 职场文书
单位授权委托书范文
2014/08/02 职场文书
安全教育培训制度
2015/08/06 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android