最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

canvas實(shí)現(xiàn)愛(ài)心和彩虹雨效果

 更新時(shí)間:2017年03月09日 10:37:54   作者:lqm123  
本文主要介紹了canvas實(shí)現(xiàn)愛(ài)心和彩虹雨效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧

效果圖:

代碼如下:

<!doctype html>
 <html>
 <head>
 <meta charset="utf-8">
 <title></title>
 </head>
 <body>
 <canvas id="canvas"></canvas>
 <script>
 var canvas = document.getElementById('canvas'),
 ctx = canvas.getContext('2d'),
 canvasW = canvas.width = window.innerWidth,
 canvasH = canvas.height = window.innerHeight,
 canvasWHalf = canvasW / 2,
 canvasHHalf = canvasH / 2,
 xoff = canvasWHalf - 306,
 yoff = 50,
 bg = '00061a',
 id = 0,
 raindrops = [],
 minSize = 1,
 maxSize = 4,
 minSpeed = 5,
 maxSpeed = 20,
 minHue = 0,
 maxHue = 360,
 maxAmount = 50;
 function random(min, max) {
 if (arguments.length < 2) {
  max = min;
  min = 0;
 }
 return Math.floor(Math.random() * (max - min) + min);
 }
 function hexToRGB(hex, opacity) {
 var rgb = '';
 hex.match(/.{2}/g).forEach(function(n) {
  rgb += (parseInt(n, 16)) + ',';
 });
 return 'rgba(' + rgb + opacity + ')';
 }
 function draw() {
 // Heart
 ctx.fillStyle = hexToRGB(bg, '0.1');
 ctx.beginPath();
 // Left half
 ctx.moveTo(0, 0);
 ctx.lineTo(canvasWHalf, 0);
 ctx.lineTo(304 + xoff, 97 + yoff);
 ctx.bezierCurveTo(282 + xoff, -5 + yoff, 80 + xoff, -6 + yoff, 76 + xoff, 165 + yoff);
 ctx.bezierCurveTo(74 + xoff, 251 + yoff, 184 + xoff, 300 + yoff, 304 + xoff, 447 + yoff);
 ctx.lineTo(canvasWHalf, canvasH);
 ctx.lineTo(0, canvasH);
 // Right half
 ctx.moveTo(canvasW, 0);
 ctx.lineTo(canvasWHalf, 0);
 ctx.lineTo(304 + xoff, 97 + yoff);
 ctx.bezierCurveTo(326 + xoff, 5 + yoff, 528 + xoff, 6 + yoff, 532 + xoff, 165 + yoff);
 ctx.bezierCurveTo(534 + xoff, 251 + yoff, 424 + xoff, 300 + yoff, 304 + xoff, 447 + yoff);
 ctx.lineTo(canvasWHalf, canvasH);
 ctx.lineTo(canvasW, canvasH);
 ctx.closePath();
 ctx.fill();
 // Raindrops
 for (var i = 1; i < id; i++) {
  raindrops[i].fall();
 };
 }
 var Raindrop = function() {
 id++;
 this.y = random(-canvasH);
 this.x = random(canvasW);
 this.size = random(minSize, maxSize);
 this.speed = random(minSpeed, maxSpeed);
 this.color = 'hsl(' + random(minHue, maxHue) + ',100%,55%)';
 this.origColor = this.color;
 this.id = id;
 raindrops[id] = this;
 };
 Raindrop.prototype.fall = function() {
 this.y += this.speed;
 if (this.y >= canvasH) {
  this.y = random(-canvasH);
  this.x = random(canvasW);
 }
 ctx.save();
 ctx.beginPath();
 var gradient = ctx.createRadialGradient(this.x, this.y, 0, this.x, this.y, this.size);
 gradient.addColorStop(0, '#fff');
 gradient.addColorStop(0.5, this.color);
 gradient.addColorStop(1, hexToRGB(bg, 0));
 ctx.rect(this.x, this.y, this.size, maxSpeed);
 ctx.fillStyle = gradient;
 ctx.fill();
 ctx.closePath();
 ctx.restore();
 };
 (function init() {
 ctx.fillStyle = '#' + bg;
 ctx.fillRect(0, 0, canvasW, canvasH);
 for (var i = 0; i < maxAmount; i++) {
  new Raindrop();
 }
 }());
 function animate() {
 draw();
 window.requestAnimationFrame(animate);
 }
 window.requestAnimationFrame(animate);
 function mouseTrail(x, y) {
 ctx.save();
 ctx.globalCompositeOperation = 'overlay';
 ctx.fillStyle = 'rgba(255,255,255,0.1)';
 ctx.arc(x, y, 50, 0, Math.PI * 2);
 ctx.fill();
 ctx.restore();
 }
 window.addEventListener('mousemove', function(cursor) {
 mouseTrail(cursor.x, cursor.y);
 });
 </script>
 </body>
</html>

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • 如何使用JavaScript獲取word的內(nèi)容

    如何使用JavaScript獲取word的內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript獲取word的內(nèi)容,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • JS中創(chuàng)建自定義類型的常用模式總結(jié)【工廠模式,構(gòu)造函數(shù)模式,原型模式,動(dòng)態(tài)原型模式等】

    JS中創(chuàng)建自定義類型的常用模式總結(jié)【工廠模式,構(gòu)造函數(shù)模式,原型模式,動(dòng)態(tài)原型模式等】

    這篇文章主要介紹了JS中創(chuàng)建自定義類型的常用模式,結(jié)合實(shí)例形式總結(jié)分析了工廠模式,構(gòu)造函數(shù)模式,原型模式,動(dòng)態(tài)原型模式等javascript創(chuàng)建自定義類型的常用模式與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • JavaScript仿支付寶6位數(shù)字密碼輸入框

    JavaScript仿支付寶6位數(shù)字密碼輸入框

    最近做了一個(gè)項(xiàng)目,涉及到某寶購(gòu)物支付密碼的輸入框功能,下面小編把實(shí)現(xiàn)思路分享到腳本之家平臺(tái)供大家參考
    2016-12-12
  • javascript的函數(shù)劫持淺析

    javascript的函數(shù)劫持淺析

    javascript函數(shù)劫持,也就是老外提到的javascript hijacking技術(shù)。雖然這個(gè)概念在前端領(lǐng)域使用較少,但是在安全領(lǐng)域、自定義業(yè)務(wù)等場(chǎng)景下還是有一定的使用價(jià)值的。所以,這一篇文章將會(huì)和大家一起去了解一下JS中的函數(shù)劫持是什么,有什么作用,下面來(lái)一起看看吧。
    2016-09-09
  • JavaScript精煉之構(gòu)造函數(shù) Constructor及Constructor屬性詳解

    JavaScript精煉之構(gòu)造函數(shù) Constructor及Constructor屬性詳解

    對(duì)象的constructor屬性用于返回創(chuàng)建該對(duì)象的函數(shù),也就是我們常說(shuō)的構(gòu)造函數(shù),除了創(chuàng)建對(duì)象,構(gòu)造函數(shù)(constructor) 還做了另一件有用的事情—自動(dòng)為創(chuàng)建的新對(duì)象設(shè)置了原型對(duì)象(prototype object)
    2015-11-11
  • zepto.js 實(shí)時(shí)監(jiān)聽(tīng)輸入框的方法

    zepto.js 實(shí)時(shí)監(jiān)聽(tīng)輸入框的方法

    今天小編就為大家分享一篇zepto.js 實(shí)時(shí)監(jiān)聽(tīng)輸入框的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 前端內(nèi)網(wǎng)開(kāi)發(fā)npm安裝的幾種方法小結(jié)

    前端內(nèi)網(wǎng)開(kāi)發(fā)npm安裝的幾種方法小結(jié)

    這篇文章主要介紹了如何在不聯(lián)網(wǎng)或離線環(huán)境下安裝npm依賴,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2025-01-01
  • javascript 定時(shí)器工作原理分析

    javascript 定時(shí)器工作原理分析

    說(shuō)到 javascript 中的定時(shí)器,我們肯定會(huì)想到 setTimeout() 和 setInterval() 這兩個(gè)函數(shù)。本文將從 事件循環(huán)(Event Loop) 的角度來(lái)分析兩者的工作原理和區(qū)別
    2016-12-12
  • 一個(gè)簡(jiǎn)單的JavaScript Map實(shí)例(分享)

    一個(gè)簡(jiǎn)單的JavaScript Map實(shí)例(分享)

    下面小編就為大家?guī)?lái)一篇一個(gè)簡(jiǎn)單的JavaScript Map實(shí)例(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • 怎么限制input的text里輸入的值只能是數(shù)字(正則、js)

    怎么限制input的text里輸入的值只能是數(shù)字(正則、js)

    這篇文章主要通過(guò)正則表達(dá)式和JS代碼限制input的text里輸入的值只能是數(shù)字的相關(guān)資料,需要的朋友可以參考下
    2016-05-05

最新評(píng)論

西乌珠穆沁旗| 怀柔区| 华蓥市| 嘉峪关市| 杂多县| 舞阳县| 靖安县| 巴林右旗| 和硕县| 长沙市| 吉林市| 白朗县| 五河县| 崇文区| 邵东县| 英超| 北海市| 东至县| 清镇市| 芜湖县| 福泉市| 拜城县| 天镇县| 太仓市| 鲁山县| 海南省| 中江县| 余庆县| 高台县| 竹北市| 汽车| 肃南| 鄂温| 新竹县| 定边县| 巴楚县| 于田县| 黄骅市| 彩票| 福海县| 洱源县|