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 相关文章推荐
一个js封装的不错的选项卡效果代码
Feb 15 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
Javascript表单验证要注意的事项
Sep 29 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
Dec 16 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
Javascript中click与blur事件的顺序详析
Apr 25 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
vue绑定数字类型 value为数字的实例
Aug 31 Javascript
Vue使用Proxy代理后仍无法生效的解决
Nov 13 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
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日期处理函数 整型日期格式
2011/01/12 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
phpfpm的作用和用法
2019/10/10 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
python 控制语句
2011/11/03 Python
回调函数的意义以及python实现实例
2017/06/20 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
python匿名函数的使用方法解析
2019/10/10 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
党的群众教育实践活动实施方案
2014/06/12 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
学校教代会开幕词
2016/03/04 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android