• marquee.json
{
  "component": true,
  "usingComponents": {}
}
  • marquee.wxml
<!--components/marquee.wxml-->
<view class=\'marquee_container\'>
  <view class=\'marquee_text\' style=\'{{ orientation }}:{{ marqueeDistance }}px;font-size: {{size}}px;\'>
    {{ text }}
  </view>
</view>
  • marquee.wxss
/* components/marquee.wxss */
.marquee_container {
  position: relative;  
  width: 100%;
}

.marquee_text {
  position: absolute;
  white-space: nowrap;
  top: 0;
}
  • marquee
// components/marquee.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    text: {
      type: String,
      value: \'ILoveEwei\'
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    marqueePace: 1,
    marqueeDistance: 0,
    size: 14,
    orientation: \'left\',
    interval: 20
  },

  /**
   * 组件的方法列表
   */
  methods: {
    _scrolling: function() {
      var _this = this;
      var timer = setInterval(()=> {
        if(-_this.data.marqueeDistance < _this.data.length) {
          _this.setData({
            marqueeDistance: _this.data.marqueeDistance - _this.data.marqueePace
          })
        } else {
          clearInterval(timer);
          _this.setData({
            marqueeDistance: _this.data.windowWidth
          });
          _this._scrolling();
        }
      },_this.data.interval);
    }
  },

  created: function() {
    var _this = this;
    var length = _this.data.text.length * _this.data.size;
    var windowWidth = wx.getSystemInfoSync().windowWidth
    _this.setData({
      length: length,
      windowWidth: windowWidth
    });
    _this._scrolling();
  }
})

以上就是我定义在components文件夹的组件,剩下就是引用组件

  • demo.json
{
  "usingComponents": {
    "marquee": "../../components/marquee"
  }
}
  • demo.wxml
<marquee text="我爱你我爱你我爱你"></marquee>  

 

 

 

转 : https://www.jianshu.com/p/0ff03e5e942e

 

版权声明:本文为fps2tao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fps2tao/p/11163938.html