jQuery 源碼解析(三十一) 動畫模塊 便捷動畫詳解

来源:https://www.cnblogs.com/greatdesert/archive/2020/02/23/12120996.html
-Advertisement-
Play Games

jquery在$.animate()這個介面上又封裝了幾個API,用於進行匹配元素的便捷動畫,如下: $(selector).show(speed,easing,callback) ;如果被選元素已被隱藏,則顯示這些元素 $(selector).hide(speed,easing,callback) ...


jquery在$.animate()這個介面上又封裝了幾個API,用於進行匹配元素的便捷動畫,如下:

  • $(selector).show(speed,easing,callback)        ;如果被選元素已被隱藏,則顯示這些元素   
  • $(selector).hide(speed,easing,callback)         ;如果被選的元素已被顯示,則隱藏該元素  
  • $(selector).toggle(speed,easing,callback)     ;切換元素的可見狀態,如果被選元素可見,則隱藏這些元素,如果被選元素隱藏,則顯示這些元素。

 writer by:大沙漠 QQ:22969969

  • $(selector).slideDown(speed,easing,callback);      ;向下滑動元素。
  • $(selector).slideUp(speed,easing,callback);           ;向上滑動元素
  • $(selector).slideToggle(speed,easing,callback);     ;在 slideDown() 與 slideUp() 方法之間進行切換。
  • $(selector).fadeIn(speed,easing,callback);           ;顯示已隱藏的元素,慢慢的變淡,直至消失。
  • $(selector).fadeOut(speed,easing,callback);        ;隱藏可見元素,慢慢的顯示,直至完全可見
  • $(selector).fadeToggle(speed,easing,callback);    ;在fadeIn()與fadeOut()方法之間進行切換。如果元素已淡出,則fadeToggle()會向元素添加淡入效果。如果元素已淡入,則fadeToggle()會向元素添加淡出效果。

參數都是一樣的:

  • speed   ;動畫持續的時間,預設為0,可設為"slow"、"normal"、"fast"或毫秒數
  • easing   ;動畫函數,支持現行緩動函數linear和餘弦緩動函數swing,預設是swing
  • callback  ;動畫執行完之後,要執行的函數

舉個例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
    <style>
        html,body,div,p{margin:0;padding:0;}
        div{width: 200px;height: 50px;float: left;margin:20px 20px 0 20px;}
        p{width: 200px;height: 50px;background: #f0c;border-radius: 4px;}
        select{border-color: #dcdfe6;height: 40px;line-height: 40px;padding:0 15px;font-size: 16px;margin-top: 20px;border-radius: 4px;}
        option{font-size: 14px;line-height: 34px;padding:0 20px;color: #606266;height: 34px;display: }
    </style>
</head>
<body>    
    <div><p></p></div><select></select>
    <script>
        //給select新增下拉選項
        ['show','hide','toggle','slideDown','slideUp','slideToggle','fadeIn','fadeOut','fadeToggle'].forEach(function(val){
            $('select').append(`<option value="${val}">${val}</option>`)
        })
        //監聽select的選擇事件,執行p元素對應的動畫事件
        $('select').change(function(){
            $('p')[$(this).val()](1000,'swing');
        })
    </script>
</body>
</html>

效果如下:

由於不需要載入插件,只要一個jQuery就可以實現這些動畫了,所以使用起來是很方便的。

內部實現就是對於$.animate()的封裝而已,如下:

var fxAttrs = [
        // height animations
        [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],         //高度動畫
        // width animations
        [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],         //寬度動畫
        // opacity animations
        [ "opacity" ]                                                                     //透明度
    ];
function genFx( type, num ) {             //負責為便捷方法生成動畫樣式集 
    var obj = {};

    jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
        obj[ this ] = type;
    });

    return obj;
}
//比如:getFx('show',1)生成的動畫樣式集合為:Object { height: "show", marginTop: "show", marginBottom: "show", paddingTop: "show", paddingBottom: "show" }

jQuery.each({
    slideDown: genFx( "show", 1 ),
    slideUp: genFx( "hide", 1 ),
    slideToggle: genFx( "toggle", 1 ),
    fadeIn: { opacity: "show" },
    fadeOut: { opacity: "hide" },
    fadeToggle: { opacity: "toggle" }
}, function( name, props ) {
    jQuery.fn[ name ] = function( speed, easing, callback ) {     //新增slideDown、slideUp、slideToggle、fadeIn、fadeOut、fadeToggle便捷方法
        return this.animate( props, speed, easing, callback );
    };
});

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

-Advertisement-
Play Games
更多相關文章
  • 迴圈遍歷是寫程式很頻繁的操作,JavaScript 提供了很多方法來實現。 這篇文章將分別總結數組和對象的遍歷方法,新手可以通過本文串聯起學過的知識。 數組遍歷 方法一:for 迴圈 for 迴圈是使用最多,也是性能優化最好的一種遍歷方式。 ` 方法 方法 方法是 ES5 新增,專為下麵這種累加操作 ...
  • Vuex和localStorage、sesstionStorage的區別,應用場景。vuex的State、Getter、Mutation、Action、Module等技術知識點掌握。 ...
  • @charset "utf-8";html,body,a,h1,h2,h3,h4,h5,h6,p,a,b,i,em,s,u,dl,dt,dd,ul,ol,li,strong,span,table,th,tr,td,img,div,form,fieldset,legend,input,button,s ...
  • DOM(Document Object Model)文檔對象模型,針對Html和XML的文檔的對象API,是一項 W3C (World Wide Web Consortium) 標準。文檔對象模型(DOM)是中立於平臺和語言的介面,它允許程式和腳本動態地訪問、更新文檔的內容、結構和樣式。本文主要以一... ...
  • css3和css有什麼區別?簡單來講css3是css的升級版本,css3新增樣式有圓角效果、圖形化邊界、塊陰影與文字陰影、使用RGBA實現透明效果、漸變效果、使用@Font-Face實現定製字體、多背景圖、文字或圖像的變形處理(旋轉、縮放、傾斜、移動)、多欄佈局、媒體查詢等。下麵是該節總結練習:邊框... ...
  • |這個作業屬於哪個課程| "軟體工程" | | | | |這個作業要求在哪裡| "第一次結對作業" | |這個作業的目標|數據可視化| |作業正文|見下方| |其他參考文獻|無| 壹 天大地大友誼最大 ================== 魏忠傑 學號: 211706203 博客地址: "魏忠傑" ...
  • 一、機械時鐘 1.最終效果 用 CSS 繪製的機械時鐘效果如下: HTML 中代碼結構為: <body> <div class="clock"> <ul class="min"></ul> <ul class="hour"></ul> <ul class="numbers"></ul> <ul cl ...
  • index.html 頭部區結構和樣式 效果圖 靜態樣式 index.html中的部分 <!-- 頭部 --> <div class="header"> <div class="container"> <!-- h1標簽是為了搜索引擎優化,表示重要 但是頁面內不要出現太多 --> <h1 class ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...