微信小程序实现文字滚动
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>
2.wxss
.container {
background-color: #ccc;
height: 150rpx;
margin: 20rpx 20rpx 20rpx 20rpx;
overflow: hidden;
}
.txt-light {
color: #acadbe;
}
3.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) * 2000;
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)
},
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);
})
}
})
效果: