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


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网页图片按比例自适应缩放实现方法
Jan 15 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
全面解析Bootstrap手风琴效果
Apr 17 Javascript
javascript实现在网页中运行本地程序的方法
Feb 03 Javascript
jquery中validate与form插件提交的方式小结
Mar 26 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
vue使用swiper.js重叠轮播组建样式
Nov 14 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将任何格式视频转为flv的代码
2009/09/03 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
python实现图片处理和特征提取详解
2017/11/13 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
教育局长自荐信范文
2013/12/22 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
小平小道观后感
2015/06/09 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
Win11查看设备管理器
2022/04/19 数码科技