html5式程序猿表白
程序员文章站
2022-05-03 22:58:09
whqet,csdn,王海庆,whqet,前端开发专家今天是个好日子,2014年5月20日,表白的最佳时机,虽说孩子已经四岁、结婚已经五年,但是也不可以偷懒,于是有了这个效果。在线研究点这里,下载收...
whqet,csdn,王海庆,whqet,前端开发专家
今天是个好日子,2014年5月20日,表白的最佳时机,虽说孩子已经四岁、结婚已经五年,但是也不可以偷懒,于是有了这个效果。
在线研究点这里,下载收藏点这里。程序猿and程序媛,大胆秀出你的爱吧。
利用html5 canvas实现动态的文字粒子效果,效果如下。
ok,简单看看原理,首先我们需要在canvas里面实现描边文字,然后利用getimagedata获得描边文字的像素矩阵,将粒子效果绑定在描边文章上。
整个效果如下。
html文件非常简单。
喎?https: www.2cto.com/kf/ware/vc/"="" target="_blank" class="keylink">vcd48chjlignsyxnzpq=="brush:java;">css文件如下。
body { background: #000; text-align: center; font-family: "simhei" } canvas { margin: auto; position: absolute; left: 0; right:0; top: 0; bottom: 0; }js文件至关重要了。
blur = false; pulsation = true; pulsation_period = 1000; particle_radius = 1; /* disable blur before using blink */ blink = false; global_pulsation = false; quality = 2; /* 0 - 5 */ /* set false if you prefer rectangles */ arc = true; /* trembling + blur = fun */ trembling = 0; /* 0 - infinity */ fancy_font = "arial"; background = "#000"; blending = true; /* if empty the text will be a random number */ var text; num = 0; textarray = ["whq", "love", "xcl", "ever"]; quality_to_font_size = [10, 12, 30, 50, 200, 350]; quality_to_scale = [20, 6, 4, 1, 0.9, 0.5]; quality_to_text_pos = [10, 20, 40, 60, 170, 280]; window.onload = function () { document.body.style.backgroundcolor = background; var canvas = document.getelementbyid("canvas"); var ctx = canvas.getcontext("2d"); var w = canvas.width; var h = canvas.height; var tcanvas = document.createelement("canvas"); var tctx = tcanvas.getcontext("2d"); tcanvas.width = w; tcanvas.height = h; total_area = w * h; total_particles = 1000; single_particle_area = total_area / total_particles; area_length = math.sqrt(single_particle_area); var particles = []; for (var i = 1; i 1 */ var mod = ((global_pulsation ? 0 : p.deltaoffset) + now) % pulsation_period / pulsation_period; mod = math.sin(mod * math.pi); } else var mod = 1; var offset = trembling ? trembling * (-1 + math.random() * 2) : 0; var radius = particle_radius * p.radius; if (!arc) { ctx.fillrect(offset + p.x - mod * radius / 2 | 0, offset + p.y - mod * radius / 2 | 0, radius * mod, radius * mod); } else { ctx.arc(offset + p.x | 0, offset + p.y | 0, radius * mod, math.pi * 2, false); ctx.fill(); } p.x += (p.dx - p.x) / 10; p.y += (p.dy - p.y) / 10; } } function get_destinations() { for (var i = 0; i 0) { if (distance[n]
----------------------------------------------------------
前端开发whqet,关注开发,分享相关资源,欢迎点赞,欢迎拍砖。
---------------------------------------------------------------------------------------------------------
上一篇: JSP上传文件轻松实现
下一篇: 这就是文化的缺失