美文网首页
微信小程序实现文字从右向左无限滚动

微信小程序实现文字从右向左无限滚动

作者: xiesen | 来源:发表于2021-04-01 14:40 被阅读0次
    效果: image.png

    布局页面wxml

     <view class="inform-warp">
        <image class="inform" src='../images/stock/inform.png'></image>
        <scroll-view class="container">
          <view class="scrolltxt">
            <view class="marquee_box">
              <view class="marquee_text" style="transform: translateX(-{{marqueeDistance}}px)">
                <text>{{text}}</text>
                <text style="margin-right:{{marquee_margin}}px;"></text>
                <text style="margin-right:{{marquee_margin}}px;">{{text}}</text>
              </view>
            </view>
          </view>
        </scroll-view>
      </view>
    

    样式页面 wxss

    .inform-warp{
      width: 100%;
      background: #f8f8f8;
      padding-left: 4%;
    }
    .inform{
      width: 30rpx;
      height: 28rpx;
      margin-bottom: 32rpx;
      display: inline-block;
    }
    .container {
      height: 100%;
      width: 90%;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      box-sizing: border-box;
      padding: 0;
      text-align: left;
      display: inline-block;
    }
    
    .scrolltxt {
      padding-left: 20rpx;
      background: #f8f8f8;
    }
    
    .marquee_box {
      position: relative;
      color: #333;
      height: 90rpx;
      display: block;
      overflow: hidden;
    }
    
    .marquee_text {
      white-space: nowrap;
      position: absolute;
      top: 0;
      font-size: 14px;
      height: 90rpx;
      line-height: 90rpx;
    }
    

    小程序 js页面

    Page({
     data: {
     text: "这是一条测试公告,看看效果怎么样,2019年3月23日",
     marqueePace: 1,//滚动速度
     marqueeDistance: 0,//初始滚动距离
     marquee_margin: 30,
     size:14,
     interval: 20 // 时间间隔
     },
     
     /**
     * 生命周期函数--监听页面加载
     */
     onLoad: function (options) { 
     },
     onShow: function () {
     var that = this;
     var length = that.data.text.length * that.data.size;//文字长度
     var windowWidth = wx.getSystemInfoSync().windowWidth;// 屏幕宽度
     //console.log(length,windowWidth);
     that.setData({
      length: length,
      windowWidth: windowWidth
     });
     that.scrolltxt();// 第一个字消失后立即从右边出现
     },
     
     scrolltxt: function () {
     var that = this;
     var length = that.data.length;//滚动文字的宽度
     var windowWidth = that.data.windowWidth;//屏幕宽度
     if (length > windowWidth){
      var interval = setInterval(function () {
      var maxscrollwidth = length + that.data.marquee_margin;//滚动的最大宽度,文字宽度+间距,如果需要一行文字滚完后再显示第二行可以修改marquee_margin值等于windowWidth即可
      var crentleft = that.data.marqueeDistance;
      if (crentleft < maxscrollwidth) {//判断是否滚动到最大宽度
       that.setData({
       marqueeDistance: crentleft + that.data.marqueePace
       })
      }
      else {
       //console.log("替换");
       that.setData({
       marqueeDistance: 0 // 直接重新滚动
       });
       clearInterval(interval);
       that.scrolltxt();
      }
      }, that.data.interval);
     }
     else{
      that.setData({ marquee_margin:"1000"});//只显示一条不滚动右边间距加大,防止重复显示
     } 
     }
    })
    
    

    相关文章

      网友评论

          本文标题:微信小程序实现文字从右向左无限滚动

          本文链接:https://www.haomeiwen.com/subject/bjytkltx.html