亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
指定屬性值
創(chuàng)建和操作時(shí)間線
播放選項(xiàng)
最終想法
首頁(yè) CMS教程 &#&按 使用 Anime.js 基于 JavaScript 的動(dòng)畫,第 3 部分:探索值、時(shí)間軸和播放

使用 Anime.js 基于 JavaScript 的動(dòng)畫,第 3 部分:探索值、時(shí)間軸和播放

Sep 03, 2023 am 09:01 AM

使用 Anime.js 基于 JavaScript 的動(dòng)畫,第 3 部分:探索值、時(shí)間軸和播放

在 Anime.js 系列的上一篇教程中,您了解了控制不同目標(biāo)元素的動(dòng)畫方式的不同類型的參數(shù)。您還學(xué)習(xí)了如何使用函數(shù)參數(shù)來(lái)逐漸更改元素的延遲或持續(xù)時(shí)間。

在本教程中,我們將更進(jìn)一步,學(xué)習(xí)如何使用常規(guī)數(shù)字、基于函數(shù)的值和關(guān)鍵幀來(lái)指定屬性值本身。您還將學(xué)習(xí)如何使用時(shí)間軸按順序播放動(dòng)畫。

指定屬性值

Anime.js 允許您指定目標(biāo)元素的可動(dòng)畫屬性的最終值。動(dòng)畫的初始值或起始值是該屬性的默認(rèn)值。 CSS 中指定的任何值也可以作為起始值。有多種指定最終值的方法。

它也可以是無(wú)單位的數(shù)字。在這種情況下,在計(jì)算任何屬性值時(shí)將使用屬性的原始或默認(rèn)單位。您還可以將值指定為字符串,但該字符串必須至少包含一個(gè)數(shù)值。字符串值的示例為 10vh80%9.125turn。

您還可以指定相對(duì)于當(dāng)前值的屬性值,而不是指定絕對(duì)值。例如,您可以使用 +=150px 作為值,將最終 translateY 值設(shè)置為比當(dāng)前值大 150px 。請(qǐng)記住,在指定相對(duì)值時(shí)只能使用加法、乘法和減法。

在設(shè)置顏色動(dòng)畫時(shí),您不能使用紅色、黑色和藍(lán)色等顏色名稱來(lái)設(shè)置動(dòng)畫的最終顏色值。在這種情況下,顏色動(dòng)畫根本不會(huì)發(fā)生,并且變化將是即時(shí)的。對(duì)顏色進(jìn)行動(dòng)畫處理的唯一方法是將值指定為十六進(jìn)制數(shù)字或 RGB 和 HSL 值。

您可能已經(jīng)注意到,我們沒有為目標(biāo)元素指定初始值來(lái)為其設(shè)置動(dòng)畫。 Anime.js 根據(jù)我們的 CSS 和這些屬性的默認(rèn)值自動(dòng)確定初始值。但是,您可以使用數(shù)組指定屬性的默認(rèn)值以外的初始值。數(shù)組中的第一項(xiàng)表示初始值,第二項(xiàng)表示最終值。

您可以使用函數(shù)為不同的參數(shù)設(shè)置不同的值,而不是為所有目標(biāo)元素使用相同的最終值。該過程類似于指定基于函數(shù)的屬性參數(shù)。

var uniqueTranslation = anime({
  targets: '.square',
  translateY: function(el, i) {
    return 50 * (i + 1);
  },
  autoplay: false
});

var randomScaling = anime({
  targets: '.square',
  scale: function(el, i) {
    return Math.random()*1.5 + i/10;
  },
  autoplay: false
});

var randomRotation = anime({
  targets: '.square',
  rotate: function() {
    return anime.random(-180, 180);
  },
  autoplay: false
});

var randomRadius = anime({
  targets: '.square',
  borderRadius: function(el) {
    return 20 + Math.random()*el.offsetWidth/4;
  },
  autoplay: false
});

var randomAll = anime({
  targets: '.square',
  translateY: function(el, i) {
    return 50 + 50 * i;
  },
  scale: function(el, i) {
    return Math.random()*1.5 + i/10;
  },
  rotate: function() {
    return anime.random(-180, 180);
  },
  borderRadius: function(el) {
    return Math.random()*el.offsetWidth/2;
  },
  duration: function() { return anime.random(1500, 2400); },
  delay: function() { return anime.random(0, 1000); },
  autoplay: false
});

對(duì)于 translateY 屬性,我們使用元素的索引來(lái)設(shè)置翻譯值。使用 50 * (i + 1) 會(huì)將每個(gè)元素的 translateY 值增加 50 個(gè)像素。

縮放動(dòng)畫還使用元素的索引以及內(nèi)置的 Math.random() 函數(shù)返回一個(gè)小于 1 的浮點(diǎn)偽隨機(jī)數(shù)。這樣元素隨機(jī)縮放,但屬性的 i/10 部分稍微增加了最終出現(xiàn)的元素具有更大尺寸的可能性。

在旋轉(zhuǎn)動(dòng)畫的代碼中,我們使用 anime.random(a, b) 輔助函數(shù)來(lái)獲取 -180 到 180 之間的隨機(jī)整數(shù)。此函數(shù)有助于分配隨機(jī)積分translateYrotate 等屬性的值。使用此函數(shù)分配隨機(jī)比例值將產(chǎn)生極端結(jié)果。

不同元素的邊框半徑值是通過使用 el 函數(shù)參數(shù)計(jì)算目標(biāo)元素的寬度來(lái)確定的。最后,代碼的最后一部分也為 durationdelay 參數(shù)分配隨機(jī)值。

可以看到最后一部分實(shí)現(xiàn)的動(dòng)畫是非常隨機(jī)的。元素的不同屬性值或其延遲和持續(xù)時(shí)間值之間沒有關(guān)系。在現(xiàn)實(shí)生活中,使用可以為動(dòng)畫添加一些方向感的值更為明智。

還可以使用關(guān)鍵幀為目標(biāo)元素的不同屬性設(shè)置動(dòng)畫。每個(gè)關(guān)鍵幀都包含屬性對(duì)象的數(shù)組。您可以使用該對(duì)象來(lái)指定該部分動(dòng)畫的屬性值,durationdelayeasing。以下代碼創(chuàng)建一個(gè)基于關(guān)鍵幀的平移動(dòng)畫。

var keyframeTranslation = anime({
  targets: '.square',
  translateY: [
    { value: 100, duration: 500},
    { value: 300, duration: 1000, delay: 1000},
    { value: 40, duration: 500, delay: 1000}
  ],
  autoplay: false
});

var keyframeAll = anime({
  targets: '.square',
  translateY: [
    { value: 100, duration: 500},
    { value: 300, duration: 1000, delay: 1000},
    { value: 40, duration: 500, delay: 1000}
  ],
  scale: [
    { value: 1.1, duration: 500},
    { value: 0.5, duration: 1000, delay: 1000},
    { value: 1, duration: 500, delay: 1000}
  ],
  rotate: [
    { value: 60, duration: 500},
    { value: -60, duration: 1000, delay: 1000},
    { value: 75, duration: 500, delay: 1000}
  ],
  borderRadius: [
    { value: 10, duration: 500},
    { value: 50, duration: 1000, delay: 1000},
    { value: 25, duration: 500, delay: 1000}
  ],
  delay: function(el, i) { return 100*(i+1) },
  autoplay: false
});

您還可以通過為所有參數(shù)指定不同或相同的值來(lái)一次性設(shè)置多個(gè)屬性的動(dòng)畫。在第二種情況下,全局 delay 參數(shù)根據(jù)索引對(duì)所有元素應(yīng)用初始延遲。此延遲與應(yīng)用于關(guān)鍵幀內(nèi)每個(gè)屬性的延遲無(wú)關(guān)。

創(chuàng)建和操作時(shí)間線

到目前為止,在本系列中,我們一直在使用 delay 參數(shù)以特定順序播放不同的動(dòng)畫。要為此目的使用延遲,我們還需要知道前一個(gè)動(dòng)畫的持續(xù)時(shí)間。

隨著動(dòng)畫序列的復(fù)雜性不斷增加,維護(hù)正確的延遲值變得非常繁瑣。其中一個(gè)動(dòng)畫的持續(xù)時(shí)間的任何變化都會(huì)迫使我們重新計(jì)算所有延遲值,以保持動(dòng)畫的原始序列。

解決這個(gè)問題的一個(gè)更好的方法是使用時(shí)間軸來(lái)控制動(dòng)畫序列。您必須使用 anime.timeline() 函數(shù)在 Anime.js 中創(chuàng)建時(shí)間線。您還可以將不同的參數(shù)作為對(duì)象傳遞給該函數(shù)。這些參數(shù)可以指定時(shí)間線播放的方向、循環(huán)次數(shù)以及 autoplay 參數(shù)來(lái)確定是否應(yīng)自動(dòng)播放動(dòng)畫。所有這些參數(shù)都已在本系列的參數(shù)教程中詳細(xì)討論。

您可以使用 add() 方法將不同的動(dòng)畫添加到時(shí)間軸。添加到時(shí)間線的所有動(dòng)畫將按照添加順序播放??梢灾付ń^對(duì)或相對(duì)偏移值來(lái)控制動(dòng)畫的播放順序。

當(dāng)使用相對(duì)偏移值時(shí),當(dāng)前動(dòng)畫的開始時(shí)間是相對(duì)于前一個(gè)動(dòng)畫的時(shí)間確定的。相對(duì)偏移可以分為三種類型:

  • +=offset:在這種情況下,當(dāng)前動(dòng)畫會(huì)在上一個(gè)動(dòng)畫結(jié)束后經(jīng)過 offset 毫秒后開始播放。
  • -=offset:在這種情況下,當(dāng)前動(dòng)畫在上一個(gè)動(dòng)畫結(jié)束前 offset 毫秒開始播放。
  • *=offset:在這種情況下,當(dāng)前動(dòng)畫會(huì)在前一個(gè)動(dòng)畫的動(dòng)畫持續(xù)時(shí)間的 offset 倍后的毫秒數(shù)后開始播放。

以下代碼展示了如何創(chuàng)建基本時(shí)間線和具有相對(duì)偏移值的時(shí)間線。

var basicTimeline = anime.timeline({
  direction: "alternate",
  loop: 2,
  autoplay: false
});

basicTimeline.add({
    targets: '.square',
    translateY: 200
 }).add({
    targets: '.red',
    translateY: 100
 }).add({
    targets: '.blue',
    translateY: 0
 });

var offsetTimeline = anime.timeline({
  direction: "alternate",
  loop: 2,
  autoplay: false
});

offsetTimeline.add({
    targets: '.square',
    translateY: 200
 }).add({
    targets: '.red',
    offset: '+=1000',
    translateY: 100
 }).add({
    targets: '.blue',
    offset: '*=2',
    translateY: 0
 });

嘗試單擊上述演示中的偏移時(shí)間線按鈕。您將看到紅色方塊動(dòng)畫結(jié)束和藍(lán)色方塊動(dòng)畫開始之間有 2 秒的延遲。

我們沒有為紅方塊動(dòng)畫指定 duration 。因此,使用默認(rèn)值 1000ms 或 1s 作為持續(xù)時(shí)間。藍(lán)色方形動(dòng)畫的乘數(shù)偏移量使該值加倍,這會(huì)導(dǎo)致動(dòng)畫延遲兩秒。

當(dāng)使用絕對(duì)偏移值時(shí),時(shí)間線的起始時(shí)間用作參考點(diǎn)。通過對(duì)時(shí)間線開頭發(fā)生的動(dòng)畫使用較大的偏移值,可以反轉(zhuǎn)動(dòng)畫的播放順序。

播放選項(xiàng)

Anime.js 有多種選項(xiàng)可以在任何給定點(diǎn)播放、暫停、重新啟動(dòng)或搜索動(dòng)畫或時(shí)間線。

play() 函數(shù)允許我們從當(dāng)前進(jìn)度開始播放動(dòng)畫。 pause() 函數(shù)將在調(diào)用該函數(shù)時(shí)凍結(jié)動(dòng)畫。 restart()?函數(shù)從頭開始播放動(dòng)畫,無(wú)論其當(dāng)前進(jìn)度如何。 seek(value) 函數(shù)可用于將動(dòng)畫提前 value 毫秒數(shù)。

您應(yīng)該記住,play() 函數(shù)僅從暫停時(shí)恢復(fù)動(dòng)畫。如果動(dòng)畫已經(jīng)結(jié)束,則無(wú)法使用 play() 重播動(dòng)畫。要重播動(dòng)畫,您必須使用 restart() 函數(shù)。

var slowAnimation = anime({
  targets: '.square',
  translateY: 250,
  borderRadius: 50,
  duration: 4000,
  easing: 'linear',
  autoplay: false
});

document.querySelector('.play').onclick = slowAnimation.play;
document.querySelector('.pause').onclick = slowAnimation.pause;
document.querySelector('.restart').onclick = slowAnimation.restart;

var seekInput = document.querySelector('.seek');

seekInput.oninput = function() {
  slowAnimation.seek(slowAnimation.duration * (seekInput.value / 100));
};

請(qǐng)注意,我們沒有使用 seekInput.value 來(lái)設(shè)置查找函數(shù)的值。這是因?yàn)榉秶斎氲淖畲笾狄言跇?biāo)記中設(shè)置為 100。直接使用輸入范圍的值將允許我們最多查找 100 毫秒。將范圍輸入值乘以動(dòng)畫持續(xù)時(shí)間可確保我們可以在范圍滑塊上從頭到尾查找動(dòng)畫。

最終想法

在本教程中,您學(xué)習(xí)了如何將不同的屬性值設(shè)置為數(shù)字、函數(shù)或關(guān)鍵幀的動(dòng)畫。您還學(xué)習(xí)了如何在 Anime.js 中控制和操作時(shí)間線來(lái)控制動(dòng)畫序列的播放順序。

如果您正在尋找其他資源來(lái)學(xué)習(xí)或在工作中使用,請(qǐng)查看我們?cè)?Envato 市場(chǎng)中提供的資源。

如果您對(duì)本教程有任何疑問,請(qǐng)?jiān)谠u(píng)論中告訴我。

以上是使用 Anime.js 基于 JavaScript 的動(dòng)畫,第 3 部分:探索值、時(shí)間軸和播放的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何診斷WordPress引起的高CPU使用 如何診斷WordPress引起的高CPU使用 Jul 06, 2025 am 12:08 AM

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫(kù)查詢效率低、主題代碼質(zhì)量差或流量激增。1.首先通過top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況并刪除或替換低效插件;3.安裝緩存插件、清理冗余數(shù)據(jù)、分析慢查詢?nèi)罩疽詢?yōu)化數(shù)據(jù)庫(kù);4.檢查主題是否存在過度加載內(nèi)容、復(fù)雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測(cè)試對(duì)比并優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位并解

如何在WordPress中縮小JavaScript文件 如何在WordPress中縮小JavaScript文件 Jul 07, 2025 am 01:11 AM

MinifyingJavaScript文件可通過刪除空白、注釋和無(wú)用代碼來(lái)提升WordPress網(wǎng)站加載速度。1.使用支持合并壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用并選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動(dòng)壓縮JS文件并通過FTP上傳,適用于熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能沖突,啟用后需徹底測(cè)試網(wǎng)站功能。

如何以編程方式防止評(píng)論垃圾郵件 如何以編程方式防止評(píng)論垃圾郵件 Jul 08, 2025 am 12:04 AM

防止評(píng)論垃圾信息最有效的方式是通過程序化手段自動(dòng)識(shí)別并攔截。1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動(dòng)填寫特性識(shí)別垃圾評(píng)論,不影響用戶體驗(yàn);3.檢查評(píng)論內(nèi)容關(guān)鍵詞黑名單,通過敏感詞匹配過濾垃圾信息,需注意避免誤判;4.判斷評(píng)論頻率與來(lái)源IP,限制單位時(shí)間內(nèi)的提交次數(shù)并建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識(shí)別準(zhǔn)確性??筛鶕?jù)網(wǎng)站

如何爭(zhēng)取古騰堡大塊的資產(chǎn) 如何爭(zhēng)取古騰堡大塊的資產(chǎn) Jul 09, 2025 am 12:14 AM

在開發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過wp_register_script和wp_register_style注冊(cè)資源,并設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,并確保路徑一致;4.通過add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

如何向用戶添加自定義字段 如何向用戶添加自定義字段 Jul 06, 2025 am 12:18 AM

要添加自定義用戶字段需根據(jù)平臺(tái)選擇擴(kuò)展方式并注意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見做法包括:1.利用數(shù)據(jù)庫(kù)額外表或鍵值對(duì)結(jié)構(gòu)存儲(chǔ)信息;2.在前端加入輸入框并與后端集成;3.對(duì)敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。

如何添加自定義重寫規(guī)則 如何添加自定義重寫規(guī)則 Jul 08, 2025 am 12:11 AM

在WordPress中添加自定義重寫規(guī)則的關(guān)鍵在于使用add_rewrite_rule函數(shù)并確保規(guī)則正確生效。1.使用add_rewrite_rule注冊(cè)規(guī)則,格式為add_rewrite_rule($regex,$redirect,$after),其中$regex是正則表達(dá)式匹配URL,$redirect指定實(shí)際查詢,$after控制規(guī)則位置;2.需通過add_filter添加自定義查詢變量;3.修改后必須刷新固定鏈接設(shè)置;4.建議將規(guī)則放在'top'以避免沖突;5.可借助插件查看當(dāng)前規(guī)則便于

如何優(yōu)化WordPress機(jī)器人TXT 如何優(yōu)化WordPress機(jī)器人TXT Jul 13, 2025 am 12:37 AM

robots.txt對(duì)WordPress網(wǎng)站的SEO至關(guān)重要,能引導(dǎo)搜索引擎抓取行為,避免重復(fù)內(nèi)容并提升效率。1.屏蔽如/wp-admin/、/wp-includes/等系統(tǒng)路徑,但避免誤封/uploads/目錄;2.添加Sitemap路徑如Sitemap:https://yourdomain.com/sitemap.xml以幫助搜索引擎快速發(fā)現(xiàn)站點(diǎn)地圖;3.限制/page/和帶參數(shù)的URL以減少爬蟲浪費(fèi),但需注意勿封重要?dú)w檔頁(yè);4.避免常見錯(cuò)誤如誤封全站、緩存插件影響更新及忽略移動(dòng)端與子域名配

如何介紹WordPress性能 如何介紹WordPress性能 Jul 07, 2025 am 12:43 AM

1.使用性能分析插件可快速定位問題,如QueryMonitor可查看數(shù)據(jù)庫(kù)查詢次數(shù)與PHP錯(cuò)誤,BlackboxProfiler生成函數(shù)執(zhí)行報(bào)告,NewRelic提供服務(wù)器級(jí)分析;2.分析PHP執(zhí)行性能需檢查耗時(shí)函數(shù)、調(diào)試工具使用及內(nèi)存分配情況,如Xdebug生成火焰圖輔助優(yōu)化;3.監(jiān)控?cái)?shù)據(jù)庫(kù)查詢效率可通過慢查詢?nèi)罩九c索引檢查,QueryMonitor能列出所有SQL并按時(shí)間排序;4.結(jié)合GooglePageSpeedInsights、GTmetrix與WebPageTest等外部工具評(píng)估前端加

See all articles