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 replace正则表达式应用案例讲解
Jan 17 Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
JavaScript设计模式开发中组合模式的使用教程
May 18 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
node中的密码安全(加密)
Sep 17 Javascript
JavaScript常用数组操作方法,包含ES6方法
May 10 Javascript
详解puppeteer使用代理
Dec 27 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
浅谈layui 绑定form submit提交表单的注意事项
Oct 25 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
Feb 10 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生成EXCEL的东东
2006/10/09 PHP
php学习之function的用法
2012/07/14 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
yii添删改查实例
2015/11/16 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
jQuery实现预加载图片的方法
2015/03/17 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python groupby 函数 as_index详解
2019/12/16 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
Python实现自动装机功能案例分析
2020/10/22 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
公益活动邀请函
2014/02/05 职场文书
2014信息公开实施方案
2014/02/22 职场文书
优秀食品类广告词
2014/03/19 职场文书
公司合作意向书
2014/04/01 职场文书
大学生毕业评语
2014/12/31 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
Python实现byte转integer
2021/06/03 Python