javascript实现前端成语点击验证


Posted in Javascript onJune 24, 2020

本文实例为大家分享了javascript实现前端成语点击验证的具体代码,供大家参考,具体内容如下

首先先看看效果图吧

javascript实现前端成语点击验证

需求分析:

1.随机生成成语,成语的位置随机分布,并渲染在页面上。
2.点击文字的有效区域,依次点击,并将点击的文字依次保存在数组中,然后和之前生成的成语进行比较,如果相等,则验证成功,否则验证失败,重新刷新页面。

代码实现:

首先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">
 <link rel="stylesheet" href="./index.css" >
 <title>点击成语验证</title>
</head>
<body>
 <div class="idiom_box">
 <div class="bg_img"></div>
 
 </div>
 <div class="verify_box"></div>
 <script src="./jquery-1.11.0.min.js"></script>
 <script src="./index.js"></script>
</body>
</html>

CSS样式:

*{
 margin: 0;
 padding: 0;
}
body{
 background-color: #E6E6FA; /* background-size: 100%; */
}
.idiom_box{
 width: 400px;
 height: 200px;
 border: 2px solid #00FFFF;
 border-radius: 10px;
 position: relative;
 margin: 50px auto 0;
 background-size: 100%;
 background-repeat: no-repeat;
 transition: all 2s;
 overflow: hidden;
}
.bg_img{
 width: 100%;
 height: 100%;
 background-image: url(./photo.jpg);
 background-size: cover;
}
.idiom_box .idiom_content{
 width: 200px;
 height: 100px;
 position: absolute;
 /* background-color: red; */
}
.idiom_content span{
 font-size: 40px;
 position: absolute;
 z-index: 4;
 color: #EBEBEB;
 font-weight: bold;
 transition: all 2s;
 cursor: pointer;
}
.idiom_content span:hover{
 color: #E0FFFF;
 font-size: 50px;
 transition: all 1.5s ease;
}
.verify_box{
 width: 400px;
 height: 40px;
 margin: 10px auto 0;
 border: 1px solid greenyellow;
 text-align: center;
 font-size: 26px;
 line-height: 40px;
 color: #C71585;
 font-weight: bold;
 transition: all 2s;
 border-radius: 10px;
 background-color: white;
}
.verify_box span{
 color: #FF7F00;
 transition: all 2s;
}

JS:

//创建成语
let idiomArr = ["新春快乐", "阖家快乐", "恭贺新禧", "万事如意", "张灯结彩", "恭喜发财", "假期愉快", "今晚吃鸡"];
//获取随机打乱的成语
let randomIdiom = idiomArr[Math.floor(Math.random() * (idiomArr.length - 1))];
// console.log(randomIdiom)
$('.verify_box').html(`请依次点击: <span>${randomIdiom}</span>`)
//创建位置的数组
let placeArr = [
 { left: '0px', top: '0px' },
 { left: '200px', top: '0px' },
 { left: '0px', top: '100px' },
 { left: '200px', top: '100px' }
]
//随机打乱位置数组
placeArr.sort(function () {
 return Math.random() - 0.5
})
// console.log(placeArr)

//遍历成语并创建标签
for (i in randomIdiom) {
 let left = Math.floor(Math.random() * 150);
 let top = Math.floor(Math.random() * 50);
 // console.log(left,top)
 //创建存放span的div对象
 divs = $('<div class="idiom_content"></div>')
 //给div定位
 divs.css({
 left: placeArr[i].left,
 top: placeArr[i].top
 })
 //创建储存文字的span标签
 span = $(`<span>${randomIdiom[i]}</span>`)
 //随机span的位置
 span.css({
 left: left + 'px',
 top: top + 'px'
 });
 divs.append(span);
 $('.idiom_box').append(divs)
}
//事件委托
var verifyArr = [];
var str = null;
var timer = null;
var idiomBox = document.querySelector('.idiom_box');
clearTimeout(timer)
idiomBox.onclick = function (e) {
 e.target ? e.srcElement : e.target;
 if (e.target.tagName == 'SPAN') {
 // console.log(e.target.innerText);
 verifyArr.push(e.target.innerText);
 str = verifyArr.join('')
 if (str.length === randomIdiom.length) {
  if (str == randomIdiom) {
  // alert('验证成功!!')
  $('.verify_box').html('验证成功')
  } else {
  $('.verify_box').html('验证失败')
  timer = setTimeout(() => {
   location.reload()
  }, 1000);
  }
 }
 } else {
 alert('请点击有效区域')
 }
}

验证成功的效果:

javascript实现前端成语点击验证

点击区域不对的效果:

javascript实现前端成语点击验证

验证失败的效果:

javascript实现前端成语点击验证

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery $.ajax各个事件执行顺序
Oct 15 Javascript
使用JavaScript动态设置样式实现代码及演示动画
Jan 25 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
Mar 26 Javascript
使用纯javascript实现放大镜效果
Mar 18 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
node.js微信公众平台开发教程
Mar 04 Javascript
jQuery实现的表格展开伸缩效果实例
Sep 07 Javascript
node+express+ejs使用模版引擎做的一个示例demo
Sep 18 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
vue项目中全局引入1个.scss文件的问题解决
Aug 01 Javascript
vue监听用户输入和点击功能
Sep 27 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 #Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 #Javascript
javascript实现评分功能
Jun 24 #Javascript
javascript实现移动端红包雨页面
Jun 23 #Javascript
JS实现canvas简单小画板功能
Jun 23 #Javascript
javascript+Canvas实现画板功能
Jun 23 #Javascript
vue.js实现照片放大功能
Jun 23 #Javascript
You might like
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
PHP模块化安装教程
2016/06/01 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
Python切片工具pillow用法示例
2018/03/30 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
django admin组件使用方法详解
2019/07/19 Python
python实现学生成绩测评系统
2020/06/22 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
美国渔具店:FishUSA
2019/08/07 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
房地产融资计划书
2014/01/10 职场文书
学生安全责任书
2014/04/15 职场文书
金砖之国观后感
2015/06/11 职场文书