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 相关文章推荐
说明你的Javascript技术很烂的五个原因
Apr 26 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
jquery ui对话框实例代码
May 10 Javascript
JavaScript打印iframe内容示例代码
Aug 20 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
Dec 18 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
p5.js实现简单货车运动动画
Oct 23 Javascript
Vue 实现html中根据类型显示内容
Oct 28 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
深入分析jquery解析json数据
2014/12/09 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
利用python实现数据分析
2017/01/11 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
行政专员工作职责
2013/12/22 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
合伙经营协议书
2014/04/18 职场文书
小学生综合素质评语
2014/04/23 职场文书
学校节能减排方案
2014/06/13 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
mysql sock文件存储了什么信息
2022/07/15 MySQL