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


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 相关文章推荐
Javascript 判断 object 的特定类转载
Feb 01 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
jQuery each函数源码分析
May 25 Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 Javascript
jQuery学习笔记之入门
Dec 14 Javascript
Vue2路由动画效果的实现代码
Jul 10 Javascript
Vue2.0 http请求以及loading展示实例
Mar 06 Javascript
解决vue-cli + webpack 新建项目出错的问题
Mar 20 Javascript
vue.js内置组件之keep-alive组件使用
Jul 10 Javascript
vue+iview 兼容IE11浏览器的实现方法
Jan 07 Javascript
JavaScript闭包相关知识解析
Oct 19 Javascript
JavaScript 去重和重复次数统计
Mar 31 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php利用cookie实现自动登录的方法
2014/12/10 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
Angular value与ngValue区别详解
2019/11/27 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python计算时间差的方法
2015/05/20 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python动态文本进度条的实例代码
2020/01/22 Python
使用python实现飞机大战游戏
2020/03/23 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
制药工程专业个人求职自荐信
2014/01/25 职场文书
摄影展策划方案
2014/06/02 职场文书
乒乓球比赛通知
2015/04/27 职场文书