Spring 動畫是讓UI 交互栩栩如生的絕佳方式。 Spring 動畫並非以恆定速率在一段時間內更改屬性,而是使用彈簧物理學來移動事物,從而給人以真實物體移動的印象,並能為用戶提供更自然的體驗。
我之前寫過關於Spring 動畫的文章。那篇文章基於React,使用react-spring 進行動畫處理。本文將探討在Svelte 中類似的思想。
CSS 開發人員!在控制動畫效果時,通常會想到緩動。您可以將“彈簧”動畫視為基於現實世界物理學的緩動子類別。
Svelte 實際上在框架中內置了彈簧,無需任何外部庫。我們將回顧之前關於react-spring 的文章前半部分的內容。但之後,我們將深入探討Svelte 中彈簧的所有使用方法,並將實際的實現留到以後的文章中。雖然這可能看起來令人失望,但Svelte 有一些React 中沒有的獨特功能,可以有效地與這些動畫基元集成。我們將花一些時間討論它們。
還有一點需要注意:本文中穿插的一些演示可能看起來很奇怪,因為我將彈簧配置為“彈性”更大,以產生更明顯的效果。如果您使用了任何演示的代碼,請務必找到適合您的彈簧配置。
這是Rich Harris 製作的一個很棒的REPL,用於展示各種彈簧配置及其行為。
Svelte 存儲的快速入門
在開始之前,讓我們快速瀏覽一下Svelte 存儲。雖然Svelte 的組件完全能夠存儲和更新狀態,但Svelte 也具有存儲的概念,允許您在組件外部存儲狀態。由於Svelte 的Spring API 使用存儲,因此我們將在此快速介紹其重要部分。
要創建存儲的實例,我們可以導入writable 類型,並像這樣創建它:
import { writable } from "svelte/store"; const clicks = writable(0);
clicks 變量是一個值為0 的存儲。有兩種方法可以設置存儲的新值:set 和update 方法。前者接收要設置為存儲的值,而後者接收一個回調函數,接受當前值並返回新值。
function increment() { clicks.update(val => val 1); } function setTo5() { clicks.set(5); }
如果您無法實際使用狀態,那麼狀態就沒有用。為此,存儲提供了subscribe 方法,允許您收到新值的通知——但在組件內使用它時,您可以在存儲名稱前加上$ 字符,這告訴Svelte 不僅要顯示存儲的當前值,還要在它更改時更新。例如:
<h1 id="Value-clicks"> Value {$clicks}</h1> Increment Set to 5
這是一個完整的、可工作的代碼示例。存儲提供了許多其他功能,例如派生存儲(允許您將存儲鏈接在一起)、可讀存儲,甚至能夠在首次觀察存儲和不再有觀察者時收到通知。但是對於本文的目的,上面顯示的代碼是我們需要關注的全部內容。請參閱Svelte 文檔或交互式教程以了解更多信息。
彈簧速成課程
讓我們快速介紹一下彈簧及其作用。我們將查看一個簡單的UI,它更改某些元素的呈現方面(不透明度和轉換),然後查看動畫更改。
這是一個最小的Svelte 組件,它切換一個<div>的不透明度,並切換另一個<code><div>的x 軸轉換(沒有任何動畫)。<pre class="brush:php;toolbar:false"><div style="opacity: {shown ? 1 : 0}"> Content to toggle</div>
<br>Toggle
<hr><div style="transform: translateX({moved}px)">I'm a box.</div>
<br>Move it!</pre>
<p>這些更改會立即應用,因此讓我們看看如何對其進行動畫處理。這就是彈簧的用武之地。在Svelte 中,彈簧是一個存儲,我們可以在其上設置所需的值,但它不會立即更改,而是存儲內部使用彈簧物理學逐漸更改值。然後,我們可以將我們的UI 綁定到這個變化的值,以獲得不錯的動畫效果。讓我們看看它的實際效果。</p>
<pre class="brush:php;toolbar:false"> import { spring } from "svelte/motion";
const fadeSpring = spring(1, { stiffness: 0.1, damping: 0.5 });
const transformSpring = spring(0, { stiffness: 0.2, damping: 0.1 });
const toggleFade = () => fadeSpring.update(val => (val ? 0 : 1));
const toggleTransform = () => transformSpring.update(val => (val ? 0 : 500));
const snapTransform = () => transformSpring.update(val => val, { hard: true });
<div style="opacity: {$fadeSpring}">Content to fade</div>
<br>Fade Toggle
<hr><div style="transform: translateX({$transformSpring}px)">I'm a box.</div>
<br>Move it!
Snap into place</pre>
<p>我們從Svelte 獲取spring 函數,並為不透明度和轉換動畫設置不同的spring 實例。轉換彈簧配置被故意設置為<em>非常有彈性</em>,以幫助稍後展示如何臨時關閉彈簧動畫並立即應用所需更改(這將在以後派上用場)。腳本塊的末尾是用於設置所需屬性的點擊處理程序。然後,在HTML 中,我們將變化的值直接綁定到我們的元素……就是這樣!這就是Svelte 中基本彈簧動畫的全部內容。</p>
<p>唯一剩下的項目是snapTransform 函數,我們將其轉換彈簧設置為其當前值,但還將一個對像作為第二個參數傳遞,其中hard: true。這具有立即應用所需值而無需任何動畫的效果。</p>
<p>此演示以及我們將在本文中看到的其餘基本示例都位於此處:[此處應插入演示鏈接]</p>
<p> ...(文章其餘部分的偽原創,保持原文意思不變,並保持圖片位置和格式)</p>
</div>
以上是苗條和春季動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

我知道,我知道:有大量的內容管理系統選項可用,而我進行了幾個測試,但實際上沒有一個是一個,y&#039;知道嗎?怪異的定價模型,艱難的自定義,有些甚至最終成為整個&

鏈接CSS文件到HTML可以通過在HTML的部分使用元素實現。 1)使用標籤鏈接本地CSS文件。 2)多個CSS文件可通過添加多個標籤實現。 3)外部CSS文件使用絕對URL鏈接,如。 4)確保正確使用文件路徑和CSS文件加載順序,優化性能可使用CSS預處理器合併文件。

選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境