Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body, html { margin: 0; } canvas { display: block; cursor: pointer; }
JavaScript
let config = { useRandomValuesInstead: true, lineWidth: 3, nrOfStripes: 6, size: 42, colorWheelOffset: 0, }; let canvas; let ctx; let w, h; let hexagons; class Hexagon { constructor(x, y, R, r, t) { this.x = x; this.y = y; this.R = R; this.r = r; this.t = t; } draw() { ctx.save(); ctx.translate(this.x, this.y); let angle = Math.PI * 2 / 3; let nrOfRotations = 3; for(let rot = 0; rot < nrOfRotations; rot++) { ctx.rotate(angle); for(let i = 0; i < config.nrOfStripes + 1; i++) { let y1 = -this.R * i / config.nrOfStripes; let y2 = y1 + this.t / 2; ctx.beginPath(); ctx.moveTo(0, y1); ctx.lineTo(this.r, y2); ctx.strokeStyle = this.calculateColor(this.x, this.y); ctx.stroke(); } } ctx.restore(); } calculateColor(x, y) { let deltax = w / 2 - x; let deltay = h / 2 - y; let angle = Math.atan2(deltay, deltax); let hue = angle * 180 / Math.PI + config.colorWheelOffset; let dist = Math.sqrt(deltax * deltax + deltay * deltay); let saturation = dist/Math.min(w, h) * 100; return `hsl(${hue}, ${saturation}%, 50%)`; } } function setup() { canvas = document.querySelector("#canvas"); ctx = canvas.getContext("2d"); window.addEventListener("resize", resize); canvas.addEventListener("click", draw); resize(); } function resize() { w = canvas.width = window.innerWidth; h = canvas.height = window.innerHeight; ctx.fillStyle = "black"; ctx.lineWidth = config.lineWidth; ctx.lineCap = "round"; ctx.lineJoin = "round"; draw(); } function setupHexagons() { hexagons = []; let r = config.size; 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, r, t); hexagons.push(hexagon); } } } function draw() { if(config.useRandomValuesInstead) { config.lineWidth = Math.random() * 3 + 1; config.nrOfStripes = Math.ceil(Math.random() * 8); config.size = Math.random() * 70 + 10; config.colorWheelOffset = Math.random() * 360; } setupHexagons(); ctx.fillRect(0, 0, w, h); hexagons.forEach(h => { h.draw(); }); } setup();
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>canvas 彩虹六边形条纹-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号