経路と重なり要素に対するSvelte転移
6833 ワード
Svelteの移行システムは使いやすさのために賞賛されますが、それはあなたのためにすべてを処理しません.いくつかの特別な注意を必要とする1つの一般的なケースは、同じスペースを占有することになっている両方の要素間の遷移です.
同じ場所にスムーズに移行する要素の代わりに、両者は同時にDOMに存在するので、遷移は実行されている間、ブラウザはもう一方の要素の横にある要素をレンダリングします.出てくる要素が消えると、新しい要素が正しい場所に飛び出す.
対話的な例のためのView this post on the website.
これは最も見苦しいですが、CSSグリッドの簡単なアプリケーションで修正するのはかなり簡単です.
コンテナ要素は1行1列のグリッドです.すべての子要素は最初の行と列に強制されるので、重複します.(これがなければ、ブラウザは間違いを犯し、余分なグリッドセルを追加します)
その後、ちょうどあなたの要素の移行を設定し、行く準備が整いました!
経路遷移
この同じテクニックは、単一のページ・アプリケーションのルート間の遷移を容易にするために用いることができる.以下はtinroルータを使用した例です.
私は将来のポストでより高度な遷移技術をカバーします.読書ありがとう!
同じ場所にスムーズに移行する要素の代わりに、両者は同時にDOMに存在するので、遷移は実行されている間、ブラウザはもう一方の要素の横にある要素をレンダリングします.出てくる要素が消えると、新しい要素が正しい場所に飛び出す.
対話的な例のためのView this post on the website.
これは最も見苦しいですが、CSSグリッドの簡単なアプリケーションで修正するのはかなり簡単です.
コンテナ要素は1行1列のグリッドです.すべての子要素は最初の行と列に強制されるので、重複します.(これがなければ、ブラウザは間違いを犯し、余分なグリッドセルを追加します)
その後、ちょうどあなたの要素の移行を設定し、行く準備が整いました!
<style>
.transition-container {
display: grid;
template-grid-rows: 1;
template-grid-columns: 1;
}
.transition-container > * {
grid-row: 1;
grid-column: 1;
}
</style>
<div class="transition-container">
{#if enabled}
<h1 in:fly={{ x: -200 }} out:fade>Enabled!</h1>
{:else}
<h1 in:fly={{ x: -200 }} out:fade>Disabled!</h1>
{/if}
</div>
対話的な例のためのView this post on the website.経路遷移
この同じテクニックは、単一のページ・アプリケーションのルート間の遷移を容易にするために用いることができる.以下はtinroルータを使用した例です.
<script>
import { Route } from 'tinro';
import { fade } from 'svelte/transition';
</script>
<style>
#app {
display: grid;
height: 100%;
width: 100%;
overflow: auto;
grid-template:
"nav" 3rem
"main" 1fr
/ auto;
}
nav {
grid-area: nav;
}
main {
grid-area: main;
display: grid;
template-grid-rows: 1;
template-grid-columns: 1;
}
/* use :global since the Route element may be in another component */
main > :global(*) {
grid-row: 1;
grid-column: 1;
}
</style>
<div id="app">
<nav>Nav Bar</nav>
<main>
<Route path="/">
<div transition:fade>page</div>
</Route>
<Route path="/:post" let:meta>
{#key meta.match}
<div transition:fly={{ x: 200 }}>{meta.params.post}</div>
{/key}
</Route>
</main>
</div>
対話的な例のためのView this post on the website.私は将来のポストでより高度な遷移技術をカバーします.読書ありがとう!
Reference
この問題について(経路と重なり要素に対するSvelte転移), 我々は、より多くの情報をここで見つけました https://dev.to/dimfeld/svelte-transitions-for-routes-and-overlapping-elements-3h4dテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol