1、扫描效果
2、技术选型
1) CSS3 使用两个元素,通过移动遮罩元素来实现圆面积变小(圆使用border-radius:50%可以实现)
问题:通过这个遮罩元素实现圆面积变化,无法实现透明,会遮住底部背景
2) canvas绘制动画,通过使用requestAnimationFrame绘制动画
问题: a.圆面积会变化 b.横线的长度变化 c.性能问题
总结:技术1(CSS3)实现动画,其遮住背景,暂时无解决方案,所以选择canvas进行绘制
3、开发实现
1)圆面积变化
实现: 绘制一个圆,使用clearRect方法擦除变化面积,可以实现圆面积变化
2)线条长度变化
实现:如果实现使用计算得到线条长度变化值,来绘制一根线条,这样的计算太复杂,所以我使用clip裁剪,
绘制一个线条,只展示与圆重叠部分,这样可以实现线条长度变化
3)性能使用requestAnimationFrame方法绘制动画,不停的调研canvasAPI会导致canvas绘制越来越慢,性能解决这块使用
离屏canvas(此处不做赘述,后有详解)
4、代码实现