👅

Wix Studio(Velo)での連続したスライド・アニメーション

2024/02/18に公開

Introduction

Wix Studioでのサイト制作を時折行っているのですが、クライアントからのリクエストで多いアニメーションがWix Studioo(以降、ノーコードでのデザインをこのように呼称します)内のプリセットでは行えない場合があります。

連続したスライド・アニメーション

呼び名がわからないので、ここでは「連続したスライド・アニメーション」と呼びます。
流通している呼び名があれば教えてください。

アニメ-ションの概要は以下です。

  • 初期は何も表示されていない状態
  • プレースホルダ(べた塗りの矩形領域)が左からスライド-インする
  • プレースホルダが右へスライド-アウトすると、コンテンツが表示されている

実装

Wix Studio側での設定

  • 任意のコンテンツを配置
  • コンテナを追加しコンテンツに重なるようにプレースホルダを配置
  • それぞれにidを付与(例としてコンテンツを#content、プレースホルダを#placeholderとします)
  • それぞれデフォルト値をHiddenにする

Velo側での記述

setTimeout内にアニメーションに関する処理を記述します。
タイムアウト値はトリガーとなっている処理から起算したミリ秒で設定します。
下記の例では、画面が表示されたとき(onReady)から1秒後にアニメーションが開始されます。

スクロールしないと表示されないコンテンツの場合はonViewportEnterに関数を設定し、その中でsetTimeoutから記述します。さらにonViewportLeaveで$w('#placeholder').hide()$w('#content').hide()を設定します。

$w.onReady(function () {
    setTimeout(async () => {
        await $w('#placeholder').show('slide', {
            direction: 'left',
            duration: 500,
        })
        await $w('#placeholder').hide('slide', {
            direction: 'right',
            duration: 500,
        })
    }, 1000)
    setTimeout(async () => {
        await $w('#content').show()
    }, 1500)
}

以上で連続するアニメーションの記述ができます。

Conclusion

要点としては、Veloで記述できるshow()は、Wix Studioで設定できるアニメーションを実行できるという点と、show()はPromiseで返却されるという点です。
async/awaitを用いることで連続した処理を行うことができます(awaitしないとアニメーションが競合し意図しない挙動をみせます)

殴り書きで文面でのみ記載しているのでイメージしにくいかと思います。
機会があれば画像など差し込んで読みやすくしようと思います。

Discussion