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


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对象创建及继承原理实例解剖
Feb 28 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
Jan 08 Javascript
css结合js制作下拉菜单示例代码
Feb 27 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
JavaScript原生对象常用方法总结(推荐)
May 13 Javascript
JS实现控制文本框的内容
Jul 10 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
jquery+css实现下拉列表功能
Sep 03 jQuery
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
Mar 06 Javascript
element ui 表格动态列显示空白bug 修复方法
Sep 04 Javascript
JavaScript遍历数组和对象的元素简单操作示例
Jul 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版(1)
2006/10/09 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
公司财务工作总结的自我评价
2013/11/23 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
高中社区服务活动报告
2015/02/05 职场文书
幼师辞职信范文
2015/02/27 职场文书
学校捐书活动总结
2015/05/08 职场文书
故意伤害辩护词
2015/05/21 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang