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


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 正则表达式相关应介绍
Nov 27 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
JQuery工具函数汇总
Jun 15 Javascript
JavaScript简单获取页面图片原始尺寸的方法
Jun 21 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
详解webpack 多入口配置
Jun 16 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
JAVA面试题 static关键字详解
Jul 16 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 21 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
深度解读vue-resize的具体用法
Jul 08 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
一个用于网络的工具函数库
2006/10/09 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
Javascript验证方法大全
2015/09/21 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
js运动事件函数详解
2016/10/21 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python iter()函数用法实例分析
2018/03/17 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python编写微信公众号首图思路详解
2019/12/13 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
python suds访问webservice服务实现
2020/06/26 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
在什么时候需要使用"常引用"
2015/12/31 面试题
测量实习生自我鉴定
2013/09/19 职场文书
个人委托书
2014/07/31 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书