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类(纯JS, Ajax模式)
Mar 12 Javascript
js解析与序列化json数据(三)json的解析探讨
Feb 01 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
May 28 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
Mar 23 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
May 27 Javascript
vue购物车插件编写代码
Nov 27 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 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函数
2008/10/03 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
解析argc argv在php中的应用
2013/06/24 PHP
php数组删除元素示例
2014/03/21 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
Node.js简单入门前传
2017/08/21 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
Python中列表与元组的乘法操作示例
2018/02/10 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
python空元组在all中返回结果详解
2020/12/15 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
化工厂员工工作总结
2015/10/15 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
详解MySQL中的pid与socket
2021/06/15 MySQL
python 中yaml文件用法大全
2021/07/04 Python
使用Python获取字典键对应值的方法
2022/04/26 Python