介绍
这篇文章给大家分享的是有关如何利用帆布模仿百度贴吧客户端加载小球的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
最近看到两个好玩的演示,效果图如下:
今天趁着周末有空,用H5的帆布仿了一下。这篇文章只实现第一个效果图。
<强>这是我实现的效果:强>
<强>实现原理强>
实现原理是参考简书的那篇文章,这里不再复述。现在我们来一步一步实现这样的效果。
<强>第零步:画一个圆强>
源码如下:
运行效果如下:
& lt; ! DOCTYPE html> & lt; html> & lt; head> ,,,& lt; meta charset=癠TF-8"比; ,,,& lt; title>百度贴吧客户端加载小球& lt;/title> ,,,& lt; style> ,,,,,,,canvas { ,,,,,,,,,,,边界:,1 px solid # ccc; ,,,,,,,} ,,,& lt;/style> & lt;/head> & lt; body> & lt; canvas id=癱anvas",宽度=?00“,身高=?00“祝辞& lt;/canvas> & lt; script> ,,,var canvas =, . getelementbyid(& # 39;帆布# 39;) ,,,var ctx =, canvas.getContext (& # 39; 2 d # 39;) ,,,canvas.width =500 ,,,canvas.height =500 ,,,var grid =canvas.width /, 4 ,,,var cx =, canvas.width /, 2,//,圆中心点,x 坐标 ,,,var cy =, canvas.height /, 2,//,圆中心点,y 坐标 ,,,function 圆(),{ ,,,,,,,ctx.beginPath () ,,,,,,,ctx.arc (cy,残雪,还以为,grid /,,,,, 2, *, Math.PI) ,,,} ,,,圆() ,,,ctx.stroke () & lt;/script> & lt;/body> & lt;/html>
这个演示只涉及帆布最简单的用法。
<强>第一步:绘制蓝色的“贴”字强>
使用<代码> ctx。fillText> 代码,在圆的中心绘制一个蓝色的字“帖”。文字粗体,水平居中。
代码如下:
function 文本(fillStyle), { ,,,var fontSize =, size /, 250 * 120 (,) ,,,ctx.font =, & # 39; bold & # 39;, +, fontSize +, & # 39; px arial # 39; ,,,ctx.textAlign =, & # 39;中心# 39; ,,,ctx.fillStyle =fillStyle ,,,ctx.fillText(& # 39;贴& # 39;,,残雪,,cy +, fontSize *, 0.3) } 文本(& # 39;# 29 a3fe& # 39;)
效果如下:
<强>第二步:绘制蓝色的波浪强>
var waveSize =, size /, 6,//,波浪大小 var x =, 0,//,波浪位置偏移大小 function 曲线(),{ ,,,ctx.beginPath () ,,,ctx.moveTo (cx 安康;size +, x +, size /, 2, cy) ,,,ctx.quadraticCurveTo (cx 安康;size +, size /, 4, +, x +, size /, 2, cy 作用;waveSize,, cx 作用;size +, size /, 2, +, x +, size /, 2, cy) ,,,ctx.quadraticCurveTo (cx 安康;size +, size *, 3,/, 4, +, x +, size /, 2, cy +, waveSize,, cx 作用;size +, size +, x +, size /, 2, cy) ,,,ctx.quadraticCurveTo(时间+ cx size /, 4, +, x +, size /, 2, cy 作用;waveSize,, cx +, size /, 2, +, x +, size /, 2, cy) ,,,ctx.quadraticCurveTo(时间+ cx size *, 3,/, 4, +, x +, size /, 2, cy +, waveSize,, cx +, size +, x +, size /, 2, cy) ,,,ctx.lineTo(时间+ cx size +, x +, size /, 2, canvas.height) ,,,ctx.lineTo (cx 安康;size +, x +, size /, 2, canvas.height) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何利用帆布模仿百度贴吧客户端加载小球