jquery+css3實現網頁背景花瓣隨機飄落特效【轉】

来源:https://www.cnblogs.com/KillBugMe/archive/2020/03/04/12409332.html
-Advertisement-
Play Games

隨機飄落一些花瓣,那麼這種效果用代碼怎麼實現的呢,下麵小編給大家詳解jquery實現網頁背景花瓣隨機飄落特效,需要的朋友可以參考下 飄花效果的實現——效果圖: 需求: 一個jquery,,,這個看標題麽就知道了 jQuery Transit還有這個東西 "http://github.com/rsta ...


隨機飄落一些花瓣,那麼這種效果用代碼怎麼實現的呢,下麵小編給大家詳解jquery實現網頁背景花瓣隨機飄落特效,需要的朋友可以參考下

飄花效果的實現——效果圖:

需求:

一個jquery,,,這個看標題麽就知道了

jQuery Transit還有這個東西

http://github.com/rstacruz/jquery.transit

jquery對一些效果的擴展

飄花的效果稍微複雜一點,有一定量的JavaScript代碼,通過JS+CSS3的組合實現的。觀察右邊效果,可以大致分解飄花的實現

      飄花比人物的層級都高
      飄花數量非常多
      飄花會有一定的軌跡運動
      飄花帶有漸變的效果
      飄花帶有旋轉的效果
      飄花落到地面會消失

這裡採用的JS+CSS3的結合實現,CSS3實現旋轉部分,首先從佈局上來說,飄花是要比所有內部元素層級都要高,所以佈局上是要與頁面li平級才可以

實現原理:

通過定時器調用JS代碼不斷的動態創建雪花節點,隨機選擇一個圖片作為其背景,賦予三個初始的樣式屬性top,left與opacity,通過transition動畫過度的方式執行這3個屬性的動畫變化。整個原理其實也是很簡單的,主要涉及了一些細節的問題:例如元素的創建、圖片的隨機、開始的left與opacity的隨機處理、最終值的計算等等

執行的流程:

getImagesName隨機6張圖片,snowflakeURl定義一個地址的範圍

createSnowBox創建雪花元素的節點,並且增加一個snowRoll的樣式,也就是旋轉的關鍵幀實現

定時器設置200ms不斷的生成雪花對象,計算出3個屬性的初始值,通過createSnowBox創建雪花元素,並且附上初始值,然後執行transition附上最終值,執行動畫

動畫結束後執行$(this).remove()  刪除這個對象

然後精簡一下代碼,因為我只要飄花效果

<div id='content'>
    <!-- 飄花 -->
    <div id="snowflake"></div>
</div>

獲取外面#content的寬高

然後#snowflake裡面做效果

#content { width: 100%; height: 100%; top: 42px;
overflow: hidden; position: absolute; }

然後麽css麽就是這樣了,top:42px是因為我的導航高度

#snowflake { width: 100%; height: 100%; position: absolute; top: 0; left: 0; overflow: hidden; }
.snowRoll { position: absolute; opacity: 0; -webkit-animation-name: mysnow; -webkit-animation-duration: 20s; -moz-animation-name: mysnow; -moz-animation-duration: 20s; height: 80px; }
 @-webkit-keyframes mysnow { 0% {
 bottom: 100%;
}
 50% {
 -webkit-transform: rotate(1080deg);
}
 100% {
 -webkit-transform: rotate(0deg) translate3d(50px, 50px, 50px);
}
}
 @-moz-keyframes mysnow { 0% {
 bottom: 100%;
}
 50% {
 -moz-transform: rotate(1080deg);
}
 100% {
 -moz-transform: rotate(0deg) translate3d(50px, 50px, 50px);
}
}

這裡是給飄花加旋轉之類的css3特技

        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
        <script src="xxx/js/jquery.transit.js"></script>        
        <script type="text/javascript">
            $(function() {

                var snowflakeURl = [
                    'img/timg.jpg',
                    'img/timg.jpg',
                    'img/timg.jpg',
                    'img/timg.jpg',
                    'img/timg.jpg',
                    'img/timg.jpg',
                ] //js設置數組存儲6張花瓣的圖片

                var container = $("#content");
                visualWidth = container.width();
                visualHeight = container.height();
                //獲取content的寬高
                ///////
                //飄雪花 //
                ///////
                function snowflake() {
                    // 雪花容器
                    var $flakeContainer = $('#snowflake');

                    // 隨機六張圖
                    function getImagesName() {
                        return snowflakeURl[[Math.floor(Math.random() * 7)]];
                    }
                    // 創建一個雪花元素
                    function createSnowBox() {
                        var url = getImagesName();
                        return $('<div class="snowbox" />').css({
                            'width': 41,
                            'height': 41,
                            'position': 'absolute',
                            'backgroundSize': 'cover',
                            'zIndex': 100000,
                            'top': '-41px',
                            'backgroundImage': 'url(' + url + ')'
                        }).addClass('snowRoll');
                    }
                    // 開始飄花
                    setInterval(function() {
                        // 運動的軌跡
                        var startPositionLeft = Math.random() * visualWidth - 100,
                            startOpacity = 1,
                            endPositionTop = visualHeight - 40,
                            endPositionLeft = startPositionLeft - 100 + Math.random() * 500,
                            duration = visualHeight * 10 + Math.random() * 5000;

                        // 隨機透明度,不小於0.5
                        var randomStart = Math.random();
                        randomStart = randomStart < 0.5 ? startOpacity : randomStart;
                        // 創建一個雪花
                        var $flake = createSnowBox();
                        // 設計起點位置
                        $flake.css({
                            left: startPositionLeft,
                            opacity: randomStart
                        });
                        // 加入到容器
                        $flakeContainer.append($flake);
                        // 開始執行動畫
                        /* $flake.transition({
                            top: endPositionTop,
                            left: endPositionLeft,
                            opacity: 0.7
                        }, duration, 'ease-out', function() {
                            $(this).remove() //結束後刪除
                        }); */
                        
                        //jquery 不引入其他js寫法
                        $flake.animate({
                            top: endPositionTop,
                            left: endPositionLeft,
                            opacity: 0.7
                        }, duration, 'linear', function() {
                            $(this).remove() //結束後刪除
                        });

                    }, 200);
                }
                snowflake()
                //執行函數

            })
        </script>

以上代碼就是本文使用jquery實現網頁背景花瓣隨機飄落特效,希望大家喜歡。
文章來自:https://www.jb51.net/article/71166.htm


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

-Advertisement-
Play Games
更多相關文章
  • 作用域:在js預編譯時、代碼執行之前對全局或局部的變數進行收集,存放在一指定記憶體中scope,執行時對scope進行訪問,scope 就是全局或局部的作用域。 如: 1 function test() { 2 var a = 123; 3 } 4 5 test(); 在test() 執行之前對tes ...
  • 給一個HTML元素設置css屬性,如 這樣寫太羅嗦了,為了簡單些寫個工具函數,如 發現 "Google API" 中使用了cssText屬性,後在各瀏覽器中測試都通過了。一行代碼即可,實在很妙。如 和innerHTML一樣,cssText很快捷且所有瀏覽器都支持。此外當批量操作樣式時,cssText ...
  • 但是 IE6 7 下沒有 JSON 對象,所以要藉助 "json2.js" 來實現。 今天我們來簡單介紹下stringify方法的一些正確使用姿勢吧。 當然,讓高手們賤笑了,本文只是分享一些方法給新手朋友們。 ~~~ var data = [ {name: "王尼瑪", sex:1, age: 30 ...
  • 綜合指南: 何時使用 Em 與 Rem [TOC] 你可能已經很熟練使用這兩個靈活的單位,但你可能不完全瞭解何時使用 rem ,何時使用 em。 本教程將幫你弄清楚! Em 和 rem都是靈活、 可擴展的單位,由瀏覽器轉換為像素值,具體取決於您的設計中的字體大小設置。 如果你使用值 1em 或 1r ...
  • <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>demo</title> <!-- 引入animate.css--> <link href="https://cdn.jsdelivr.net/npm/animate.css@3. ...
  • 前置任務 在說原型對象是什麼之前,我們先討論一下 對象 是什麼東西 在說對象是什麼之前,我們又得討論一下 引用類型 引用類型 ![](https://ae01.alicdn.com/kf/U511530ba0ea143d69c43f6a3ac1feba0a.jpg ) 首先,js 中變數的值分兩種類 ...
  • 此段代碼通過Canvas元素實現了電影《黑客帝國》中進入Matrix的終端界面的一個動畫效果。 相容H5和各種版本的瀏覽器。可以在這裡看到線上效果, "點我,點我!" 在瀏覽器中打開,配上F11全屏效果,效果棒棒的! 在代碼的起始部分,使用了一個相容低版本瀏覽器的requestAnimationFr ...
  • 近期改版RXEditor,把改版過程,用到的技術點,記錄下來。昨天完成了靜態頁面的製作,製作過程並未詳細記錄,後期已經不願再補了,有些遺憾。不過工作成果完整保留在github上,地址:https://github.com/vularsoft/studio-ui 這個項目下麵的html-demo.ht ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...