国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

原生JS實現(xiàn)的雪花飄落動畫效果

2019-11-19 13:55:32
字體:
供稿:網(wǎng)友

本文實例講述了原生JS實現(xiàn)的雪花飄落動畫效果。分享給大家供大家參考,具體如下:

<!DOCTYPE html><html><head>  <meta charset="utf-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <title>www.survivalescaperooms.com JS下雪動畫</title>  <meta name="description" content="">  <meta name="viewport" content="width=device-width, initial-scale=1"></head><style>  .masthead {    background-color:#333;    display:block;    width:100%;    height:400px;  }</style><body><div class="masthead"></div><script>  (function () {    var COUNT = 300;    var masthead = document.querySelector('.masthead');    var canvas = document.createElement('canvas');    var ctx = canvas.getContext('2d');    var width = masthead.clientWidth;    var height = masthead.clientHeight;    var i = 0;    var active = false;    function onResize() {      width = masthead.clientWidth;      height = masthead.clientHeight;      canvas.width = width;      canvas.height = height;      ctx.fillStyle = '#FFF';      var wasActive = active;      active = width > 600;      if (!wasActive && active)        requestAnimFrame(update);    }    var Snowflake = function () {      this.x = 0;      this.y = 0;      this.vy = 0;      this.vx = 0;      this.r = 0;      this.reset();    };    Snowflake.prototype.reset = function() {      this.x = Math.random() * width;      this.y = Math.random() * -height;      this.vy = 1 + Math.random() * 3;      this.vx = 0.5 - Math.random();      this.r = 1 + Math.random() * 2;      this.o = 0.5 + Math.random() * 0.5;    };    canvas.style.position = 'absolute';    canvas.style.left = canvas.style.top = '0';    var snowflakes = [], snowflake;    for (i = 0; i < COUNT; i++) {      snowflake = new Snowflake();      snowflakes.push(snowflake);    }    function update() {      ctx.clearRect(0, 0, width, height);      if (!active)        return;      for (i = 0; i < COUNT; i++) {        snowflake = snowflakes[i];        snowflake.y += snowflake.vy;        snowflake.x += snowflake.vx;        ctx.globalAlpha = snowflake.o;        ctx.beginPath();        ctx.arc(snowflake.x, snowflake.y, snowflake.r, 0, Math.PI * 2, false);        ctx.closePath();        ctx.fill();        if (snowflake.y > height) {          snowflake.reset();        }      }      requestAnimFrame(update);    }    // shim layer with setTimeout fallback    window.requestAnimFrame = (function(){      return window.requestAnimationFrame    ||          window.webkitRequestAnimationFrame ||          window.mozRequestAnimationFrame  ||          function( callback ){            window.setTimeout(callback, 1000 / 60);          };    })();    onResize();    window.addEventListener('resize', onResize, false);    masthead.appendChild(canvas);  })();</script></body></html>

使用本站HTML/CSS/JS在線運行測試工具http://tools.VeVB.COm/code/HtmlJsRun,可得到如下測試運行效果:

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript動畫特效與技巧匯總》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript運動效果與技巧匯總》、《JavaScript圖形繪制技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 山西省| 济源市| 盐城市| 克山县| 临桂县| 新巴尔虎右旗| 固镇县| 杭州市| 怀化市| 花莲市| 旌德县| 开封县| 汉源县| 边坝县| 民和| 凤山市| 海南省| 江陵县| 松阳县| 广汉市| 永平县| 上林县| 阳曲县| 巴彦县| 尼玛县| 肥城市| SHOW| 永兴县| 永年县| 沽源县| 淮滨县| 东阿县| 泸溪县| 封开县| 紫金县| 潞城市| 汕头市| 新疆| 措勤县| 临桂县| 鄂州市|