亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vue.js 中不同路由器視圖之間無法發生動畫

Vue.js 中不同路由器視圖之間無法發生動畫

qq_笑_17 2024-01-18 15:03:32
總結 我正在尋找一種解決方案來在 Vue 中跨兩個不同的路由器視圖創建動畫。我遇到的問題是,當瀏覽器切換到另一個路由器視圖時,它會重新渲染頁面。所以當瀏覽器重新渲染時動畫就會消失。動畫基本上,該應用程序有兩個不同的頁面:homepage和aboutpage。當用戶單擊藍色菜單按鈕時,綠色導航菜單將從左向右滑動,直到覆蓋整個屏幕。該菜單有兩個鏈接:about和home。如果用戶單擊“關于”,白色覆蓋層將從左側移動并覆蓋整個屏幕,然后移動到右側并消失。關于頁面消失后顯示。這是codepen示例,演示了我想要實現的動畫效果(該演示沒有使用路由器)。 https://codepen.io/wl1664209734/pen/qBamXEL下面是在codepen中的vue模板中重新創建動畫的代碼我的代碼的解釋這里是codeSandbox鏈接,我在這個沙箱中重現了問題,我認為這將幫助人們更好地理解我的問題。 https://codesandbox.io/s/vue-page-shift-anime-yp1yf在這個沙箱中,我使用了 vue 模板。它包括一個主要組件:App.vue和 5 個其他組件:Homepage.vue、Aboutpage.vue、Background.vue、Navbar.vue、Navigation.vue。背景包含導航欄和導航以形成應用程序的靜態元素。主頁和關于頁面都有背景和獨特的標題。Homepage的標題是 HOME,Aboutpage的標題是 ABOUT。然后,我在 main.js 中配置路由器,并將 router-view 標簽放入 App.vue中。我還將路由器鏈接添加到Navigation.vue。我向 router-link 添加了一個點擊事件(頁面移位),該事件被發送到Background.vue。因此,當用戶單擊鏈接時,它將調用 Background.vue中的pageShift方法,導致動畫發生。
查看完整描述

1 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

問題是您通過Background.vue. 不要那樣做。將其包含在App.vue.


當路由更改時,<router-view />的內容將填充該路由組件的全新實例(在(或) 中的routes數組中設置)。所以,而不是:router/index.ts.js


<template>

  <div id="app">

    <router-view></router-view>

  </div>

</template>

...你App.vue應該包含:


<template>

  <div id="app">

    <navigation />

    <router-view />

  </div>

</template>

如果您不想在頁面更改時重新呈現頁面的任何其他部分(某些側邊欄,可能是頁腳),也請將它們包含在App.vue. 因此,使用頁腳和側邊欄,它可能看起來像:


<template>

  <div id="app">

    <header>

      <navigation />

    </header>

    <main>

      <sidebar />

      <router-view />

    </main>

    <footer />

  </div>

</template>

當路線更改時,只會<router-view />重新渲染,并相應地執行路線上設置的動畫。直接放置的其他布局元素App.vue將不會重新渲染。顯然,如果您根據當前路由動態更改它們的內容,這些部分將會更新,但它們的基本 DOM 元素將保持不變。


隱含地,您應該<navigation />從您的視圖中刪除以及您決定直接放入的任何其他內容App.vue。


查看完整回答
反對 回復 2024-01-18
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號