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


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 相关文章推荐
js加解密 脚本解密
Feb 22 Javascript
js遍历td tr等html元素
Dec 13 Javascript
批量实现面向对象的实例代码
Jul 01 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
JavaScript阻止回车提交表单的方法
Dec 30 Javascript
vue模板语法-插值详解
Mar 06 Javascript
微信小程序Redux绑定实例详解
Jun 07 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
微信小程序解析富文本过程详解
Jul 13 Javascript
详细分析React 表单与事件
Jul 08 Javascript
uni-app实现获取验证码倒计时功能
Nov 01 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
德劲1104的电路分析与改良
2021/03/01 无线电
基于PHP与XML的PDF文档生成技术
2006/10/09 PHP
PHP脚本的10个技巧(5)
2006/10/09 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
php中curl使用指南
2015/02/05 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
深入研究React中setState源码
2017/11/17 Javascript
JS 中document.write()的用法和清空的原因浅析
2017/12/04 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
python复制与引用用法分析
2015/04/08 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
初三学生个人自我评定
2014/04/06 职场文书
搞笑的获奖感言
2014/08/16 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
社区党务工作总结2015
2015/05/19 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
Golang 字符串的常见操作
2022/04/19 Golang
Python何绘制带有背景色块的折线图
2022/04/23 Python
Python中requests库的用法详解
2022/06/05 Python