Contents

Zrozumienie przejść i animacji w Svelte

Dobrze wykonana animacja może poprawić wrażenia użytkownika i może być świetnym sposobem na wysłanie informacji zwrotnej do użytkownika. Svelte ułatwia włączanie animacji i przejść do aplikacji przy bardzo niewielkim zapotrzebowaniu na biblioteki JavaScript innych firm.

Konfiguracja projektu Svelte

Aby rozpocząć korzystanie z Svelte, należy upewnić się, że zarówno środowisko uruchomieniowe Node.js, jak i Node Package Manager (NPM), który ułatwia instalację pakietów dla aplikacji JavaScript, są odpowiednio zainstalowane na urządzeniu komputerowym. Aby zainicjować proces konfiguracji, należy otworzyć okno terminala i wykonać następujące polecenie:

 npm create vite

Po pierwsze, nazwij swój projekt, a następnie wybierz Svelte jako preferowany framework. Następnie skonfiguruj go do korzystania z JavaScript, wybierając odpowiednią opcję w procesie instalacji. Następnie przejdź do folderu głównego projektu i wykonaj wymagane polecenia instalacji zależności w terminalu lub wierszu poleceń.

 npm install

Zadanie wymaga wyeliminowania zbędnego kodu z projektu poprzez usunięcie katalogów “assets” i “lib”, oczyszczając zawartość plików “App.svelte” i “App.css”.

Jak używać tweeningu w Svelte

Tweening odnosi się do metody stosowanej zarówno w animacji, jak i grafice komputerowej, która polega na generowaniu klatek pośrednich między dwiema klatkami kluczowymi w celu uzyskania płynnego i naturalnie wyglądającego ruchu lub transformacji. Framework Svelte zapewnia skuteczny sposób wykorzystania tej techniki poprzez wykorzystanie wartości liczbowych dla animowanych elementów, ułatwiając w ten sposób tworzenie płynnych i responsywnych przejść w aplikacjach internetowych.

Narzędzie Tweened należy do modułu Svelte/Motion i może być zintegrowane z komponentami za pomocą instrukcji importu, która jest zgodna z określoną składnią.

 import { tweened } from 'svelte/motion'

Narzędzie tweened w Svelte działa jako konfigurowalny zapisywalny magazyn, który pozwala użytkownikom efektywnie zarządzać stanem aplikacji. Narzędzie to składa się z dwóch podstawowych metod, a mianowicie “set” i “update”, które umożliwiają programistom efektywne manipulowanie danymi. Zasadniczo, tweened store przyjmuje formę obiektu JavaScript, zapewniając dostępne środki, za pomocą których można nadzorować i kontrolować ewolucję dynamicznej zawartości w aplikacji.

 const y = tweened(defaultValue, {
    duration: [time-in-milliseconds],
    easing: [easing-function],
})

wartość początkowa powiązanego elementu reprezentowanego przez pierwszy parametr, który służy jako ustawienie domyślne dla powiązania y ; oraz obiekt zawierający dwie właściwości, a mianowicie duration i easing .Pierwsza z nich określa przedział czasu w milisekundach, w którym utrzyma się tween, podczas gdy druga wyznacza funkcję łagodzenia, która zostanie zastosowana podczas procesu animacji.

Funkcje łagodzące w domenie Svelte ustanawiają zachowanie przejścia i są objęte modułem svelte/easing. W związku z tym należy zaimportować określoną funkcję z tej domeny, aby włączyć ją do repozytorium tweened. Framework Svelte prezentuje wizualizator easing, który umożliwia użytkownikom badanie wzorców zachowań wykazywanych przez różne funkcje easing.

Aby skutecznie zademonstrować możliwości narzędzia tween w środowisku Svelte, rozważmy następujący przykład, w którym wykorzystujemy magazyn tween do stopniowego zwiększania wymiarów komponentu ekranowego.

 <script>
  import { tweened } from "svelte/motion";
  import { bounceOut } from "svelte/easing";

  const size = tweened(0, {
    easing:bounceOut
  })
</script>

<div class="container">
  <div style={`height: ${$size * 30}px;`}>
  </div>
</div>
<button on:click={()=>(size.update(()=>$size\\+3))}>Increase size</button>

<style>
  .container{
    display: flex;
    align-items: flex-end;
    margin-top: 400px;
  }
  div{
    height:0;
    width:100px;
    background-color: red;
  }
</style>

Kod importuje dwie funkcje, tweened i bounceOut , które znajdują się w odpowiednich modułach Svelte svelte/motion i svelte/easing . Następnie definiowana jest stała zmienna i wiązana z tweened store, której wartość domyślna jest reprezentowana przez this.$options.animate=true; . Dostęp do tej wartości domyślnej można uzyskać za pomocą symbolu $ . Wreszcie, funkcja tweened akceptuje dodatkowy argument, obiekt zawierający właściwość easing , która odwołuje się do funkcji bounceOut easing dostarczanej przez moduł svelte/easing .

Segment znaczników zawiera element przycisku z atrybutem onclick, który wywołuje metodę aktualizacji powiązania rozmiaru. Po kliknięciu przycisku metoda update zwiększa zmienną store size ze znakiem dolara o trzy. Dodatkowo, element div posiada styl inline zarządzany przez wartość size store znaku dolara. Po uruchomieniu w przeglądarce internetowej użytkownik będzie obserwował następującą prezentację wizualną:

via GIPHY

Przejścia w Svelte

W celu ułatwienia procesu włączania i usuwania elementów w ramach obiektowego modelu dokumentu (DOM) w Svelte, wykorzystuje on dyrektywę znaną jako dyrektywa “transition” wraz z dedykowanym modułem o nazwie “svelte/transition”. Moduł ten oferuje szereg praktycznych funkcji, które mogą być wykorzystywane wraz z dyrektywą “transition” do różnych celów. Na przykład, można zastosować funkcję “blur” zaimportowaną z modułu “svelte/transition”, aby utworzyć efekt zanikania lub zanikania elementu, gdy wchodzi on lub wychodzi z DOM.

 <script>
import { blur } from 'svelte/transition';
</script>

Aby zaimplementować możliwość montowania i odmontowywania elementów z Document Object Model (DOM), należy najpierw wprowadzić flagę logiczną jako właściwość skryptu, która jest początkowo ustawiona na false . Będzie ona służyć jako wskaźnik widoczności elementu na stronie. Korzystając z tej funkcji, programiści mogą efektywnie zarządzać interakcją swojego kodu z DOM, przełączając widoczność określonych elementów w czasie wykonywania.

 <script>
import { blur } from 'svelte/transition';
let visible = false;
</script>

Z pewnością, oto przykład jak to osiągnąć w Vue.js przy użyciu dyrektywy v-if:html export default {data() {return {isBlur: false // ustaw wartość początkową tylko do celów demonstracyjnych};},computed: {/** definiuje niestandardowe klasy CSS na podstawie właściwości isBlur */get blurClass() {return isBlur ? ‘blur’ : ‘’;}};

 {#if visible}
<div>Here I am...</div>
{/if}

Włącz dostarczony fragment kodu do pliku HTML i dołącz go jako część treści swojej strony internetowej. Kod wyświetli akapit z przyciskiem, który przełącza widoczność elementu div zawierającego dodatkowe informacje o produkcie.

 <button on:click={()=>visible=!visible}>
{visible ? "Hide" : "Show"}
</button>

Po wykonaniu kodu w środowisku przeglądarki internetowej oczekuje się następującej prezentacji wizualnej:

via GIPHY

fade, blur, fly, slide, scale, draw i crossfade. Przejścia te są wysoce konfigurowalne i można je konfigurować za pomocą różnych parametrów, takich jak opóźnienie, czas trwania, złagodzenie, krycie i ilość, z których każdy służy do odpowiedniego wzmocnienia lub modyfikacji ich efektów.

Jasne! A co powiesz na to? Oprócz kontrolowania przejść opartych na właściwościach takich jak enter lub exit , Svelte zapewnia bardziej szczegółowe podejście poprzez w i out przejściach. Rozważmy na przykład nasz poprzedni przykład, w którym chcemy, aby element miał efekt rozmycia przy wejściu i efekt przesuwania przy wyjściu. Możemy to osiągnąć, używając odpowiednich przejść w następujący sposób:

 <script>
  import { blur, slide } from 'svelte/transition';
  let visible = false;
  </script>

{#if visible}
<div in:blur out:slide>Here I am...</div>
{/if}

<button on:click={()=>visible=!visible}>
  {visible ? "Hide" : "Show"}
  </button>

W powyższym fragmencie kodu warto zauważyć, że w elemencie div nie ma dyrektywy przejścia. Zamiast tego określono dwa przejścia przy użyciu techniki klatek kluczowych, a mianowicie “blur” i “slide”, które są wskazywane przez właściwości “from” i “to” odpowiednich reguł @keyframe.

via GIPHY

Animating Svelte Elements

First, Last, Invert, Play.Obejmuje on trzy kluczowe argumenty - opóźnienie, czas trwania i złagodzenie - które mają fundamentalne znaczenie dla tworzenia urzekających efektów wizualnych podczas procesów animacji. Aby zilustrować jego funkcjonalność, przeanalizujmy poniższy przykładowy kod.

 <script>
  import { flip } from "svelte/animate";
  let originalList = ["Tomatoes", "Bread", "Fish", "Milk", "Cat food"];
  let shoppingList = [...originalList];
</script>

<div class="container">
  {#each shoppingList as item (item)}
    {@const number = shoppingList.indexOf(item)}
    <div animate:flip>
      {number \\+ 1}. {item}
    </div>
  {/each}
</div>

<button on:click={() => shoppingList = shoppingList.sort()}>Arrange</button>
<button on:click={() => shoppingList = [...originalList]}>Reset</button>

Przedstawiony fragment kodu demonstruje implementację dyrektywy animate w aplikacji Svelte. W tagu