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


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 相关文章推荐
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
使用jquery修改表单的提交地址基本思路
Jun 04 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
详解Bootstrap按钮
Jan 04 Javascript
解决Vue编译时写在style中的路径问题
Sep 21 Javascript
基于 D3.js 绘制动态进度条的实例详解
Feb 26 Javascript
又拍云 Node.js 实现文件上传、删除功能
Oct 28 Javascript
JavaScript剩余操作符Rest Operator详解
Jul 20 Javascript
在vue-cli中引入lodash.js并使用详解
Nov 13 Javascript
JS数组方法slice()用法实例分析
Jan 18 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框架的性能
2008/01/10 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
javascript 禁止复制网页
2009/06/11 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
浅谈javascript的调试
2015/01/28 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
有个性的自我评价范文
2013/11/15 职场文书
学习标兵获奖感言
2014/02/20 职场文书
关于环保的建议书
2014/05/12 职场文书
测绘工程专业求职信
2014/07/15 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
银行委托书范本
2014/09/28 职场文书
2015年财政局工作总结
2015/05/21 职场文书
初中政教处工作总结
2015/08/12 职场文书