ホームページ ウェブフロントエンド jsチュートリアル vue-routeを使用して左右のページめくりのトランジションアニメーションを自動決定する方法

vue-routeを使用して左右のページめくりのトランジションアニメーションを自動決定する方法

Oct 12, 2017 am 10:05 AM
判断 自動

少し前にモバイルスパプロジェクトを作りました。技術はvue + vue-router + vuex + mint-uiに基づいています

vue-cliスキャフォールディングのWebpackテンプレートを使用しているため、すべてのページで.vueを含むファイルを使用しています。接尾辞をコンポーネントとして追加します

最近、会社のプロジェクトが比較的少なくなり、ようやく vue-router を使用した私の小さな経験をいくつか記録する時間ができました

一般的なモバイル ポートの単一ページ アプリケーションには、ページにジャンプするときに対応する遷移アニメーションがあります。

1. 現在の第 1 レベルのページから第 2 レベルのページにジャンプするときに表示する必要がある遷移アニメーションは、第 1 レベルのページが画面の左側に移動して消えるときのものです。 ,

2階層目のページが画面の右から左に移動して表示されます。 (本を次のページにめくったときの効果と似ています)

2. 現在の第 2 レベルのページから第 1 レベルのページに戻るときに表示する必要がある遷移アニメーションは、第 2 レベルのページが表示されるときに表示されます。ページが画面の右側に移動して消えます。

第 1 レベルのページが画面の左から右に移動して表示されます。 (本を前のページに戻す効果) と似ています

しかし、次のような疑問が生じます: 現在のページとジャンプするページの間の階層関係をどのように判断するか?

私の解決策は、ページ(コンポーネント)を作成するときに、定義ページのルーターでページのpath(アクセスパス)属性を設定し、コンポーネント間の階層関係を区別することです。

例えば、第1レベルのページ(コンポーネント)‘A’のアクセスパスは、‘/A’ となります。彼の 2 番目のページ 'B' のアクセス パスは '/A/B' です。

次に、そのページにジャンプする前に、現在のページとジャンプ先のページのパスの深さを比較するだけで済みます。トランジションアニメーションを動的に設定します。

たとえば、深さが '/A/B' > '/A' の場合、B ページから A ページへのジャンプは 効果 2: (turnこの本は前のページに戻ります)。

1 つ。まず親ページ

home.vue:


 
  
 scoped
ログイン後にコピー
.child-view {
 position: absolute;
 width: 100%;
 height: 100%;
 transition: all .5s ease;
 -webkit-transition: all .5s ease;
 -moz-transition: all .5s ease;
}
ログイン後にコピー
<em><em><em>.rightin-enter,<br/>.leftin-leave-active {<br/> opacity: 0;<br/> transform: translate3d(50% 0, 0);<br/> -webkit-transform: translate3d(50%, 0, 0);<br/> -moz-transform: translate3d(50%, 0, 0);<br/>}<br/><br/>.leftin-enter,<br/>.rightin-leave-active {<br/> opacity: 0;<br/> transform: translate3d(-50% 0, 0);<br/> -webkit-transform: translate3d(-50%, 0, 0);<br/> -moz-transform: translate3d(-50%, 0, 0);<br/>}<br/><br/><span style="color: #0000ff;"></style></span></em></em></em>
ログイン後にコピー

2 つ。次に、main.js フラグメント (ページにジャンプする前に遷移アニメーションを動的に設定するために使用) を添付します

main.js:


//进入路由之前设置拦截器let noLoginList = ["login", "register", "forget", "home", "classify", "goodsDetial"];
router.routeInfo.beforeEach((to, from, next) => {
  let user = sessionStorage.getItem(&#39;user&#39;);  //如果要去登录页面
  if (noLoginList.indexOf(to.name) >= 0) {    if (!user || user == &#39;&#39;) {      //未登录的状态通行      next();      return;
    } else {      if (["login", "register", "forget"].indexOf(to.name) >= 0) {        //已登录的状态去首页        next({
          name: &#39;home&#39;
        });        return;
      } else {        //已登录的状态去首页        
      next();        
      return;
      }
    }
  } else {    //去登录页面以外的页面(以下是本文关键代码)
    if (user && user != &#39;&#39;) {      //判断是否为需要缓存组件,如果是添加组件名到数组
      if (to.meta.keepAlive) {
        const toName = to.name;
        let keepLi = store.getters.getKeepAlList;
        keepLi.indexOf(toName) < 0 ? keepLi.push(toName) : &#39;&#39;;
        store.commit(&#39;SET_KEEPALLIST&#39;, keepLi);
      }      //根据路径名深度设置转场动画类型
      store.commit(&#39;SET_TRANSNA&#39;, (to.path.split(&#39;/&#39;).length < from.path.split(&#39;/&#39;).length ? &#39;leftin&#39; : &#39;rightin&#39;));
      next();
    } else {
      let toWhere = router.nameList.indexOf(to.name) >= 0 ? to : {name: &#39;home&#39;};
      next({
        name: &#39;login&#39;,
        params: {
          jumpTo: {
            name: toWhere.name,
            params: toWhere.params,
            query: toWhere.query,
          },
        }
      });
    }
  }
});
ログイン後にコピー

以上がvue-routeを使用して左右のページめくりのトランジションアニメーションを自動決定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。 PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。 Sep 19, 2023 am 09:16 AM

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。 Webアプリケーションを開発する際、登録確認やパスワードのリセット、通知など、ユーザーとのコミュニケーションのためにメールを送信する必要があることが多く、メール機能は欠かせません。ただし、電子メールが実際に正常に送信されたかどうかを確認できない場合があるため、電子メールの検出を実行して、電子メールが正常に送信されたかどうかを判断する必要があります。この記事では、PHPを使用してこの機能を実装する方法を紹介します。 1. SMTP サーバーを使用して電子メールを送信します。まず、SM を使用する必要があります。

Java の File.isDirectory() 関数を使用して、ファイルが存在するかどうか、またディレクトリ タイプであるかどうかを確認します。 Java の File.isDirectory() 関数を使用して、ファイルが存在するかどうか、またディレクトリ タイプであるかどうかを確認します。 Jul 24, 2023 pm 06:57 PM

Java の File.isDirectory() 関数を使用して、ファイルが存在し、ディレクトリ タイプであるかどうかを確認します。Java プログラミングでは、ファイルが存在し、ディレクトリ タイプであるかどうかを確認する必要がある状況によく遭遇します。 Java には、ファイルやディレクトリを操作するための File クラスが用意されており、isDirectory() 関数は、ファイルがディレクトリ タイプであるかどうかを判断するのに役立ちます。 File.isDirectory() 関数は File クラスのメソッドであり、その機能は現在のファイルを確認することです。

Java の Character.isDigit() 関数を使用して、文字が数字かどうかを判断します Java の Character.isDigit() 関数を使用して、文字が数字かどうかを判断します Jul 27, 2023 am 09:32 AM

文字が数字かどうかを判断するには、Java の Character.isDigit() 関数を使用します。文字はコンピュータ内部で ASCII コードの形式で表されます。各文字には対応する ASCII コードがあります。このうち、0~9の数字に対応するASCIIコードの値は、それぞれ48~57となります。文字が数値かどうかを判断するには、Java の Character クラスによって提供される isDigit() メソッドを使用できます。 isDigit() メソッドは Character クラスに属します

Linux のヒント: vim に貼り付けるときに自動インデントをキャンセルする Linux のヒント: vim に貼り付けるときに自動インデントをキャンセルする Mar 07, 2024 am 08:30 AM

はじめに: vim は強力なテキスト編集ツールであり、Linux で非常に人気があります。最近、別のサーバーで vim を使用しているときに、奇妙な問題が発生しました。ローカルで作成したスクリプトをコピーしてサーバー上の空のファイルに貼り付けると、自動インデントが発生しました。簡単な例を使用すると、ローカルで作成したスクリプトは次のとおりです: aaabbbcccddd。上記の内容をコピーしてサーバーの空のファイルに貼り付けると、取得されるものは次のとおりです: aabbbcccddd。明らかに、これは vim が自動的に行うことです。インデントをフォーマットします。ただし、このオートマチックは少し知性がありません。解決策をここに記録します。解決策: ホーム ディレクトリに .vimrc 構成ファイルを設定します。

JavaScriptを使用した自動サムネイル生成 JavaScriptを使用した自動サムネイル生成 Jun 16, 2023 pm 12:51 PM

インターネットの発展に伴い、Web ページに写真は欠かせないものになりました。しかし、画像の数が増えると、画像の読み込み速度が非常に重要な問題になります。この問題を解決するために、多くの Web サイトではサムネイルを使用して画像を表示していますが、サムネイルを生成するには専門的な画像処理ツールを使用する必要があり、専門家以外の人にとっては非常に面倒です。その場合、JavaScript を使用してサムネイルの自動生成を実現するのが良い選択になります。 JavaSの使い方

Linux でのドライブの自動マウント Linux でのドライブの自動マウント Mar 20, 2024 am 11:30 AM

Linux オペレーティング システムを使用していて、システムが起動時にドライブを自動的にマウントするようにしたい場合は、デバイスの一意の識別子 (UID) とマウント ポイントのパスを fstab 構成ファイルに追加することでこれを行うことができます。 fstab は、/etc ディレクトリにあるファイル システム テーブル ファイルで、システムの起動時にマウントする必要があるファイル システムに関する情報が含まれています。 fstab ファイルを編集すると、システムを起動するたびに必要なドライブが正しくロードされるようになり、システムの安定した動作が保証されます。ドライバーの自動マウントはさまざまな場面で便利に使えます。たとえば、システムを外部ストレージ デバイスにバックアップする予定です。自動化を実現するには、起動時であってもデバイスがシステムに接続されたままであることを確認してください。同様に、多くのアプリケーションは直接

Double クラスの isInfinite() メソッドを使用して、数値が無限かどうかを判断する方法 Double クラスの isInfinite() メソッドを使用して、数値が無限かどうかを判断する方法 Jul 24, 2023 am 10:10 AM

Double クラスの isInfinite() メソッドを使用して数値が無限かどうかを判断する方法 Java では、Double クラスは浮動小数点数を表すために使用されるラッパー クラスです。このクラスは、浮動小数点数を便利に操作できる一連のメソッドを提供します。このうち、isInfinite() メソッドは、浮動小数点数が無限かどうかを判断するために使用されます。無限大とは、浮動小数点数で表現できる範囲を超えるほど大きい正の無限大と負の無限大を指します。コンピュータでは、浮動小数点数の最大値は Double クラスを通じて取得できます。

PHP と PHPMAILER: メール送信の自動フィルタリングを実装するにはどうすればよいですか? PHP と PHPMAILER: メール送信の自動フィルタリングを実装するにはどうすればよいですか? Jul 21, 2023 am 09:25 AM

PHP と PHPMAILER: メール送信の自動フィルタリングを実装するにはどうすればよいですか?現代社会において、電子メールは人々がコミュニケーションを図るための重要な手段の 1 つとなっています。しかし、電子メールの普及と普及に伴い、スパムの量も爆発的な増加傾向を示しています。スパムメールはユーザーの時間とネットワーク リソースを浪費するだけでなく、ウイルスやフィッシング行為を引き起こす可能性があります。そのため、メール送信機能を開発する際には、迷惑メールを自動的にフィルタリングする機能を追加することが重要になります。この記事ではPHPとPHPMaiの使い方を紹介します。

See all articles