Vue.js 相關知識(動畫)

来源:https://www.cnblogs.com/writerW/archive/2018/05/21/9064734.html
-Advertisement-
Play Games

1. 簡介 Vue 在插入、更新或移除 DOM 時,提供多種不同方式的過渡效果,並提供 transition 組件來實現動畫效果(用 transition 組件將需執行過渡效果的元素包裹) 語法:<transition name=””>元素或組件(進入或離開時會有動畫效果)</transition> ...


1. 簡介

Vue 在插入、更新或移除 DOM 時,提供多種不同方式的過渡效果,並提供 transition 組件來實現動畫效果(用 transition 組件將需執行過渡效果的元素包裹)

語法:<transition name=””>元素或組件(進入或離開時會有動畫效果)</transition>

name 屬性是執行動畫效果的 css 類名,與6個 css 類產生關聯:

假設 transition 的 name為v,transition 組件會自動在不同時機添加如下6個類:

  • v-enter:定義過渡開始狀態的樣式
  • v-enter-active:定義過渡的狀態,該類常被用來定義過渡的過程時間、延遲、曲線函數。
  • v-enter-to:定義過渡結束狀態的樣式(vue 2.1.8以上版本)
  • v-leave:定義離開之前的樣式
  • v-leave-active:定義從0到1過程中的樣式
  • v-leave-to:定義到達目的地之後的效果

2. 執行動畫的情況

動畫只在2個節點發生:

  • 進入:從不顯示到顯示(v-show),從無到有。
  • 離開:從顯示到不顯示(v-show),從有到無。

條件渲染(使用v-if):根據條件控制元素添加、刪除

條件展示(使用v-show):根據條件控制元素顯示、隱藏

動態組件(使用:is):多個組件切換(涉及到組件顯示、隱藏)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src="vue.js"></script>    
    <style type="text/css">
        .v-enter{opacity: 0}
        .v-enter-to{opacity: 1}
        .v-enter-active{transition: all 1s}
        .v-leave{opacity: 1}
        .v-leave-to{opacity: 0}
        .v-leave-active{transition:all 1s}
    </style>
</head>
<body>
    <div id="app">
        <div class="title">
            <h3 @click="isshow=!isshow">標題</h3>
        </div>
        <transition name="v">
            <div class="content" v-show="isshow">
                <p>內容</p>
            </div>
        </transition>
    </div>
    <script type="text/javascript">
        let app = new Vue({
            el:"#app",
            data:{
                isshow:true
            }
        })    
        app.$mount('#app')
    </script>
</body>
</html>

可將<style>中的內容簡化為:

<style type="text/css">
  .v-enter,.v-leave-to{opacity: 0}
  .v-enter-active,.v-leave-active{transition: all 1s}
</style>

3. transition-group

  • 若給一個元素綁定動畫效果,使用<transition>組件
  • 若給多個元素綁定動畫效果,使用<transition-group>組件

為了區分元素列表,需要給子元素增加:key屬性,表示每個子元素的索引

語法:<transition-group name=””> <元素1 :key=””></元素1> <元素2 :key=””></元素2> </transition-group>

4. 內置 css 類實現過渡

除在 transition 組件上增加 name 屬性,來實現動畫效果外,Vue還提供6個內置的類,可直接在transition組件上使用(為了相容 animate.css 框架)

https://daneden.github.io/animate.css/

  • enter-class:相當於.v-enter
  • enter-active-class:相當於.v-enter-active
  • enter-to-class:(2.1.8之後)
  • leave-class
  • leave-active-class
  • leave-to-class:(2.1.8之後)

例:結合vue.js和animate.css動畫框架實現一些動態效果

註:無需指定開始、結束狀態時的css樣式(animate.css中已指定)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" type="text/css" href="animate.css">
    <script type="text/javascript" src="vue.js"></script>    
    <style type="text/css">
        .dialog{
            width: 300px;
            height: 300px;
            background: #333;
            color: #fff;
        }
    </style>
</head>
<body>
    <div id="app">
        <button @click="isshow=!isshow">按鈕</button>
        <transition enter-active-class="animated bounceInDown" leave-active-class="animated bounceOutUp">
            <div class="dialog" v-show="isshow">內容</div>
        </transition>
    </div>
    <script type="text/javascript">
        let app = new Vue({
            el:"#app",
            data:{
                isshow:false
            }
        })            
    </script>
</body>
</html>

5. 鉤子函數實現過渡

先指定不同階段執行的js函數,在該函數中實現該階段的css動畫(通常結合 velocity.js、move.js 等JavaScript動畫框架實現)。在鉤子函數中,會自動將執行過渡效果的元素傳遞到鉤子函數中。

語法:

<transition
  v-on:before-enter=”beforeEnter”
  v-on:enter=”enter”
  v-on:after-enter=”afterEnter”
  v-on:enter-cancelled=”enterCancelled”
  v-on:before-leave=”beforeLeave”
  v-on:leave=”leave”
  v-on:after-leave=”afterLeave”
  v-on:leave-cancelled=”leaveCancelled”> 
</transition>

例子:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/velocity.min.js"></script>
    <script type="text/javascript" src="vue.js"></script>    
    <style type="text/css">
        .dialog{
            width: 300px;
            height: 300px;
            background: #333;
            color: #fff;
        }
    </style>
</head>
<body>
    <div id="app">
        <button @click="isshow=!isshow">按鈕</button>
        <transition v-on:before-enter="beforeEnter" v-on:enter="Enter">
            <div class="dialog" v-show="isshow">內容</div>
        </transition>
    </div>
    <script type="text/javascript">
        let app = new Vue({
            el:"#app",
            data:{
                isshow:false
            },
            methods:{
                beforeEnter(el){
                    el.style.opacity = 0;
                },
                Enter(el){
                    Velocity(el,{opacity:1,fontSize:"2em"},{duration:1000})
                    Velocity(el,{backgroundColor:"#666"})
                }
            }
        })            
    </script>
</body>
</html>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 敏捷開發分為幾個不同的門派,如:Scrum,XBreed,極限編程(XP Extreme Programming)和水晶方法等。 參考資料:《iOS感測器應用開發最佳實踐》 ...
  • 一、為什麼Cookie需要防篡改 為什麼要做Cookie防篡改,一個重要原因是 Cookie中存儲有判斷當前登陸用戶會話信息(Session)的會話票據 SessionID和一些用戶信息 。 當發起一個HTTP請求,HTTP請求頭會帶上Cookie,Cookie裡面就包含有SessionID。 後端 ...
  • canvas是HTML5的新元素之一。使用canvas可以直接在HTML上進行圖形操作,所以它具有極大的應用價值。canvas元素本身不具有繪圖能力,它需要藉助JavaScript來實現繪圖功能。 canvas的限制: canvas繪製的圖形是靜態的,如果要讓所畫的圖形動起來,則需要畫出每一幀的圖形 ...
  • 需具備js基礎知識以及canvas相關方法(可查閱相關文檔) 下麵是一篇有關js與canvas的背景特效 基於面向過程的思維 ...
  • 1. 簡介 路由,工作原理與路由器相似(路由器將網線匯流排的IP分發到每一臺設備上),Vue中的路由根據用戶在網頁中的點擊,將其引導到對應的頁面。 2. 使用步驟 安裝vue-router或者直接引入vue-router.js(下載地址:https://router.vuejs.org/) 例:SPA ...
  • 什麼是 HTML? * HTML 超文本標記語言的縮寫(**H**yper **T**ext **M**arkup **L**anguage) * HTML 並不是編程語言,而是一種標記語言(markup language) * 標記 <英文單詞或者字母>稱為標記,一個HTML頁面都是由各種標記組... ...
  • jquery的.serializeArray()方法可以獲取形如以下 name value組成的對象數組,如果我們想得到key為name,value為value的json對象,則如下轉換: 但是這麼轉換有一個弊端,就是checkbox,覆選框有多個name相同的值,最後只留下了最後一個,如果想把覆選 ...
  • 摘要: 給marker、lable、circle等Overlay添加事件很簡單,直接addEventListener即可。那麼,自定義覆蓋物的事件應該如何添加呢?我們一起來看一看~ 一、定義構造函數並繼承Overlay 二、初始化自定義覆蓋物 三、繪製覆蓋物 四、添加覆蓋物 五、給自定義覆蓋物添加事 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...