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


Posted in Javascript onOctober 21, 2020

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

效果如下:

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

实现代码如下:

wxml:

<view class="rollCon">
 <view class='box'> 
 <view class='text'style='left:{{offsetLeft}}px' >{{text}}</view>
</view>
</view>

wxss:

.rollCon {
 position: fixed;
 top: 0;
 left: 0;
 width: 100%;
 height: 60rpx;
 z-index: 100;
 background: #fde8c7;
 font-size: 20rpx;
 line-height: 60rpx;
}

.box {
 width: 100%;
 position: relative;
}

.text {
 white-space: nowrap;
 position: absolute;
 top: 0;
 font-size: 24px;
}

js:

Page({

 /**
 * 页面的初始数据
 */
 data: {
 interval: null,
 text: '995年JavaScript诞生时如早一年',
 pace: 1.2, //滚动速度
 interval: 20, //时间间隔
 size: 24, //字体大小in px
 length: 0, //字体宽度
 offsetLeft: 0, //
 windowWidth: 0,
 },
 //根据viewId查询view的宽度
 queryViewWidth: function(viewId) {
 //创建节点选择器
 return new Promise(function(resolve) {
  var query = wx.createSelectorQuery();
  var that = this;
  query.select('.' + viewId).boundingClientRect(function(rect) {
  resolve(rect.width);
  }).exec();
 });

 },
 //停止跑马灯
 stopMarquee: function() {
 var that = this;
 //清除旧的定时器
 if (that.data != null) {
  clearInterval(that.interval);
 }
 },
 //执行跑马灯动画
 excuseAnimation: function() {
 var that = this;
 if (that.data.length > that.data.windowWidth) {
  //设置循环
  let interval = setInterval(function() {
  if (that.data.offsetLeft <= 0) {
   if (that.data.offsetLeft >= -that.data.length) {
   that.setData({
    offsetLeft: that.data.offsetLeft - that.data.pace,
   })
   } else {
   that.setData({
    offsetLeft: that.data.windowWidth,
   })
   }
  } else {
   that.setData({
   offsetLeft: that.data.offsetLeft - that.data.pace,
   })
  }
  }, that.data.interval);
 }
 },
 //开始跑马灯
 startMarquee: function() {
 var that = this;
 that.stopMarquee();
 //初始化数据
 that.data.windowWidth = wx.getSystemInfoSync().windowWidth;
 that.queryViewWidth('text').then(function(resolve) {
  that.data.length = resolve;
  console.log(that.data.length + "/" + that.data.windowWidth);
  that.excuseAnimation();
 });
 }
 })

源码下载:跑马灯效果

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

Javascript 相关文章推荐
JavaScript访问样式表代码
Oct 15 Javascript
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
JQuery入门基础小实例(1)
Sep 17 Javascript
表单验证正则表达式实例代码详解
Nov 09 Javascript
Jquery 垂直多级手风琴菜单附源码下载
Nov 17 Javascript
js实现将选中内容分享到新浪或腾讯微博
Dec 16 Javascript
你不知道的 javascript【推荐】
Jan 08 Javascript
JS身份证信息验证正则表达式
Jun 12 Javascript
在ABP框架中使用BootstrapTable组件的方法
Jul 31 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
react国际化react-intl的使用
May 06 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
Nov 09 #Javascript
vue.js自定义组件directives的实例代码
Nov 09 #Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 #Javascript
webpack 静态资源集中输出的方法示例
Nov 09 #Javascript
vue中如何去掉空格的方法实现
Nov 09 #Javascript
Vue press 支持图片放大功能的实例代码
Nov 09 #Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 #Javascript
You might like
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
Using the TextRange Object
2006/10/14 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
js随机生成一个验证码
2017/06/01 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
haskell实现多线程服务器实例代码
2013/11/26 Python
Python编程中的反模式实例分析
2014/12/08 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
营销主管自我评价怎么写
2013/09/19 职场文书
大学生写自荐信的技巧
2014/01/08 职场文书
怎样写离婚协议书
2014/09/10 职场文书
简单租房协议书
2014/10/21 职场文书
就业推荐表导师评语
2014/12/31 职场文书
瘦西湖导游词
2015/02/03 职场文书
党员进社区活动总结
2015/05/07 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书