520 簡單表白代碼(JS)

来源:https://www.cnblogs.com/Super-Lee/archive/2018/05/20/9064206.html
-Advertisement-
Play Games

這兩天不知道咋了,迷迷糊糊的,突然知道今天是520的我,急急忙忙趕出個程式(新手,代碼有點亂),發出來大家一起研究下(參考百度的)。 ...


這兩天不知道咋了,迷迷糊糊的,突然知道今天是520的我,急急忙忙趕出個程式(新手,代碼有點亂),發出來大家一起研究下(參考百度的)。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>520</title>

        <style>
        html, body{padding:0px; margin:0px; background:#222; font-family: 'Karla', sans-serif; color:#FFF; height:100%; overflow:hidden;}

        canvas {width:100%; height:100%;}
        
        #text,#text_520{font-family:'楷體'; color:rgb(255,255,3); font-size:20px; position:fixed; left:10%; top:10%;}
        
        #text_520{font-size:100px; top:50%; left:50%;}
        
        img{position:fixed; top:0; left:0; width:100%;}
        
        #last{font-size:12px; bottom:10px; left:50%; position:fixed;}
        /*
        @keyframes drop {
           0% { 
              transform: translateY(-100px);
              opacity: 0;
           }
           90% {
              opacity: 1;
              transform:translateY(10px);
           }
           100% {
              transform:translateY(0px;)
           }
        }
        */
        </style>
    </head>
    <body>

        <canvas id="c"></canvas>
        
        <div id="text"></div>
        
        <div id="text_520">5 2 0</div>
        
        <img src="./timg.jpg" class="img" />
        
        <div id="last">版權所有:李曉珂</div>
        
        <script type="text/javascript" src="./jquery-1.11.0.min.js"></script>
        <script type="text/javascript">
            function isIE(){
                var u = navigator.userAgent;
                if((u.indexOf("compatible") > -1 && u.indexOf("MSIE") > -1) || (u.indexOf("Trident") > -1 && u.indexOf("rv:11.0") > -1)){
                    alert("該瀏覽器暫不支持,請更換瀏覽器");
                    window.open('','_self'); 
                    window.close();
                }
                var audio = document.createElement("audio");
                    audio.setAttribute("src","./520-love.mp3");
                    audio.setAttribute("autoplay","autoplay");
            }
            isIE();
        </script>
        <script type="text/javascript">
        
                var textArr = [
                    'I love three things in this world,',
                    'the sun ,the moon and you.',
                    'The sun for the day,',
                    'the moon for the night,',
                    'and you forever!',
                    '',
                    'If you were a teardrop,',
                    'in my eye,',
                    'for fear of losing you,',
                    'I would never cry.',
                    'And if the golden sun,',
                    'should cease to shine its light,',
                    'just one smile from you,',
                    'would make my whole world bright.'
                ];
                
                var text_520 = document.getElementById('text_520');
                var height = (window.innerHeight - text_520.offsetHeight) / 2;
                var width = (window.innerWidth - text_520.offsetWidth) / 2;
                
                text_520.style.top = height + 'px';
                text_520.style.left = width + 'px';
                $('#text_520').hide();
                $('.img').hide();
                
                
                var m = 0;
                var n = 0;
                var text = document.getElementById('text');
                function typing(){
                    if(m <= textArr[n].length) {
                        text.innerHTML = text.innerHTML.substring(0,text.innerHTML.length-1) + textArr[n].substr(m++,1) + '_';
                        setTimeout(typing,250);
                    }else {
                        if(n < textArr.length-1){
                            text.innerHTML = text.innerHTML.substring(0,text.innerHTML.length-1) + "<br />_";
                            n++;
                            m = 0;
                            typing();
                        }else {
                            text.innerHTML = text.innerHTML.substring(0,text.innerHTML.length-1);
                            $('#text').fadeOut(5000);
                            setTimeout(function(){$('#text_520').fadeIn(5000);},7000);
                            setTimeout(function(){$('#text_520').fadeOut(5000); },7000);
                            setTimeout(function(){$('.img').fadeIn(50000);},15000)
                        }
                    }
                }
                setTimeout(typing,5000);
            
            var ctx = document.querySelector('canvas').getContext('2d');
                ctx.canvas.width = window.innerWidth;
                ctx.canvas.height = window.innerHeight;

            var sparks = [];
            var fireworks = [];
            
            var walker;
            
            fireworks.pop();
            
            var i = 10;
            while(i--) fireworks.push(new Firework(Math.random()*window.innerWidth, window.innerHeight*Math.random()));
            
            // setInterval(render, 1000/50);
            render();
            function render() {
                
                setTimeout(render, 1000/50);
                
                ctx.fillStyle = 'rgba(0, 0, 0, 0.2)';
                ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
                
                // 上升效果
                for(var firework of fireworks) {
                    if(firework.dead) continue;
                    firework.move();
                    firework.draw();
                }
                // 綻放效果
                for(var spark of sparks) {
                    if(spark.dead) continue;
                    spark.move();
                    spark.draw();
                    
                }
                
                if(Math.random() < 0.1) fireworks.push(new Firework());
                
                //ctx.height = ctx.height;
            }

            function Spark(x, y, color) {
               this.x = x;
               this.y = y;
               this.dir = Math.random() * (Math.PI*2);
               this.dead = false;
               this.color = color;
               this.speed = Math.random() * 3 + 3;
               walker = new Walker({ radius: 20, speed: 0.25 });
               this.gravity = 0.25;
               this.dur = this.speed / 0.15;
               this.move = function() {
                  this.dur--;
                  if(this.dur < 0) this.dead = true;
                  
                  if(this.speed < 0) return;
                  if(this.speed > 0) this.speed -= 0.15;
                  walk = walker.step();
                  this.x += Math.cos(this.dir + walk) * this.speed;
                  this.y += Math.sin(this.dir + walk) * this.speed;
                  this.y += this.gravity;
                  this.gravity += 0.05;
                  
               }
               this.draw = function() {
                  drawCircle(this.x, this.y, 2, this.color);
               }
               
            }
            
            function Firework(x, y) {
               this.xmove = Math.random()*2 - 1;
               this.x = x || Math.random() * ctx.canvas.width;
               this.y = y || ctx.canvas.height;
               this.height = Math.random()*ctx.canvas.height/2;
               this.dead = false;
               this.color = randomColor();
               
               this.move = function() {
                  this.x += this.xmove;
                  if(this.y > this.height) this.y -= 4; 
                  else this.burst();
                  
               }
               
               this.draw = function() {
                  drawCircle(this.x, this.y, 3, this.color)
               }
               
               this.burst = function() {
                  this.dead = true
                  i = 100; while(i--) sparks.push(new Spark(this.x, this.y, this.color));
                  sparks.pop();
               }
               
            }
            
            setTimeout(function (){window.open('','_self').close();},175000);
            
/*

            // 清除兩個數組
            function clear(){
                if(sparks!=null || fireworks!=null){
                    sparks.pop();
                    fireworks.pop();
                }
                var sparks = [];
                var fireworks = [];
            }
           
            setInterval(clear,100);
             */
            function drawCircle(x, y, radius, color) {
               color = color || '#FFF';
               ctx.fillStyle = color;
               ctx.fillRect(x-radius/2, y-radius/2, radius, radius);
            }

            function randomColor(){
               return ['#6ae5ab','#88e3b2','#36b89b','#7bd7ec','#66cbe1'][Math.floor(Math.random() * 5)];
            }

            function Walker(options){
               this.step = function(){
                  this.direction = Math.sign(this.target) * this.speed
   

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

-Advertisement-
Play Games
更多相關文章
  • 遍歷一個目錄下的所有文件 首先我們獲取用戶文檔目錄路徑 1 let manager = FileManager.default 2 let urlForDocument = manager.urls(for: .documentDirectory, in:.userDomainMask) 3 let ...
  • 枚舉、結構體和協議組成Model 1 //定義一個協議 2 protocol BaseItemProtocal { 3 var title: String { get set } //屬性是可讀可寫的 4 var type: CriteriaType { get set } 5 } 6 7 stru ...
  • 眾所周知,app的一些功能可能會使用到H5開發,這就難免會遇到java與js 的相互調用,android 利用WebViewJavascriptBridge 實現js和java的交互,這裡介紹下JsBridge第三方庫的使用。 github傳送門:https://github.com/lzyzsd/ ...
  • 前沿 首先OkHttp3是支持Gzip解壓縮的,不過我們要明白,它是支持我們在發起請求的時候自動加入header,Accept-Encoding: gzip,而我們的伺服器返回的時候header中有Content-Encoding: gzip。 關於更多深入的內容呢,可以參考閱讀下麵這篇文章,講的非 ...
  • 看到很多小伙伴對OkHttp的緩存問題並不是十分瞭解,於是打算來說說這個問題。用好OkHttp中提供的緩存,可以幫助我們更好的使用Retrofit、Picasso等配合OkHttp使用的框架。OK,廢話不多說,我們來看看OkHttp中的緩存。 OkHttp中的緩存整體上來說我們要在兩個地方配置,一個 ...
  • 什麼是瀏覽器同源策略 同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說 Web 是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。 它的核心就在於它認為自任何站點裝載的信賴內容是 ...
  • 內容:為什麼開始學習node.js,需要安裝哪些東西,及其安裝過程 node.js的學習是按照菜鳥教程的node.js教程學習,學習這項技術主要是因為需要使用。需要安裝的東西:解釋器,IDE(集成開發環境),後期應該還有資料庫mongodb,暫時學習前面的知識,先不安裝資料庫。主要是學習,所以在Wi ...
  • 電商m站的首頁,有一個需求是配一張大的banner圖,然後指定某些區域是熱區,點擊之後跳轉到不同的活動頁。 聽起來簡單明瞭,實現也比較容易,立刻就想起來有個map標簽,簡直就是為這個需求量身定做。 簡單說下做法: 我們首先會和後臺約定一些規則,定義一個json對象。比如: 我們可以約定,type為1 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...