一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 微信小程序實現走馬燈效果實例

微信小程序實現走馬燈效果實例

2022-02-19 17:27程序猿tx js教程

這篇文章主要給大家介紹了關于微信小程序實現走馬燈效果的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

日常開發中,我們經常會遇到文字橫向循環滾動的效果,俗稱走馬燈,也是項目中經常會使用的一個功能。在網頁web前端很常見,今天就介紹下小程序的實現方式,一種是用的css樣式實現,另一種是運用小程序的動畫功能實現。

微信小程序實現走馬燈效果實例

@keyframes 實現

利用@keyframes的規則來實現,非常方便,只需要css樣式就可以滿足,使用方法跟web上一樣。

?
1
2
3
<view class="marquee">
 <text>這是一段滾動的文字</text>
</view>

樣式類,from to 來定義動畫的開始結束,這里是從屏幕最右端向左滑,觸及到最左側后重新開始新一輪動畫。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@keyframes translation {
 from {
 margin-left: 750rpx; //從屏幕最右端開始
 }
 
 to {
 margin-left: 0px;
 }
}
 
.marquee{
 white-space: nowrap;
 animation-name: translation; //定義動畫的名稱
 animation-duration: 3s;
 animation-iteration-count: infinite;
 animation-timing-function: linear;
}

如果想要的效果是滑動到左側之后,文字繼續左滑,直到全部消失,再從最右開始動畫的,那么就需要再加上文字的長度,這里需要去計算文字的長度,使用SelectorQuery 對象實例來拿到文字節點的寬度。在頁面首次渲染完畢onReady時執行,查詢到對應文字節點信息的對象,得到文字的長度。這里定義的是上面的marquee類名。

?
1
2
3
4
5
6
7
8
9
10
11
onReady: function () {
 let query = wx.createSelectorQuery();
 query.select('.marquee').boundingClientRect();
 query.exec((res) => {
  if (res[0]) {
  this.setData({
   marqueeWidth: res[0].width
  })
  }
 })
}

然后使用css var() 函數插入定義的屬性值,到結束的位置處,讓它走完整個屏幕以及自身文字的長度。定義一個名為 "--marqueeWidth" 的屬性,然后在wxss樣式文件里使用var()函數調用該屬性:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<view class="marquee" style="--marqueeWidth:-{{marqueeWidth}}px">
 <text>這是一段滾動的文字</text>
</view>
 
wxss樣式里:
@keyframes translation {
 from {
 margin-left: 750rpx;
 }
 
 to {
 margin-left: var(--marqueeWidth);
 }
}

這是通過css的方式實現的,非常方便,但是會出現在部分機型上適配的問題,還有一種是通過Animation動畫實現。

animation實現

通過animation動畫實例來完成動畫,一開始讓視圖位于屏幕右側超出屏幕的。

?
1
2
3
4
5
6
7
8
9
<view class="marquee2" bindtransitionend="animationend" animation="{{animationData}}">
    <text>這是一段滾動的文字</text>
</view>
 
.marquee2{
 display: inline-block;
 white-space: nowrap;
 margin-left: 750rpx;
}

同樣這里計算了文字的長度,通過Animation.translate(number tx, number ty)平移屬性進行移動操作,直至移出整個屏幕。在一組動畫完成之后,調用bindtransitionend回調,再一次去執行動畫,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
this.animation = wx.createAnimation({
 duration: 3000,
 timingFunction: 'linear'
});
var query = wx.createSelectorQuery();
query.select('.marquee2').boundingClientRect();
query.exec((res) => {
 if (res[0]) {
 this.setData({
  marqueeWidth: res[0].width //文字長度
 }, () => {
  this.doAnim()
 })
 }
})
 
 
doAnim: function () {
 //向左滾動到超出屏幕,這里臨時寫死的屏幕寬度375px
 this.animation.translate(-this.data.marqueeWidth - 375, 0).step();
 setTimeout(() => {
  this.setData({
  animationData: this.animation.export(),
  });
 }, 10)
}

在第一次動畫結束之后,重新開始,通過animationend監聽動畫結束,然后再次執行。

?
1
2
3
4
5
6
7
8
9
10
animationend() {
 //復位
 this.animation.translate(0, 0).step({ duration: 0 });
 this.setData({
  animationData: this.animation.export()
 }, () => {
  //重新開始動畫
  this.doAnim()
 });
}

這個動畫在小程序開發工具上運行會有動畫突然暫停的現象,可以用手機試下的。

相對而言是比較容易實現的,而且走馬燈的效果也是我們在項目中經常會用到的,正好也可以熟悉下小程序的動畫的。

總結

到此這篇關于微信小程序實現走馬燈效果實例的文章就介紹到這了,更多相關小程序走馬燈效果內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6916884147348701192

延伸 · 閱讀

精彩推薦
  • js教程在JavaScript中查找字符串中最長單詞的三種方法(推薦)

    在JavaScript中查找字符串中最長單詞的三種方法(推薦)

    這篇文章主要介紹了在JavaScript中查找字符串中最長單詞的三種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋...

    Hunter網絡安全7352022-01-04
  • js教程微信小程序onShareTimeline()實現分享朋友圈

    微信小程序onShareTimeline()實現分享朋友圈

    這篇文章主要給大家介紹了關于微信小程序onShareTimeline()實現分享朋友圈的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定...

    遠航_6232021-12-27
  • js教程詳解 TypeScript 函數聲明和重載

    詳解 TypeScript 函數聲明和重載

    在 JavaScript 中,函數是構建應用的一塊基石,我們可以使用函數抽離可復用的邏輯、抽象模型、封裝過程。在TypeScript中,函數仍然是最基本、最重要的概念...

    前端充電寶7142022-01-05
  • js教程js刪除對象中的某一個字段的方法實現

    js刪除對象中的某一個字段的方法實現

    這篇文章主要介紹了js刪除對象中的某一個字段的方法實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    兔子零847392021-12-29
  • js教程ES5和ES6中類的區別總結

    ES5和ES6中類的區別總結

    這篇文章主要給大家介紹了ES5和ES6中類的區別的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    Totora612292021-12-16
  • js教程js正則表達式簡單校驗方法

    js正則表達式簡單校驗方法

    在本篇文章里小編給大家整理了一篇關于js正則表達式簡單校驗方法,有需要的朋友們可以參考下。...

    小妮淺淺11292021-12-24
  • js教程js制作提示框插件

    js制作提示框插件

    這篇文章主要介紹了js制作提示框插件的方法,幫助大家更好的理解和使用js,感興趣的朋友可以了解下...

    lanshanxiao10242021-12-18
  • js教程js實現驗證碼干擾(靜態)

    js實現驗證碼干擾(靜態)

    這篇文章主要為大家詳細介紹了js實現驗證碼干擾,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    lzh~5242022-01-22
主站蜘蛛池模板: 农村老妇1乱69系列小说 | 欧美日韩国产精品自在自线 | 国产乱码在线精品可播放 | 500福利第一导航 | 日韩在线 中文字幕 | 国产高清在线不卡 | 91短视频在线观看2019 | 福利国模私拍视频在线观看 | 92福利网 | 欧美高清在线精品一区二区不卡 | 免费看h片的网站 | 久久99精品国产自在自线 | 91制片厂官网 | 啪啪模拟器| 亚洲小视频网站 | 精品人人视屏 | 欧美性色老妇人 | 国产一区二区在线观看美女 | 午夜精品久久久内射近拍高清 | 欧美成人精品福利网站 | 日本中文字幕黑人借宿影片 | 国产丰满美女做爰 | 亚洲色图欧美图片 | 四虎国产精品视频免费看 | 好大好爽好硬我要喷水了 | 亚洲午夜久久久久影院 | 深夜日韩 | 四虎影视e456fcom四虎影视 | 欧美聚众性派对hdsex | 亚洲男人天堂 | 亚洲成色www久久网站 | 女同xx美女放 | 丝瓜视频黄色在线观看 | 狠狠色狠狠色综合婷婷tag | 99九九成人免费视频精品 | 亚洲美女人黄网成人女 | 98国产视频 | 日韩欧美一区二区三区 | 欧美一级裸片又黄又裸 | 日本三级大学生17 | 欧美亚洲另类在线观看 |