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 相关文章推荐
判断多个input type=file是否有已经选择好文件的代码
May 23 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
Aug 22 Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
angular动态表单制作
Feb 23 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
Sep 16 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
Oct 30 Javascript
微信小程序学习之自定义滚动弹窗
Dec 20 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用GD库生成高质量的缩略图片
2011/03/09 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
python实现保存网页到本地示例
2014/03/16 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
预备党员综合考察材料
2014/05/31 职场文书
抗震救灾标语
2014/06/26 职场文书
司机岗位职责
2015/02/04 职场文书
个人学习总结范文
2015/02/15 职场文书
小学班主任研修日志
2015/11/13 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android