如何利用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工作流
3D圆形玉雕图案comfyui工作流
梦幻中的一只猫咪ComfyUI工作流
小鸟在黑暗的天空中优雅地跳舞
一尊白玉佛像ComfyUI工作流
一匹热血沸腾的汗血宝马庄严地站立着ComfyUI工作流
一只精致透明的朱红色水晶狐狸
Latent放大comfyui工作流
猜你喜欢
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

canvas空间文本射线
css3绘制一个会动的大嘴鸟
纯css制作卡通头像(随鼠标转头)
css3+js菜单点击动态效果
利用CSS3做一个星级评分样式
利用js做一个炫酷音乐背景效果
会议人员60s签到倒计时插件
利用CSS3代码编写45款按钮效果











