bootstrap实现九宫格效果(猫捉老鼠游戏)

最近,孩子的幼儿园让家长体验“半日助教活动”,每个家长需要讲授15-20分钟的课程。作为一名程序员,实在没有能教的课程,只能做了一个小游戏,带着小朋友们熟悉数字。

效果大致是这样的。九宫格的左上角是一只小猫图片,右下角是小老鼠图片,其他7个方框都是数字。方框被点击时背景图片就会变成小猫,每次点击都相当于小猫移动了一步,直到点击老鼠,老鼠的图片被替换,相当于猫捉到老鼠了。

 废话不多说,直接上代码。

html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><!-- 引入bootstrap --><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="./css/d1g.css"><title>九宫格图片</title>
</head>
<body><!-- 操作区 --><div id="imgInfo"><button id="fileBtn" class="btn btn-info">当前为第1关</button><br><button id="updateUrl"class="btn btn-info">第2关</button><button id="clearInput"class="btn btn-primary">第3关</button><button id="tsBtn"class="btn btn-warning">提示</button><button id="resetBtn"class="btn btn-success">重新开始</button><br></div><!-- 九宫格图片 --><div class="wrap" id="wrap"><div class="box" id="box1"></div><div class="box" id="box2"></div><div class="box" id="box3"></div><div class="box" id="box4"></div><div class="box" id="box5"></div><div class="box" id="box6"></div><div class="box" id="box7"></div><div class="box" id="box8"></div><div class="box" id="box9"></div></div>
</body>
<!-- 引入js文件 -->
<script src="./js/d1g.js"></script>
</html>

css:

/* 按钮容器 */
#imgInfo{margin: 20px;text-align: center;width: 100%;height: 20%;
}
#fileBtn{margin-bottom: 3.125rem;
}#updateBtn{padding-right: 3.125rem;
}/* 九宫格  */
.wrap{width: 1806px;height: 1806px;margin: 0 auto;display: flex;flex-wrap: wrap;justify-content: space-between;align-content: space-between;
}
.wrap > .box{width: 600px;height: 600px;background-repeat: no-repeat;background-size: cover;
}

js:

window.onload = function(xh){var intNum = 1;// 获取视口宽度var screenWidth = window.innerWidth;// 获取视口高度var screenHeight = window.innerHeight;var wrap = document.querySelector('#wrap');var wrapWidth = screenHeight*0.78 + 'px'var btnWidth = screenWidth*0.2 + 'px'var btnHeight = screenHeight*0.06 + 'px'var fontHeight = screenHeight*0.06/2 + 'px'wrap.style.width =wrapWidth;wrap.style.height =wrapWidth;//获取元素var fileBtn = document.querySelector('#fileBtn')fileBtn.style.width = btnWidth;fileBtn.style.height = btnHeight;fileBtn.style.fontSize = fontHeight; // 将字体大小设置var updateBtn = document.querySelector('#updateUrl')//第2关var clearBtn = document.querySelector('#clearInput')//第3关var tsBtn = document.querySelector('#tsBtn')//提示var resetBtn = document.querySelector('#resetBtn')//重新开始/*设置按钮属性*/updateBtn.style.width = screenWidth*0.1 + 'px';updateBtn.style.height = screenHeight*0.04 + 'px';updateBtn.style.fontSize = screenHeight*0.04/2 + 'px';clearBtn.style.width = screenWidth*0.1 + 'px';clearBtn.style.height = screenHeight*0.04 + 'px';clearBtn.style.fontSize = screenHeight*0.04/2 + 'px';tsBtn.style.width = screenWidth*0.1 + 'px';tsBtn.style.height = screenHeight*0.04 + 'px';tsBtn.style.fontSize = screenHeight*0.04/2 + 'px';resetBtn.style.width = screenWidth*0.1 + 'px';resetBtn.style.height = screenHeight*0.04 + 'px';resetBtn.style.fontSize = screenHeight*0.04/2 + 'px';resetBtn.onclick = function(){window.onload(2)}var maskBox = document.querySelector("#mask")//监听 更新 按钮的点击updateBtn.onclick = function(){window.open('./d2g.html');}//监听 清空 按钮的点击clearBtn.onclick = function(){window.open('./d3g.html');}if(xh!=2){//开始配音var audio = new Audio('./audio/py7.MP3');// 播放音频audio.play();}//加载图片//获取所有格子var box = document.getElementsByClassName('box')//为每个容器设置背景图的urlfor(var i=0;i<box.length;i++){box[i].style.width =screenHeight*0.26 + 'px';box[i].style.height =screenHeight*0.26 + 'px';box[i].style.border = '1.5px solid white'var j = i+1;let selector = `#box${j}`;if(i==0){document.querySelector(selector).style.backgroundImage = `url('./img/xm1.png')`}if(i>0&i<8){document.querySelector(selector).style.backgroundImage = `url('./img/sz${j}.jpg')`}if(i==8){document.querySelector(selector).style.backgroundImage = `url('./img/ls1.png')`}}tsBtn.onclick = function(){audio = new Audio('./audio/py1.MP3');// 播放音频audio.play();}//选中点击数字图片事件document.querySelectorAll('.box').forEach(function(element) {element.addEventListener('click', function(event) {var kjId = this.idconst numbers = kjId.match(/\d+/g);for(var i=1;i<9;i++){if(i!=numbers){let selector = `#box${i}`;document.querySelector(selector).style.backgroundImage = `url('./img/sz${i}.jpg')`}}document.querySelector(`#${this.id}`).style.backgroundImage = `url('./img/xm1.png')`audio = new Audio('./audio/py13.MP3');// 播放音频audio.play();if(numbers==9){document.querySelector(`#${this.id}`).style.backgroundImage = `url('./img/xm2.png')`pauseSeconds(0.5, () => {audio = new Audio('./audio/py3.MP3');// 播放音频audio.play();})}});})function pauseSeconds(seconds, callback) {setTimeout(callback, seconds * 1000);}
}

图片我就不上传了,读者自行放几张就OK~快去试试吧~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pandas高效数据清洗与转换技巧指南【数据预处理】

三、数据处理 1.合并数据&#xff08;join、merge、concat函数&#xff0c;append函数&#xff09; Concat()函数使用 1.concat操作可以将两个pandas表在垂直方向上进行粘合或者堆叠。 join属性为outer&#xff0c;或默认时&#xff0c;返回列名并集&#xff0c;如&#xff…

Spring Boot集成Picocli快速入门Demo

1.什么是Picocli&#xff1f; Picocli是一个单文件命令行解析框架&#xff0c;它允许您创建命令行应用而几乎不需要代码。使用 Option 或 Parameters 在您的应用中注释字段&#xff0c;Picocli将分别使用命令行选项和位置参数填充这些字段。使用Picocli来编写一个功能强大的命…

市面上前 11 名的 Android 数据恢复软件

Android数据恢复软件是恢复无意中删除的文件或文件夹的必要工具。该软件还将帮助您恢复丢失或损坏的信息。本文介绍提供数据备份和磁盘克隆选项的程序&#xff0c;这些选项有助于在Android设备上恢复文件的过程。 如果您正在寻找一种有效的方法来恢复图像&#xff0c;文档&…

SpringBoot——整合Thymeleaf模板

目录 模板引擎 新建一个SpringBoot项目 pom.xml application.properties Book BookController bookList.html ​编辑 项目总结 模板引擎 模板引擎是为了用户界面与业务数据分离而产生的&#xff0c;可以生成特定格式的页面在Java中&#xff0c;主要的模板引擎有JSP&…

Python 闭包的高级用法详解

所谓闭包&#xff0c;就是指内函数使用了外函数的局部变量&#xff0c;并且外函数把内函数返回出来的过程&#xff0c;这个内函数称之为闭包函数。可以理解为是函数式编程中的封装。 内部函数可以使用外部函数定义的属性&#xff1a;外部函数调用后&#xff0c;返回内部函数的地…

Linux_web控制台-cockpit

1、安装cockpit [rootlocalhost ~]# dnf install cockpit -y 2、启动cockpit服务并查运行状态 [rootlocalhost ~]# systemctl start cockpit [rootlocalhost ~]# systemctl status cockpit 2、设置开机启动 [rootlocalhost ~]# vim /usr/lib/systemd/system/cockpit.servi…

局域网桌面监控软件哪个好用?良心推荐

如何有效地监控和管理内部员工的计算机使用行为&#xff0c;防范潜在的安全风险&#xff0c;提高工作效率&#xff0c;是众多企业管理者关注的焦点。 而一款优秀的局域网桌面监控软件无疑能为企业的IT治理提供有力支撑。 小编在此给大家推荐一款好用的局域网桌面监控软件——域…

5. C++网络编程-UDP协议的实现

UDP是无连接的。 UDP Server网络编程基本步骤 创建socket&#xff0c;指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的&#xff0c;直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto

MCS-51伪指令

上篇我们讲了汇编指令格式&#xff0c;寻址方式和指令系统分类&#xff0c;这篇我们讲一下单片机伪指令。 伪指令是汇编程序中用于指示汇编程序如何对源程序进行汇编的指令。伪指令不同于指令&#xff0c;在汇编时并不翻译成机器代码&#xff0c;只是会汇编过程进行相应的控制…

已有yarn集群部署spark

已有yarn集群的情况下&#xff0c;部署spark只需要部署客户端。 一、前提条件 已部署yarn集群&#xff0c;部署方式参考&#xff1a;https://blog.csdn.net/weixin_39750084/article/details/136750613?spm1001.2014.3001.5502&#xff0c;我部署的hadoop版本是3.3.6已安装j…

Android Compose 九:常用组件列表 简单使用

遇事不决 先看官方文档 列表和网格 如果不需要任何滚动&#xff0c;通过Column 或 Row可以使用verticalScroll() 使Column滚动 Column(modifier Modifier.verticalScroll(rememberScrollState())) {for (i in 0..50){Text(text "条目>>${i}")}}显示大量列表…

从0开始linux(3)——如何读写文件

欢迎来到博主的专栏——从0开始linux 博主ID&#xff1a;代码小豪 文章目录 创建普通文件用文本编辑器nano写入文件如何读取文件cat命令less命令head和tail 我们前面已经了解和如何操作文件&#xff0c;但是目前认识的文件类型分为两类&#xff0c;一类是目录文件、另一类是普通…

【C#上位机应用开发实战】—— 通信模块的基础与实践

&#x1f680; 引言 在工业自动化、设备监控、物联网&#xff08;IoT&#xff09;等领域&#xff0c;上位机软件扮演着至关重要的角色。作为连接人与设备的桥梁&#xff0c;上位机软件不仅需要提供友好的用户界面&#xff0c;更需要具备高效、稳定的通信能力。今天&#xff0c…

ASP+ACCESS教师档案管理系统

3.1 系统功能模块图 3.2 E&#xff0d;R模型图 3.3 系统使用流程图 3.4 各个模块功能简介&#xff1a; 本系统分为五个功能模块&#xff0c;它们分别是教师信息录入模块、教师信息修改模块、教师信息查询模块、教师信息打印模块。 下面分别介绍各个模块的功能用途&#x…

第 398 场 LeetCode 周赛题解

A 特殊数组 I 模拟&#xff1a;遍历数组判断是否是一个特殊数组 class Solution { public:bool isArraySpecial(vector<int>& nums) {int r 0;while (r 1 < nums.size() && nums[r 1] % 2 ! nums[r] % 2)r;return r nums.size() - 1;} };B 特殊数组 I…

计网(部分在session学习章)

TCP/UDP TCP:面向连接,先三次握手建立连接,可靠传输。 UDP:无连接,不可靠,传递的快。 TCP可靠传输 1.分块编号传输; 2.校验和,校验首部和数据的检验和,检测数据在传输中的变化; 3.丢弃重复数据; 4.流量控制,TCP 利⽤滑动窗⼝实现流量控制。TCP的拥塞控制采⽤…

基于Matlab卷积神经网络人脸识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别作为计算机视觉领域的关键技术之一&#xff0c;具有广泛的应用前景&#xff0c;如安全…

Add object from object library 从对象库中添加内置器件

Add object from object library 从对象库中添加内置器件 正文正文 对于 Lumerical,有些时候我们在使用中,可能需要从 Object library 中添加器件,通常我们的做法是手动添加。如下图所示,我们添加一个 Directional Coupler 到我们的工程文件中: 但是这种操作方式不够智能…

基于HTML5和CSS3搭建一个Web网页(二)

倘若代码中有任何问题或疑问&#xff0c;欢迎留言交流~ 网页描述 创建一个包含导航栏、主内容区域和页脚的响应式网页。 需求: 导航栏: 在页面顶部创建一个导航栏&#xff0c;包含首页、关于我们、服务和联系我们等链接。 设置导航栏样式&#xff0c;包括字体、颜色和背景颜…

上门服务系统开发|东邻到家系统|上门服务系统开发流程

上门服务小程序的开发流程是一个复杂且精细的过程&#xff0c;涉及到需求分析、设计规划、开发实施、测试验收以及上线运营等多个环节。下面将详细介绍上门服务小程序的开发流程&#xff0c;帮助读者全面了解并掌握其中的关键步骤。 一、需求分析 在开发上门服务小程序之前&am…