如何利用html5
和canvas
做一个彩色六角菱形背景效果,下面web建站小编给大家详细介绍一下具体代码!
html代码:
<canvas id="canvas"></canvas>
js代码:
let canvas; let ctx; let w, h; let hexagons; class Hexagon { constructor(x, y, R) { this.x = x; this.y = y; this.R = R; } draw() { let baseHue = Math.random() * 360; ctx.save(); ctx.translate(this.x, this.y); let angle = Math.PI * 2 / 3; let nrOfRotations = 3; let a = Math.PI / 6; for (let rot = 0; rot < nrOfRotations; rot++) { ctx.rotate(angle); setColor(baseHue); ctx.beginPath(); ctx.moveTo(0, 0); let x1 = Math.cos(Math.PI / 3 + a) * this.R; let y1 = Math.sin(Math.PI / 3 + a) * this.R; ctx.lineTo(x1, y1); let x2 = Math.cos(a) * this.R; let y2 = Math.sin(a) * this.R; ctx.lineTo(x2, y2); ctx.lineTo(0, 0); ctx.fill(); //ctx.stroke(); setColor(baseHue); ctx.beginPath(); ctx.moveTo(0, 0); ctx.lineTo(x2, y2); let x3 = Math.cos(-Math.PI / 3 + a) * this.R; let y3 = Math.sin(-Math.PI / 3 + a) * this.R; ctx.lineTo(x3, y3); ctx.lineTo(0, 0); ctx.fill(); //ctx.stroke(); } ctx.restore(); }} function setup() { canvas = document.querySelector("#canvas"); ctx = canvas.getContext("2d"); window.addEventListener("resize", () => { resize(); draw(); }); canvas.addEventListener("click", draw); resize(); } function setColor(baseHue) { let hueOffset = Math.random() * 5; let h = baseHue + hueOffset; let s = Math.random() * 5 + 40; let l = Math.random() * 10 + 60; let color = `hsl(${h}, ${s}%, ${l}%)`; ctx.strokeStyle = color; ctx.fillStyle = color; } function resize() { w = canvas.width = window.innerWidth; h = canvas.height = window.innerHeight; } function setupHexagons() { hexagons = []; let r = Math.random() * 80 + 20; let R = r / Math.cos(Math.PI / 6); let t = r * 2 / Math.sqrt(3); let rows = w / (r * 2) + 1; let cols = h / R; for (let x = 0; x < rows; x++) { for (let y = 0; y < cols; y++) { let xOffset = y % 2 === 0 ? r : 0; let xPixel = r * x * 2 + xOffset; let yPixel = (t / 2 + R) * y; let hexagon = new Hexagon(xPixel, yPixel, R); hexagons.push(hexagon); } } } function draw() { ctx.fillStyle = "grey"; ctx.fillRect(0, 0, w, h); setupHexagons(); hexagons.forEach(h => { h.draw(); }); } setup(); draw();
一款用于在网页上生成五彩纸屑特效的JavaScript库——Canvas Confetti
上面是“html5+canvas如何做一个彩色六角菱形背景”的全面内容,想了解更多关于 js 内容,请继续关注web建站教程。
当前网址:https://ipkd.cn/webs_3482.html
workflows工作流
- 荷塘月色ComfyUI工作流
- 一艘来自工业时代的飞船ComfyUI工作流
- 半透明的玻璃苹果ComfyUI工作流
- 一只可爱的小鸟在飞翔ComfyUI工作流
- 一个精致透明的朱红色水晶凤凰
- 文生图工作流:图片合并comfyui工作流
- 一辆在泥潭中奔跑的布加迪ComfyUI工作流
- 一只精致透明的朱红色水晶狐狸
猜你喜欢
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!