Rumah hujung hadapan web tutorial js 如何用vue-route实现自动判断左右翻页转场动画

如何用vue-route实现自动判断左右翻页转场动画

Oct 12, 2017 am 10:05 AM
penghakiman automatik

  前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui

因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件

最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得,

  一般的移动端口单页应用在跳转页面时候会有相应的转场动画,比如:

  1. 从当前一级页面跳转二级页面需要展示的转场动画是一级页面向屏幕左边移动消失的同时,

   二级页面从屏幕的右边向左边移动出现。(类似翻书翻到下一页的效果)

  2. 从当前二级页面跳回一级页面需要展示的转场动画是二级页面向屏幕右边移动消失的同时,

   一级页面从屏幕的左边向右边移动出现。类似(翻书翻回到上一页的效果)

  但是出现了一个问题:如何判断当前页面和将要跳转页面之间的层级关系呢?

我的解决办法是:创建页面 (组件)时,在定义页面的router里通过设置页面的path(访问路径 )属性来区分组件之间的层级关系。

比如一个一级页面 (组件) ‘A’ 的访问路径为 ‘/A’ 。他的二级页面 ‘B’ 的访问路径为 ‘/A/B’ .

  那么在跳转页面之前,只需要比较当前页面和将要跳转到的页面的路径深度就可以动态设置转场动画了。

比如 ‘/A/B’的深度 >  ‘/A’ 的深度那么 从B页面跳转到A页面就应该是 效果2:(翻书翻回到上一页的效果).

一 。首先父页面

home.vue:


 
  
 scoped
Salin selepas log masuk
.child-view {
 position: absolute;
 width: 100%;
 height: 100%;
 transition: all .5s ease;
 -webkit-transition: all .5s ease;
 -moz-transition: all .5s ease;
}
Salin selepas log masuk
<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>
Salin selepas log masuk

二 。其次附上我的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,
          },
        }
      });
    }
  }
});
Salin selepas log masuk

Atas ialah kandungan terperinci 如何用vue-route实现自动判断左右翻页转场动画 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar. Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar. Sep 19, 2023 am 09:16 AM

Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar. Semasa membangunkan aplikasi web, anda sering perlu menghantar e-mel untuk berkomunikasi dengan pengguna sama ada pengesahan pendaftaran, penetapan semula kata laluan atau penghantaran pemberitahuan, fungsi e-mel adalah bahagian yang amat diperlukan. Walau bagaimanapun, kadangkala kami tidak dapat memastikan sama ada e-mel benar-benar berjaya dihantar, jadi kami perlu melakukan pengesanan e-mel dan menentukan sama ada e-mel tersebut telah berjaya dihantar. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi ini. 1. Gunakan pelayan SMTP untuk menghantar e-mel Pertama, kita perlu menggunakan SM

Gunakan fungsi File.isDirectory() java untuk menentukan sama ada fail itu wujud dan merupakan jenis direktori Gunakan fungsi File.isDirectory() java untuk menentukan sama ada fail itu wujud dan merupakan jenis direktori Jul 24, 2023 pm 06:57 PM

Gunakan fungsi File.isDirectory() Java untuk menentukan sama ada fail wujud dan daripada jenis direktori Dalam pengaturcaraan Java, anda sering menghadapi situasi di mana anda perlu menentukan sama ada fail wujud dan jenis direktori. Java menyediakan kelas Fail untuk mengendalikan fail dan direktori Fungsi isDirectory() boleh membantu kami menentukan sama ada fail ialah jenis direktori. Fungsi File.isDirectory() ialah kaedah dalam kelas Fail Fungsinya adalah untuk menentukan Fail semasa

Gunakan fungsi Character.isDigit() java untuk menentukan sama ada aksara ialah nombor Gunakan fungsi Character.isDigit() java untuk menentukan sama ada aksara ialah nombor Jul 27, 2023 am 09:32 AM

Gunakan fungsi Java's Character.isDigit() untuk menentukan sama ada aksara ialah aksara angka diwakili dalam bentuk kod ASCII secara dalaman dalam komputer Setiap aksara mempunyai kod ASCII yang sepadan. Antaranya, nilai kod ASCII yang sepadan dengan aksara angka 0 hingga 9 masing-masing adalah 48 hingga 57. Untuk menentukan sama ada aksara ialah nombor, anda boleh menggunakan kaedah isDigit() yang disediakan oleh kelas Aksara dalam Java. Kaedah isDigit() adalah daripada kelas Aksara

Petua Linux: Batalkan lekukan automatik apabila menampal dalam vim Petua Linux: Batalkan lekukan automatik apabila menampal dalam vim Mar 07, 2024 am 08:30 AM

Prakata: vim ialah alat penyuntingan teks yang berkuasa, yang sangat popular di Linux. Baru-baru ini, saya menghadapi masalah aneh apabila menggunakan vim pada pelayan lain: apabila saya menyalin dan menampal skrip bertulis tempatan ke dalam fail kosong pada pelayan, lekukan automatik berlaku. Untuk menggunakan contoh mudah, skrip yang saya tulis secara tempatan adalah seperti berikut: aaabbcccddd Apabila saya menyalin kandungan di atas dan menampalnya ke dalam fail kosong dalam pelayan, apa yang saya dapat ialah: aabbbcccddd Jelas sekali, ini adalah apa yang vim lakukan secara automatik kami. Walau bagaimanapun, automatik ini agak tidak pintar. Catat penyelesaiannya di sini. Penyelesaian: Tetapkan fail konfigurasi .vimrc dalam direktori rumah kami, baharu

Penjanaan lakaran kecil automatik menggunakan JavaScript Penjanaan lakaran kecil automatik menggunakan JavaScript Jun 16, 2023 pm 12:51 PM

Dengan perkembangan Internet, gambar telah menjadi bahagian yang sangat diperlukan dalam laman web. Tetapi apabila bilangan imej meningkat, kelajuan memuatkan imej telah menjadi isu yang sangat penting. Untuk menyelesaikan masalah ini, banyak tapak web menggunakan lakaran kecil untuk memaparkan imej, tetapi untuk menghasilkan lakaran kecil, kita perlu menggunakan alat pemprosesan imej profesional, yang merupakan perkara yang sangat menyusahkan bagi sesetengah orang bukan profesional. Kemudian, menggunakan JavaScript untuk mencapai penjanaan lakaran kecil automatik menjadi pilihan yang baik. Cara menggunakan JavaS

Automount pemacu pada Linux Automount pemacu pada Linux Mar 20, 2024 am 11:30 AM

Jika anda menggunakan sistem pengendalian Linux dan mahu sistem memasang pemacu secara automatik semasa but, anda boleh melakukannya dengan menambahkan pengecam unik peranti (UID) dan laluan titik lekap pada fail konfigurasi fstab. fstab ialah fail jadual sistem fail yang terletak dalam direktori /etc Ia mengandungi maklumat tentang sistem fail yang perlu dipasang apabila sistem bermula. Dengan mengedit fail fstab, anda boleh memastikan pemacu yang diperlukan dimuatkan dengan betul setiap kali sistem dimulakan, sekali gus memastikan operasi sistem yang stabil. Memasang pemacu secara automatik boleh digunakan dengan mudah dalam pelbagai situasi. Sebagai contoh, saya merancang untuk menyandarkan sistem saya kepada peranti storan luaran. Untuk mencapai automasi, pastikan peranti kekal disambungkan ke sistem, walaupun pada permulaan. Begitu juga, banyak aplikasi akan secara langsung

Cara menggunakan kaedah isInfinite() kelas Double untuk menentukan sama ada nombor adalah tak terhingga Cara menggunakan kaedah isInfinite() kelas Double untuk menentukan sama ada nombor adalah tak terhingga Jul 24, 2023 am 10:10 AM

Cara menggunakan kaedah isInfinite() kelas Double untuk menentukan sama ada nombor adalah infiniti Di Java, kelas Double ialah kelas pembalut yang digunakan untuk mewakili nombor titik terapung. Kelas ini menyediakan satu siri kaedah yang boleh beroperasi dengan mudah pada nombor titik terapung. Antaranya, kaedah isInfinite() digunakan untuk menentukan sama ada nombor titik terapung adalah tak terhingga. Infiniti merujuk kepada infiniti positif dan infiniti negatif yang sangat besar sehingga melebihi julat yang boleh diwakili oleh nombor titik terapung. Dalam komputer, nilai maksimum nombor titik terapung boleh diperolehi melalui kelas Double

PHP dan PHPMAILER: Bagaimana untuk melaksanakan penapisan automatik penghantaran mel? PHP dan PHPMAILER: Bagaimana untuk melaksanakan penapisan automatik penghantaran mel? Jul 21, 2023 am 09:25 AM

PHP dan PHPMAILER: Bagaimana untuk melaksanakan penapisan automatik penghantaran mel? Dalam masyarakat moden, e-mel telah menjadi salah satu cara penting untuk orang berkomunikasi. Walau bagaimanapun, dengan populariti dan penggunaan e-mel yang meluas, jumlah spam juga telah menunjukkan trend pertumbuhan yang meletup. E-mel spam bukan sahaja membuang masa dan sumber rangkaian pengguna, tetapi juga boleh membawa virus dan tingkah laku pancingan data. Oleh itu, apabila membangunkan fungsi penghantaran e-mel, ia menjadi penting untuk menambah fungsi menapis spam secara automatik. Artikel ini akan memperkenalkan cara menggunakan PHP dan PHPMai

See all articles