当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 微信小程序实现文字跑马灯

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

2019年06月01日  | 移动技术网IT编程  | 我要评论
前言 要实现跑马灯主要就是获得判断开始定界和结束定界, 1.9.3新增的wxml操作接口 就可以拿到节点长宽等属性,当然你也可以直接用 文字数量 * 文字大小(注意字

前言

要实现跑马灯主要就是获得判断开始定界和结束定界, 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 的性能问题, 不用的时候或者不显示的时候将其停止,否则会像作者一样给自己挖坑。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网