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


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系列之数据类型 字符串
Jun 08 Javascript
Javascript 中的 call 和 apply使用介绍
Feb 22 Javascript
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
在新窗口打开超链接的方法小结
Apr 14 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
Apr 04 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
详解react-router4 异步加载路由两种方法
Sep 12 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 Javascript
详细介绍解决vue和jsp结合的方法
Feb 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
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php 分库分表hash算法
2009/11/12 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php模板原理讲解
2013/11/13 PHP
使用php清除bom示例
2014/03/03 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
jquery 指南/入门基础
2007/11/30 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
JS判断数组那点事
2017/10/10 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Unicode和Python的中文处理
2017/03/19 Python
OpenCV实现人脸识别
2017/04/07 Python
如何理解Python中的变量
2020/06/01 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
如何用python处理excel表格
2020/06/09 Python
Python logging模块handlers用法详解
2020/08/14 Python
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
应届生学校辅导员求职信
2013/11/07 职场文书
高三政治教学反思
2014/02/06 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
高三生物教学反思
2016/02/22 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP