欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

效果圖:

代碼如下:

<!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>

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

相關(guān)文章

  • JavaScript中toLocaleString()和toString()的區(qū)別實例分析

    JavaScript中toLocaleString()和toString()的區(qū)別實例分析

    這篇文章主要介紹了JavaScript中toLocaleString()和toString()的區(qū)別,結(jié)合實例形式對比分析了toLocaleString()和toString()針對字符串、數(shù)組與日期操作過程中的區(qū)別與使用技巧,需要的朋友可以參考下
    2018-08-08
  • 極酷的javascirpt,讓你隨意編輯任何網(wǎng)頁

    極酷的javascirpt,讓你隨意編輯任何網(wǎng)頁

    極酷的javascirpt,讓你隨意編輯任何網(wǎng)頁...
    2007-02-02
  • js fetch異步請求使用實例詳解

    js fetch異步請求使用實例詳解

    fetch是一種HTTP數(shù)據(jù)請求的方式,是XMLHttpRequest的一種替代方案,fetch不是ajax的進一步封裝,而是原生js,下面這篇文章主要給大家介紹了關(guān)于js fetch異步請求使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • javascript 實現(xiàn)文本使用省略號替代(超出固定高度的情況)

    javascript 實現(xiàn)文本使用省略號替代(超出固定高度的情況)

    這篇文章主要介紹了javascript 實現(xiàn)文本使用省略號替代(超出固定高度的情況)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • js實現(xiàn)簡單省市區(qū)三級選擇聯(lián)級

    js實現(xiàn)簡單省市區(qū)三級選擇聯(lián)級

    這篇文章主要介紹了js實現(xiàn)簡單省市區(qū)三級選擇聯(lián)級,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • D3.js實現(xiàn)繪制和弦圖的教程詳解

    D3.js實現(xiàn)繪制和弦圖的教程詳解

    弦圖,是一種表示實體之間相互關(guān)系的圖形方法。這篇文章主要為大家詳細介紹了如何通過D3.js實現(xiàn)繪制和弦圖,文中的示例代碼講解詳細,對我們學(xué)習(xí)D3.js有一定的幫助,需要的可以參考一下
    2022-11-11
  • JavaScript中Object的常用方法總結(jié)

    JavaScript中Object的常用方法總結(jié)

    這篇文章主要為大家整理了7個JavaScript中Object的常用方法的使用,文中的示例代碼講解詳細,對我們掌握JavaScript有一點的幫助,感興趣的可以了解一下
    2023-02-02
  • 全面詳解JS正則中匹配技巧及示例

    全面詳解JS正則中匹配技巧及示例

    這篇文章主要為大家介紹了全面詳解JS正則中匹配技巧及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • JS比較2個日期間隔的示例代碼

    JS比較2個日期間隔的示例代碼

    這篇文章主要介紹了JS比較2個日期間隔的方法,需要的朋友可以參考下
    2014-04-04
  • js和canvas繪制圓形金屬質(zhì)感特效

    js和canvas繪制圓形金屬質(zhì)感特效

    在JavaScript中,可以使用HTML5提供的Canvas元素來進行繪圖操作,要使用canvas元素,瀏覽器必須支持html5,Canvas是一個HTML元素,可以通過JavaScript來操作和繪制圖形,本文示例實現(xiàn)js和canvas繪制圓形金屬質(zhì)感的詩詞高級排版特效
    2024-09-09

最新評論