共计 1795 个字符,预计需要花费 5 分钟才能阅读完成。
前言
HTML5 Canvas 是一个强大的工具,它允许我们在网页上绘制图形和动画。在项目中,将使用 Canvas 创建一个动态的星空背景和一组响应鼠标移动的触手动画效果。
实现效果
一、HTML
首先,我们需要设置 HTML 结构。这包括一个 canvas 元素,它将作为我们的绘图表面。
canvas id="canvas">/canvas>
二、CSS 样式
接下来,我们添加一些 CSS 来确保 canvas 元素覆盖整个浏览器窗口。
body {
margin: 0;
padding: 0;
overflow: hidden;
background: #000;
}
canvas {
display: block;
background: #000;
}
JavaScript
1. 初始化 Canvas
代码如下(示例):
function initializeCanvas(elemid) {
let canvas = document.getElementById(elemid);
let context = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
createStars(context, canvas.width, canvas.height);
return { context: context, canvas: canvas };
}
2. 创建星空背景
使用 createStars 函数在 Canvas 上随机绘制小点,模拟星空。
代码如下(示例):
function createStars(context, width, height) {
const stars = 500;
for (let i = 0; i stars; i++) {
const x = Math.random() * width;
const y = Math.random() * height;
const radius = Math.random() * 2;
context.beginPath();
context.arc(x, y, radius, 0, Math.PI * 2, false);
context.fillStyle = 'white';
context.fill();
}
}
3. 定义触手
我们用 Segment 类来表示触手。
class Segment {
constructor(parent, length, angle, isFirst) {
this.position = isFirst ? { x: parent.x, y: parent.y } : { x: parent.nextPosition.x, y: parent.nextPosition.y };
this.length = length;
this.angle = angle;
this.nextPosition = {
x: this.position.x + length * Math.cos(this.angle),
y: this.position.y + length * Math.sin(this.angle)
};
}
}
4. 实现触手的动态效果
class Tentacle {
constructor(x, y, length, segments, angle) {
this.x = x;
this.y = y;
this.length = length;
this.segments = segments;
}
updatePosition(lastTarget, target) {
}
drawSegments(target) {
}
drawBase(target) {
}
}
5. 实现交互功能
通过监听 mousemove 和 mouseleave 事件来添加鼠标交互功能,实现触手随着鼠标动。
canvas.addEventListener("mousemove", function(e) {
mouse.x = e.pageX - this.offsetLeft;
mouse.y = e.pageY - this.offsetTop;
}, false);
canvas.addEventListener("mouseleave", function(e) {
mouse.x = false;
mouse.y = false;
});
完整代码自取
网盘自取
https://pan.xunlei.com/s/VO739R4_yu9Yym5HjH5X7JnAA1?pwd=uifw
仅供交流学习使用。
原文地址: 使用 HTML5 Canvas 动画:创建动态星空和触手效果
正文完