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

HTML01-知云接力

HTML01-知云接力

后端人员做前端样式的调试,真的兴趣不了一点!在此记录一些前端样式的个人小demo
知云接力(云上风暴)-起初我想做一个小游戏类型的项目,云朵上展示我每天学习的内容,这个知识点每天都会掉落一格,在界面中间部分(或者自己设置复习deadline),当云朵掉落到不同的警戒线会变为不同的颜色,每次复习之后,点击知识点,可以输入你的学习记录,然后该云朵就会上移一格。

以下是这个demo的完成20%代码

<!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 {
				font-family: Arial, sans-serif;
				margin: 0;
				padding: 0;
				display: flex;
				justify-content: center;
				align-items: center;
				height: 100vh;
				background-color: #f0f0f0;
			}

			.grid {
				display: grid;
				grid-template-columns: repeat(60, 20px);
				/* 100列 */
				grid-template-rows: repeat(30, 20px);
				/* 30行 */
				gap: 2px;
			}

			.cell {
				width: 20px;
				height: 20px;
				background-color: #87CEEB;
				border: 1px solid #ccc;
				display: flex;
				justify-content: center;
				align-items: center;
				font-size: 10px;
				cursor: pointer;
			}

			.cell.falling {
				background-color: #FF6347;
			}
		</style>
	</head>
	<body>
		<div class="grid" id="gameGrid">
			<!-- 动态生成的方格 -->
		</div>

		<script>
			// 模拟知识点数据
			const knowledgePoints = [{
					category: '数学',
					content: '微积分'
				},
				{
					category: '编程',
					content: 'JavaScript'
				},
				{
					category: '历史',
					content: '二战'
				},
				{
					category: '科学',
					content: '物理'
				}
			];

			// 生成方格
			const grid = document.getElementById('gameGrid');
			const rowCount = 30;
			const colCount = 60;

			function createGrid() {
				for (let row = 0; row < rowCount; row++) {
					for (let col = 0; col < colCount; col++) {
						const cell = document.createElement('div');
						cell.className = 'cell';
						cell.dataset.row = row;
						cell.dataset.col = col;
						grid.appendChild(cell);
					}
				}
			}

			// 初始化游戏
			createGrid();

			// 模拟知识点掉落
			let currentRow = 0;

			function dropKnowledgePoints() {
				for (let col = 0; col < colCount; col++) {
					const cell = document.querySelector(`[data-row="${currentRow}"][data-col="${col}"]`);
					if (knowledgePoints[col]) {
						cell.innerText = currentRow;
						// cell.innerText = knowledgePoints[col].content;
					}
					cell.addEventListener('click', handleCellClick);

					if (currentRow > 0) {
						const oldCell = document.querySelector(`[data-row="${currentRow - 1}"][data-col="${col}"]`);
						oldCell.innerText = '';
						oldCell.removeEventListener('click', handleCellClick);
					}
				}
				currentRow++;
			}

			// 处理方格点击事件
			function handleCellClick(event) {
				const cell = event.target;
				const blogUrl = prompt('请输入今天的学习过程地址:');
				if (blogUrl) {
					cell.innerText = '';
					cell.removeEventListener('click', handleCellClick);
					moveUpCell(cell);
				} else {
					cell.classList.add('falling');
				}
			}

			// 方格向上移动
			function moveUpCell(cell) {
				const row = parseInt(cell.dataset.row, 10);
				const col = parseInt(cell.dataset.col, 10);
				if (row > 0) {
					const newCell = document.querySelector(`[data-row="${row - 1}"][data-col="${col}"]`);
					newCell.innerText = cell.innerText;
					newCell.addEventListener('click', handleCellClick);
					cell.innerText = '';
				}
			}

			// 初始化知识点掉落
			dropKnowledgePoints();

			// 模拟每一天的时间流逝
			setInterval(() => {
				dropKnowledgePoints();
			}, 10000); // 每秒钟掉落一行
		</script>
	</body>
</html>

http://www.kler.cn/a/537001.html

相关文章:

  • 【慕伏白教程】Zerotier 连接与简单配置
  • 2025年时序数据库发展方向和前景分析
  • GPT-4使用次数有上限吗?一文了解使用规则
  • MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致
  • 爬虫学习笔记之Robots协议相关整理
  • web-文件上传-CTFHub
  • 【C语言】C语言经典面试题详解
  • 传华为2025年新品更新 用上超声波指纹nova上红枫
  • 大模型做导师之方案版本比较
  • Unity Shader Graph 2D - 使用DeepSeek协助绘制一个爱心
  • Spring Boot启动内嵌tocmat原理
  • mysql的原理及经验
  • Vue3+codemirror6实现公式(规则)编辑器
  • 记录一次mysql主从
  • 【远程控制】安装虚拟显示器
  • 快速上手——.net封装使用DeekSeek-V3 模型
  • openCV函数使用(一)
  • JMeter通过BeanShell写入CSV文件中的中文乱码
  • MoviePy,利用Python自动剪辑tiktok视频
  • 【Unity 墓地和自然环境场景资产包】PBR Graveyard and Nature Set 2.0 高质量的墓地3D 模型,丰富的自然环境元素,轻松构建具有沉浸感和氛围感的游戏世界
  • 三级等保、二级等保谁更高级 ?等保都有哪些?
  • Gateway路由匹配规则详解
  • k8s网络插件及基础命令
  • LINUX——内核驱动程序
  • Python+requests实现接口自动化测试
  • 阿里云不同账号vpc对等连接