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 相关文章推荐
IE iframe的onload方法分析小结
Jan 07 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
Javscript调用iframe框架页面中函数的方法
Nov 01 Javascript
javascript用函数实现对象的方法
May 14 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
Jun 04 Javascript
javascript小数精度丢失的完美解决方法
May 31 Javascript
BootStrap实现树形目录组件代码详解
Jun 21 Javascript
JS简单测试循环运行时间的方法
Sep 04 Javascript
JS中使用media实现响应式布局
Aug 04 Javascript
react-redux中connect的装饰器用法@connect详解
Jan 13 Javascript
Vue实现搜索 和新闻列表功能简单范例
Mar 16 Javascript
如何对react hooks进行单元测试的方法
Aug 14 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中Smarty模板初体验
2011/08/08 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
javascript闭包入门示例
2014/04/30 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
在Django中使用Sitemap的方法讲解
2015/07/22 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python实现k-means算法
2018/02/23 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
护理毕业生自荐信范文
2013/12/22 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
师范生自荐信模板
2014/05/28 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
辩护意见书
2015/06/04 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
Python中如何处理常见报错
2022/01/18 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL