原生小程序封裝跑馬燈效果
本文實(shí)例為大家分享了小程序封裝跑馬燈效果的具體代碼,供大家參考,具體內(nèi)容如下

Marquee.wxml
<view class="marquee_container " style="background:{{broadcast_arr.back_color}};font-size:32rpx;">
<view class='marquee_text' style='--marqueeWidth--:{{-broadcast_arr.width_mal}}px;--speed--:{{broadcast_arr.time}}s;width:{{broadcast_arr.width_mal}}px;'>
<block wx:for="{{data}}" wx:key='index'>
<view style='color:{{broadcast_arr.text_color}};margin-left:{{index!=0?item.starspos*2:0}}rpx;'>
{{item.img}}
</view>
</block>
</view>
</view>
Marquee.wxss
@keyframes around {
from {
margin-left: 100%;
}
to {
margin-left: var(--marqueeWidth--);
}
}
.marquee_container {
/* background-color: #0099FF; */
padding: 12rpx 0;
position: relative;
width: 100%;
/* height: 50rpx; */
}
.marquee_text {
display: flex;
white-space: nowrap;
animation-name: around;
animation-duration: var(--speed--);
animation-iteration-count: infinite;
animation-timing-function: linear;
line-height: 50rpx;
}
.marquee_tit {
height: 50rpx;
line-height: 50rpx;
position: absolute;
padding-left: 22rpx;
}
Marquee.js
Component({
options: {
multipleSlots: true // 在組件定義時(shí)的選項(xiàng)中啟用多slot支持
},
properties: {
title: { // 屬性名
type: String, // 類型(必填),目前接受的類型包括:String, Number, Boolean, Object, Array, null(表示任意類型)
value: '標(biāo)題' , // 屬性初始值(可選),如果未指定則會(huì)根據(jù)類型選擇一個(gè)
observer: function (newVal) {
this.setData({
'data[0].img': newVal
})
this.run()
}
}
},
data: {
data: [
{
img: "",
}
],
broadcast_arr: {
speed: 5, //滾動(dòng)速度,每秒5個(gè)字
font_size: "16", //字體大小(px)
text_color: "#de8c17", //字體顏色
back_color: "#fffbe8", //背景色
}
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
*/
methods: {
run() {
let ititdata = this.data.data,
assist = this.data.broadcast_arr,
this_width = 0,
spacing = 0,
speed = (this.data.broadcast_arr.speed * this.data.broadcast_arr.font_size); //m每秒行走的距離
for (let i in ititdata) {
ititdata[i].starspos = wx.getSystemInfoSync().windowWidth; //以取屏幕寬度為間距
this_width += (ititdata[i].img.length-12) * this.data.broadcast_arr.font_size;
if (i != ititdata.length - 1) {
spacing += ititdata[i].starspos
}
}
let total_length = this_width + spacing;//總長(zhǎng)
assist.time = total_length / speed; /**滾動(dòng)時(shí)間*/
assist.width_mal = total_length;
this.setData({
broadcast_arr: assist,
data: ititdata
})
}
}
})
index引入—index.json
{
"usingComponents": {
"marquee":"/components/Marquee/Marquee"
},
index.wxml
<!--跑馬燈 Linyufan.com--> <marquee id='marquee' title='江龍:每日惠自提店鋪特價(jià)啦~店鋪特價(jià)啦~店鋪特價(jià)啦~'></marquee> <!--跑馬燈-->
index.js
onReady:function(){
this.marquee=this.selectComponent('#marquee')
this.marquee.run()
},
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片滾動(dòng)附源碼下載
JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片滾動(dòng),9張圖告訴你,C羅欲哭無(wú)淚,另附源碼下載,方便學(xué)習(xí)2014-06-06
原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果
這篇文章主要為大家詳細(xì)介紹了原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
js實(shí)現(xiàn)仿百度風(fēng)云榜可重復(fù)多次調(diào)用的TAB切換選項(xiàng)卡效果
這篇文章主要介紹了js實(shí)現(xiàn)仿百度風(fēng)云榜可重復(fù)多次調(diào)用的TAB切換選項(xiàng)卡效果,涉及javascript鼠標(biāo)事件及頁(yè)面元素遍歷調(diào)用的實(shí)現(xiàn)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08
easyui window refresh 刷新兩次的解決方法(推薦)
下面小編就為大家?guī)?lái)一篇easyui window refresh 刷新兩次的解決方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
JavaScript調(diào)用客戶端Java程序的方法
這篇文章主要介紹了JavaScript調(diào)用客戶端Java程序的方法,實(shí)例分析了javascript調(diào)用java程序的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
JS回調(diào)函數(shù)基本定義與用法實(shí)例分析
這篇文章主要介紹了JS回調(diào)函數(shù)基本定義與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascript回調(diào)函數(shù)基本概念、功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-05-05
微信小程序api列表匯總包括網(wǎng)絡(luò)API,媒體API,文件API ,微信小程序支付流程,位置API,界面API等
這篇文章主要介紹了微信小程序api列表匯總包括網(wǎng)絡(luò)API,媒體API,文件API ,數(shù)據(jù)API,位置API,界面API,微信小程序支付流程,微信小程序登錄流程等,需要的朋友可以參考下2022-12-12

