微信小程序跑马灯效果怎么弄

  • 时间:
  • 来源: 网络

效果

wxml

1显示完后再显示

{{text}}

2出现白边后即显示

{{text}}

{{text}}

wxss

.example{

display:block;

width:100%;

height:100rpx;

}

.marquee_box{

width:100%;

position:relative;

}

.marquee_text{

white-space:nowrap;

position:absolute;

top:0;

}

js

//pages/home/marquee/marquee.js

Page({

data:{

text:'这是一条会滚动的文字滚来滚去的文字跑马灯,哈哈哈哈哈哈哈哈',

marqueePace:1,//滚动速度

marqueeDistance:0,//初始滚动距离

marqueeDistance2:0,

marquee2copy_status:false,

marquee2_margin:60,

size:14,

orientation:'left',//滚动方向

interval:20//时间间隔

},

onShow:function(){

//页面显示

varvm=this;

varlength=vm.data.text.length*vm.data.size;//文字长度

varwindowWidth=wx.getSystemInfoSync().windowWidth;//屏幕宽度

vm.setData({

length:length,

windowWidth:windowWidth,

marquee2_margin:length

});

vm.run1();//水平一行字滚动完了再按照原来的方向滚动

vm.run2();//第一个字消失后立即从右边出现

},

run1:function(){

varvm=this;

varinterval=setInterval(function(){

if(-vm.data.marqueeDistance

vm.setData({

marqueeDistance:vm.data.marqueeDistance-vm.data.marqueePace,

});

}else{

clearInterval(interval);

vm.setData({

marqueeDistance:vm.data.windowWidth</span>

});

vm.run1();

}

},vm.data.interval);

},

run2:function(){

varvm=this;

varinterval=setInterval(function(){

if(-vm.data.marqueeDistance2

//如果文字滚动到出现marquee2_margin=30px的白边,就接着显示

vm.setData({

marqueeDistance2:vm.data.marqueeDistance2-vm.data.marqueePace,

marquee2copy_status:vm.data.length+vm.data.marqueeDistance2<=vm.data.windowWidth+vm.data.marquee2_margin,

});

}else{

if(-vm.data.marqueeDistance2>=vm.data.marquee2_margin){//当第二条文字滚动到最左边时

vm.setData({

marqueeDistance2:vm.data.marquee2_margin//直接重新滚动

});

clearInterval(interval);

vm.run2();

}else{

clearInterval(interval);

vm.setData({

marqueeDistance2:-vm.data.windowWidth</span>

});

vm.run2();

}

}

},vm.data.interval);

}

})