微信小程序实现跑马灯效果

  

网上很多实现跑马灯的文章,但是很多发现都是不行的,之一就是文字宽度居然是通过字符数*文字大小计算,明显是不准确的计算方式。我看了下,发现可以通过计算控件宽度来精确计算文字宽度,这样实现的跑马灯是比较完善的。

  

效果如下:

  

微信小程序实现跑马灯效果

  

实现代码如下:

  

wxml:

        & lt;视图类=皉ollCon”比;   & lt;视图类=昂凶印痹?   & lt;视图类='文本'style='左:{{offsetLeft}} px的祝辞,{{文本}}& lt;/view>   & lt;/view>   & lt;/view>      

wxs:

        .rollCon {   位置:固定;   上图:0;   左:0;   宽度:100%;   高度:60 rpx;   z - index: 100;   背景:# fde8c7;   字体大小:20 rpx;   行高:60 rpx;   }      .box {   宽度:100%;   位置:相对;   }      。text {   空白:nowrap;}   位置:绝对的;   上图:0;   字体大小:24 px;   }   之前      js:

        页面({/* *   *页面的初始数据   */数据:{   间隔:空,   文本:“995年JavaScript诞生时如早一年”,   速度:1.2//滚动速度//间隔:20日时间间隔//尺寸:24日字体大小px   长度:0,//字体宽度//offsetLeft: 0   windowWidth: 0,   },//根据viewId查询视图的宽度   queryViewWidth:函数(viewId) {//创建节点选择器   返回新的承诺(函数(解决){   var查询=wx.createSelectorQuery ();   var=这个;   query.select ('。' + viewId) .boundingClientRect(函数(矩形){   解决(rect.width);   }) .exec ();   });      },//停止跑马灯   stopMarquee:函数(){   var=这个;//清除旧的定时器   如果(。数据!=null) {   clearInterval (that.interval);   }   },//执行跑马灯动画   excuseAnimation:函数(){   var=这个;   如果(that.data。长度比;that.data.windowWidth) {//设置循环   让间隔=setInterval(函数(){   如果(that.data。offsetLeft & lt;=0) {   如果(that.data。offsetLeft祝辞=-that.data.length) {   that.setData ({   offsetLeft: that.data。offsetLeft that.data.pace,   })   其他}{   that.setData ({   offsetLeft: that.data.windowWidth,   })   }   其他}{   that.setData ({   offsetLeft: that.data。offsetLeft that.data.pace,   })   }   },that.data.interval);   }   },//开始跑马灯   startMarquee:函数(){   var=这个;   that.stopMarquee ();//初始化数据   that.data。.windowWidth windowWidth=wx.getSystemInfoSync ();   that.queryViewWidth('文本')(函数(解决){   that.data。长度=解决;   console.log (that.data。+ " + that.data.windowWidth长度);   that.excuseAnimation ();   });   }   })   之前      

源码下载:跑马灯效果

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

微信小程序实现跑马灯效果