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


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 相关文章推荐
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
Apr 02 Javascript
基于Layer+jQuery的自定义弹框
May 26 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
JS正则表达式封装与使用操作示例
May 15 Javascript
vue v-for 使用问题整理小结
Aug 04 Javascript
使用layer弹窗,制作编辑User信息页面的方法
Sep 27 Javascript
vue路由守卫,限制前端页面访问权限的例子
Nov 11 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 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
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
php session 写入数据库
2016/02/13 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
JS功能代码集锦
2016/05/04 Javascript
微信小程序入门教程
2016/11/18 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
Python实现Linux的find命令实例分享
2017/06/04 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
Python解析json代码实例解析
2019/11/25 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
收银员的岗位职责范本
2014/02/04 职场文书
党组织公开承诺书
2014/03/29 职场文书
工程承诺书怎么写
2014/05/24 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
婚庆公司计划书
2014/09/15 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
Python列表的索引与切片
2022/04/07 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server