当前位置: 首页 > news >正文

HTML5+JavaScript绘制闪烁的网格错觉

HTML5+JavaScript绘制闪烁的网格错觉

闪烁的网格错觉(scintillating grid illusion)是一种视觉错觉,通过简单的黑白方格网格和少量的精心设计,能够使人眼前出现动态变化的效果。

闪烁的栅格错觉,是一种经典的视觉错觉现象。网格错觉是指在由黑白相间的格子组成的图案中,观看者会在网格的交叉点处看到并不实际存在的灰色斑点或黑色圆点的现象。最早由德国心理学家卢迪马尔·赫尔曼(Ludimar Hermann)在1870年发现并报告。

如图所示:

HTML5+JavaScript绘制闪烁的网格错觉,源码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>闪烁网格错觉</title><style>body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background-color: #F0FFFF;}canvas {border: 2px solid #333;}</style>
</head>
<body><canvas id="illusion" width="400" height="400"></canvas><script>const canvas = document.getElementById('illusion');const ctx = canvas.getContext('2d');const gridSize = 10;const cellSize = canvas.width / gridSize;function drawGrid() {// 设置黑色背景ctx.fillStyle = 'black';ctx.fillRect(0, 0, canvas.width, canvas.height);// 绘制灰色网格线#888ctx.strokeStyle = '#696969';ctx.lineWidth = 10;// 绘制竖线和横线for (let i = 1; i < gridSize; i++) {const pos = i * cellSize;// 竖线ctx.beginPath();ctx.moveTo(pos, 0);ctx.lineTo(pos, canvas.height);ctx.stroke();// 横线ctx.beginPath();ctx.moveTo(0, pos);ctx.lineTo(canvas.width, pos);ctx.stroke();}// 在交叉点绘制白色圆点ctx.fillStyle = 'white';for (let x = cellSize; x < canvas.width; x += cellSize) {for (let y = cellSize; y < canvas.height; y += cellSize) {ctx.beginPath();ctx.arc(x, y, 5, 0, Math.PI * 2);ctx.fill();}}}drawGrid();</script>
</body>
</html>

http://www.lryc.cn/news/448592.html

相关文章:

  • 每日OJ题_牛客_拼三角_枚举/DFS_C++_Java
  • [uni-app]小兔鲜-01项目起步
  • 安全的价值:构建现代企业的基础
  • 门面(外观)模式
  • kotlin flow 使用
  • vue3 实现文本内容超过N行折叠并显示“...展开”组件
  • 根据源码解析Vue2中对于对象的变化侦测
  • 爬虫技术深潜:探究 JsonPath 与 XPath 的语法海洋与实战岛屿
  • 纠删码参数自适应匹配问题ECP-AMP实验方案(一)
  • 五、人物持有武器攻击
  • mysql索引 -- 全文索引介绍(如何创建,使用),explain关键字
  • Wayfair封号的常见原因及解决方案解析
  • 计算机视觉方面的一些模块
  • 进阶美颜功能技术开发方案:探索视频美颜SDK
  • 【重学 MySQL】三十八、group by的使用
  • SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目
  • 基于Hive和Hadoop的白酒分析系统
  • 【软考】高速缓存的组成
  • UniApp基于xe-upload实现文件上传组件
  • 以太网交换安全:端口隔离
  • 望繁信科技CTO李进峰受邀在上海外国语大学开展流程挖掘专题讲座
  • nicegui组件button用法深度解读,源代码IDE运行和调试通过
  • 数据结构:树(并查集)
  • 校园二手交易平台的小程序+ssm(lw+演示+源码+运行)
  • 代码随想录训练营第46天|回文子序列
  • 使用 PowerShell 命令更改 RDP 远程桌面端口(无需修改防火墙设置)
  • bilibili实现批量发送弹幕功能
  • 如何查看上网记录及上网时间?5种按步操作的方法分享!【小白也能学会!】
  • Nisshinbo日清纺pvs1114太阳模拟器手测
  • 多线程复杂系统调试利器——assert()