效果展示

还不了解canvas的同学可以先看一下官方的api

https://www.canvasapi.cn

话不多说直接上代码

在页面中添加canvas标签

<template><div class="home"><canvas id="canvas" /></div>
</template>

初始化canvas

initCanvas() {const canvas = document.querySelector("#canvas");this.ctx = canvas.getContext("2d");canvas.width = window.innerWidth;canvas.height = window.innerHeight;init(this.ctx);
},

页面全部代码

<template><div class="home"><canvas id="canvas" /><!-- 换成自己的图片 --><img :style="canvasStyle" src="../assets/pic121.jpg" /></div>
</template><script>
import { init } from "@/components/canvas.js";export default {name: "Home",data() {return {canvasStyle: {position: "fixed",width: "100%",height: "100%",zIndex: "-1",left: "0",bottom: "0",},ctx: {},};},mounted() {this.initCanvas();},methods: {initCanvas() {const canvas = document.querySelector("#canvas");this.ctx = canvas.getContext("2d");canvas.width = window.innerWidth;canvas.height = window.innerHeight;init(this.ctx);},},
};
</script>

创建rain.js

// 画笔
var ctx;
// 画布的宽高
var w = window.innerWidth;
var h = window.innerWidth;
// 存放雨滴的数组
var arr = [];
// 雨滴的数量
var size = 150;
// 雨滴的构造函数
class Rain {x = random(w);y = random(h);ySpeed = random(2) + 5;show() {drawLine(this.x, this.y);}run() {if (this.y > h) {this.y = 0;this.x = random(w);}this.y = this.y + this.ySpeed;}
}
// 画线(雨滴)
function drawLine(x1, y1) {ctx.beginPath();ctx.strokeStyle = "#cccccc";ctx.moveTo(x1, y1);// 雨长度为30ctx.lineTo(x1, y1 + 30);ctx.stroke();
}
// 生成随机数
function random(num) {return Math.random() * num;
}
// 开始
function start() {for (var i = 0; i < size; i++) {var rain = new Rain();arr.push(rain);rain.show();}setInterval(() => {ctx.clearRect(0, 0, w, h);for (var i = 0; i < size; i++) {arr[i].show();arr[i].run();}}, 10);
}
// 初始化
function init(ctx1) {ctx = ctx1;start();
}
// 导出初始化函数
export { init };

在vue中使用canvas实现简单特效(下雨天)相关推荐

  1. vue中实现公告栏的滚动特效

    vue中实现公告栏的滚动特效 文章目录 vue中实现公告栏的滚动特效 前言 修改版本 前言 vue中实现公告栏的滚动特效 修改版本 <template><div id="d ...

  2. vue 中利用canvas 给pdf文件加水印---详细教程(附上完整代码)

    需求:在h5网页中打开pdf文件,要求给文件添加水印 实现技术及插件:vue,vue-pdf,canvas 插件安装: npm i vue-pdf --save npm i pdf-lib --sav ...

  3. vue中使用canvas实现移动端手写板、电子签名功能

    直接上Demo <template><div class="hello"><button type v-on:click="clear&qu ...

  4. vue中老虎机效果的简单实现-带立即停止功能

    持续更新中... 1. 新增 prizeNum: 3, // 可视区域每列展示的奖品数,展示为三列,每列三条数据,如下图 2. 新增动画过程中再次点击,直接抽奖结束,滚到对应中奖位置 vue前端-老虎 ...

  5. vue中使用canvas手写输入识别中文

    效果图 前言 最近做一个室外大屏项目,系统上的输入法使用不方便,客户要求做一个嵌入web网页的手写输入法. 核心 后端接口api:使用 QQ输入法手写接口 https://handwriting.sh ...

  6. 记录下vue中使用canvas:给漂浮的圆球加阴影(发光边)

    漂的气泡不同的外阴影(发光边)就这样 场景:随机生成几个透明的发光的圆,滚来滚去,里面显示文字,每个圆可点击,携带参数跳转不同路由. 1.原想用strokeStyle画,但是出来后特别浅淡,基本看不见 ...

  7. vue中实现canvas画布基本操作

    <template><div class="practice-html5"><div><p>canvas1</p>< ...

  8. Vue中利用canvas添加炫动背景

    1.展示页面 <template><div id="main"><canvas id="myCanvas" style=" ...

  9. 简单实现vue中的登录拦截

    本文主要讲述如何在vue中使用路由判断简单实现登陆的的拦截. 如何实现 首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录.如果用户已经登录,则顺利 ...

最新文章

  1. 2017《面向对象程序设计》寒假作业一
  2. spacy如何安装最匹配的版本正规文档en_core_web
  3. Android 10 中有关限制非 SDK 接口的更新
  4. 使用aardio(快手)编程
  5. python Day6 面向对象学习
  6. 数据分析究竟该如何学?大神总结的6种数据分析思维到底如何?
  7. 深度学习笔记之DenseNets
  8. 【python】 字符串转小写(含汉字等时仍work)
  9. input函数的基本使用
  10. 国际智商测试皮肤软件,爆火的口服玻尿酸,是美容神器还是智商税?
  11. python数组赋值给变量_Python:将数组中的元素导出到变量中 (unpacking)
  12. Saltstack_使用指南17_salt-ssh
  13. 洛谷 P1097 统计数字
  14. 软件测试方法口诀,自测记忆法
  15. WIN10教育版激活方法
  16. maven移除全部依赖写法 exclude
  17. 数据分析与挖掘(一)误差与精度
  18. 如何修改服务器凭据,如何更改操作数据库帐户的用户凭据
  19. VMware发布Project Monterey
  20. Adobe Photoshop快捷键_艾孜尔江摘录

热门文章

  1. 打开电脑摄像头使用opencv保存的avi文件打不开
  2. vlookup反向查询_VLOOKUP的反向查找功能
  3. 【JokerのZYNQ7020】QSPI启动。
  4. UVA 1471 Defense Lines (STL + 二分)
  5. 用U盘安装XP操作系统
  6. rails官方指南--建一个简易博客
  7. XiaoHu日志 6/10~6/12
  8. 图文详解:K8S太火了!花10分钟玩转它不香么
  9. 【UI 设计】PhotoShop基础工具 -- 移动工具
  10. 【逻辑与计算理论】从逻辑到计算的转变之路