<script>
import {Tween } from 'svelte/motion';
const lightness = new Tween(0);
</script>
<style>
.square {
width: 100px;
height: 100px;
margin-left: 10px;
}
.container {
padding-top: 10px;
width: 120px;
padding-bottom: 10px;
background-color: hotpink;
}
</style>
<div class="container">
<div class="square" style="background: hsl(0, 0%, {lightness.current}%);" ></div>
</div>
<button onclick="{() => lightness.target=100}">白にする</button>
<button onclick="{() => lightness.target=0}">黒にする</button>
import {Tween } from 'svelte/motion';
const lightness = new Tween(0);
<div class="square" style="background: hsl(0, 0%, {lightness.current}%);"
<button onclick="{() => lightness.target=100}">白にする</button>
<script>
import {Tween } from 'svelte/motion';
import {sineIn} from 'svelte/easing';
const lightness = new Tween(0, {
duration: 1000,
easing: sineIn
});
</script>
<style>
.square {
width: 100px;
height: 100px;
margin-left: 10px;
}
.container {
padding-top: 10px;
width: 120px;
padding-bottom: 10px;
background-color: hotpink;
}
</style>
<div class="container">
<div class="square" style="background: hsl(0, 0%, {lightness.current}%);" ></div>
</div>
<button onclick="{() => lightness.target=100}">白にする</button>
<button onclick="{() => lightness.target=0}">黒にする</button>
<script>
import {Spring} from 'svelte/motion';
const spring = new Spring(0);
</script>
<input type="range" bind:value={spring.target} />
<input type="range" bind:value={spring.current} disabled />
const spring = new Spring(0,
{
stiffness: 0.1,
damping: 0.9
});
<script>
import {fade} from 'svelte/transition';
let isShow = true;
</script>
<button on:click={() => isShow = !isShow}>Toggle</button>
{#if isShow}
<div transition:fade>hello</div>
{/if}
<script>
import {fade} from 'svelte/transition';
let isShow = true;
let fadeParams = {
duration: 1000
}
</script>
<button on:click={() => isShow = !isShow}>Toggle</button>
{#if isShow}
<div transition:fade={fadeParams}>hello</div>
{/if}
delay
duration
easing
<script>
import {fade, fly} from 'svelte/transition';
let isShow = true;
</script>
<button onclick={() => isShow = !isShow}>Toggle</button>
{#if isShow}
<div in:fade out:fly={{y: 200}}>hello</div>
{/if}
<div in:fade out:fly={{y: 200}}>hello</div>
<script>
import {crossfade} from 'svelte/transition';
const [send, receive] = crossfade({ duration: 1000 });
const key = "test";
let condition = false;
</script>
<style>
.container {
position: relative;
}
.element
{
position: absolute;
}
</style>
<button onclick="{() => condition = !condition}">クロスフェード</button>
<div class="container">
{#if condition}
<strong class="element" in:send={{key}} out:receive={{key}}>太文字</strong>
{:else}
<small class="element" in:send={{key}} out:receive={{key}}>小文字</small>
{/if}
</div>
const [send, receive] = crossfade({ duration: 1000 });
{#if condition}
<strong class="element" in:send={{key}} out:receive={{key}}>太文字</strong>
{:else}
<small class="element" in:send={{key}} out:receive={{key}}>小文字</small>
<script>
import {flip} from 'svelte/animate';
let items = $state([
{ id:1, text:"A" },
{ id:2, text:"B" },
{ id:3, text:"C" },
]);
function swapItems(a, b)
{
const tmp = items[a];
items[a] = items[b];
items[b] = tmp;
}
function moveUp(index)
{
swapItems(index, index-1);
}
function moveDown(index)
{
swapItems(index, index+1);
}
</script>
{#each items as item, index (item.id) }
<div animate:flip = {{duration: 200}}>
{item.text}
<button disabled={index === 0} onclick="{() => moveUp(index)}">上へ</button>
<button disabled={index === items.length-1} onclick="{() => moveDown(index)}">下へ</button>
</div>
{/each}
import {flip} from 'svelte/animate';
{#each items as item, index (item.id) }
<div animate:flip = {{duration: 200}}>