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 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
Dec 15 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
Jun 21 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
Aug 17 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 Javascript
react的hooks的用法详解
Oct 12 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截取中文字符串不乱码的方法
2013/12/25 PHP
php汉字转拼音的示例
2014/02/27 PHP
twig里使用js变量的方法
2016/02/05 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
Python BS4库的安装与使用详解
2018/08/08 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
学习python可以干什么
2019/02/26 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
预防煤气中毒方案
2014/06/16 职场文书
影视广告专业求职信
2014/09/02 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
JavaScript实现音乐播放器
2022/08/14 Javascript