微信小程序实现文字跑马灯


Posted in Javascript onMay 26, 2020

前言

要实现跑马灯主要就是获得判断开始定界和结束定界, 1.9.3新增的wxml操作接口 就可以拿到节点长宽等属性,当然你也可以直接用 文字数量 * 文字大小(注意字体的单位px,rpx)。

效果图

短字

微信小程序实现文字跑马灯

长字

微信小程序实现文字跑马灯

wxml

<view class="content">
 <text class="every" decode="{{true}}" style="right:{{announZf}}{{announNum}}px">{{announ}}</text>
</view>

js

我这里用的是wepy写的,凑合着看吧

export default class ShopIndex extends wepy.page {

 config = {
 navigationBarTitleText : '首页',
 }

 data = {
 // 公告内容
 announ : '超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度超长度v',
 announNum : 0,
 announy : 280,
 announZf : '-'
 }

 onLoad() {
 
 let self = this;
 var query = wepy.createSelectorQuery();
 query.select('.content').boundingClientRect(ContentRes => {
  var query = wepy.createSelectorQuery();
  query.select('.every').boundingClientRect(TextRes => {

  //加上一百是因为防止在归零时出现闪烁的情况
  let maxContentWidth = ContentRes.width + 100,
  maxTextWidth = TextRes.width;
  //初始化
  self.announNum = TextRes.width
  self.$apply();

  //定时器
  setInterval(()=>{
   if(self.announZf == '-') {
   if(self.announNum <= 0) {
    self.announZf = ''
   } else {
    self.announNum -= 1
   }
   } else {
   if(self.announNum > (maxContentWidth)) {
    //归位
    self.announZf = '-'
    self.announNum = maxTextWidth
   } else {
    self.announNum += 1
   }
   } 
   self.$apply();  
  },5)
  }).exec();
 }).exec();

 }
 }

-----2018-12-24 ----

使用的时候需要注意 setInterval 的性能问题, 不用的时候或者不显示的时候将其停止,否则会像作者一样给自己挖坑。

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

Javascript 相关文章推荐
JS学习之一个简易的日历控件
Mar 24 Javascript
js中将字符串转换成json的三种方式
Jan 12 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
script不刷新页面的联动前后代码
Sep 18 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
Javascript的比较汇总
Jul 25 Javascript
巧用canvas
Jan 21 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
Jul 25 Javascript
JS监听组合按键思路及实现过程
Apr 17 Javascript
基于JavaScript canvas绘制贝塞尔曲线
Dec 25 #Javascript
基于js Canvas实现二次贝塞尔曲线
Dec 25 #Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 #Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 #Javascript
微信小程序开发问题之wx.previewImage
Dec 25 #Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 #Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 #Javascript
You might like
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php 分页函数multi() discuz
2009/06/21 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
js获取div高度的代码
2008/08/09 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
Python读大数据txt
2016/03/28 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
法学毕业生自荐信
2013/11/13 职场文书
办理房产过户的委托书
2014/09/14 职场文书
求职自我评价范文
2015/03/09 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
乒乓球比赛通知
2015/04/27 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书