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 相关文章推荐
悄悄用脚本检查你访问过哪些网站的代码
Dec 04 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
禁止拷贝网页内容的js代码
Jan 22 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
JavaScript弹出窗口方法汇总
Aug 12 Javascript
JavaScript中Function详解
Feb 27 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
javascript文本模板用法实例
Jul 31 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
vue如何使用外部特殊字体的操作
Jul 30 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/01/18 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
vue debug 二种方法
2018/09/16 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
Python中__init__和__new__的区别详解
2014/07/09 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
安全生产一岗双责责任书
2014/07/28 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
雨中的树观后感
2015/06/03 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL