html登录写滑块认证

news/2024/7/10 23:08:48 标签: html, jquery, js

一、作用

我们在登录网站的时候一般会让我们滑动认证或者是验证码认证,这个主要是可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上是现在很多网站通行的方式,验证防止你是机器人(程序),属于安全验证,和验证码差不多,又比验证码方便。

二、实现

html页面:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
		<script type="text/javascript" src="js/jquery.slider.min.js"></script>
		<style type="text/css">
			body,
			div {
				margin: 0;
				padding: 0;
			}
			
			.ui-slider-wrap {
				background: #e8e8e8;
				position: relative;
			}
			
			.ui-slider-wrap .ui-slider-bg {
				width: 0;
			}
			
			.ui-slider-wrap .ui-slider-btn {
				position: absolute;
				top: 0;
				left: 0;
				cursor: move;
				text-align: center;
				border: 1px solid #ccc;
				background: #fff;
				-webkit-box-sizing: border-box;
				-moz-box-sizing: border-box;
				-ms-box-sizing: border-box;
				-o-box-sizing: border-box;
				box-sizing: border-box;
			}
			
			.ui-slider-wrap .ui-slider-btn {
				background: #fff url(../img/slider.png) no-repeat center;
			}
			
			.ui-slider-wrap .ui-slider-btn.success {
				background-image: url(../img/success.png);
			}
			
			.ui-slider-wrap .ui-slider-text {
				width: 100%;
				height: 100%;
				font-family: "微软雅黑";
				text-align: center;
				position: absolute;
				top: 0;
				left: 0;
				color: #666;
			}
			
			.ui-slider-wrap .ui-slider-no-select {
				-webkit-user-select: none;
				-moz-user-select: none;
				-ms-user-select: none;
				-o-user-select: none;
				user-select: none;
			}
		</style>
	</head>

	<body>
		<div class="container">

			<div class="demo1">
				<div id="slider1" class="slider"></div>
				<div class="result">验证结果:<span id="result1"></span></div>
			</div>
		</div>
		<script type="text/javascript">
			$("#slider1").slider({
				callback: function(result) {
					$("#result1").text(result);
				}
			});
			$("#reset1").click(function() {
				$("#slider1").slider("restore");
			});
		</script>
	</body>

</html>

我这里把js点击事件也放进去了还有css样式也没有分开写。
jquery-3.3.1.min.js这个文件就是jquery的迷你版。
jquery.slider.min.js

(function(t, i, s, e) {
	var l = function(i, s) {
		this.ele = i;
		this.defaults = {
			width: 300,
			height: 34,
			sliderBg: "#e8e8e8",
			color: "#666",
			fontSize: 12,
			bgColor: "#7ac23c",
			textMsg: "请按住滑块,拖动到最右边",
			successMsg: "验证成功",
			successColor: "#fff",
			time: 160,
			callback: function(t) {}
		};
		this.opts = t.extend({}, this.defaults, s);
		this.init()
	};
	l.prototype = {
		init: function() {
			this.result = false;
			this.sliderBtn_left = 0;
			this.maxLeft = this.opts.width - this.opts.height;
			this.render();
			this.eventBind()
		},
		render: function() {
			var t = '<div class="ui-slider-wrap">' + '<div class="ui-slider-text ui-slider-no-select">' + this.opts.textMsg + "</div>" + '<div class="ui-slider-btn init ui-slider-no-select"></div>' + '<div class="ui-slider-bg"></div>' + "</div>";
			this.ele.html(t);
			this.initStatus()
		},
		initStatus: function() {
			var t = this;
			var i = this.ele;
			this.slider = i.find(".ui-slider-wrap");
			this.sliderBtn = i.find(".ui-slider-btn");
			this.bgColor = i.find(".ui-slider-bg");
			this.sliderText = i.find(".ui-slider-text");
			this.slider.css({
				width: t.opts.width,
				height: t.opts.height,
				backgroundColor: t.opts.sliderBg
			});
			this.sliderBtn.css({
				width: t.opts.height,
				height: t.opts.height,
				lineHeight: t.opts.height + "px"
			});
			this.bgColor.css({
				height: t.opts.height,
				backgroundColor: t.opts.bgColor
			});
			this.sliderText.css({
				lineHeight: t.opts.height + "px",
				fontSize: t.opts.fontSize,
				color: t.opts.color
			})
		},
		restore: function() {
			var t = this;
			var i = t.opts.time;
			this.result = false;
			this.initStatus();
			this.sliderBtn.removeClass("success").animate({
				left: 0
			}, i);
			this.bgColor.animate({
				width: 0
			}, i, function() {
				t.sliderText.text(t.opts.textMsg)
			})
		},
		eventBind: function() {
			var t = this;
			this.ele.on("mousedown", ".ui-slider-btn", function(i) {
				if(t.result) {
					return
				}
				t.sliderMousedown(i)
			})
		},
		sliderMousedown: function(t) {
			var i = this;
			var s = t.clientX;
			var e = s - this.sliderBtn.offset().left;
			i.sliderMousemove(s, e);
			i.sliderMouseup()
		},
		sliderMousemove: function(i, e) {
			var l = this;
			t(s).on("mousemove.slider", function(t) {
				l.sliderBtn_left = t.clientX - i - e;
				if(l.sliderBtn_left < 0) {
					return
				}
				if(l.sliderBtn_left > l.maxLeft) {
					l.sliderBtn_left = l.maxLeft
				}
				l.sliderBtn.css("left", l.sliderBtn_left);
				l.bgColor.width(l.sliderBtn_left)
			})
		},
		sliderMouseup: function() {
			var i = this;
			t(s).on("mouseup.slider", function() {
				if(i.sliderBtn_left != i.maxLeft) {
					i.sliderBtn_left = 0
				} else {
					i.ele.find(".ui-slider-text").text(i.opts.successMsg).css({
						color: i.opts.successColor
					});
					i.ele.find(".ui-slider-btn").addClass("success");
					i.result = true
				}
				i.sliderBtn.animate({
					left: i.sliderBtn_left
				}, i.opts.time);
				i.bgColor.animate({
					width: i.sliderBtn_left
				}, i.opts.time);
				t(this).off("mousemove.slider mouseup.slider");
				if(i.opts.callback && typeof i.opts.callback === "function") {
					i.opts.callback(i.result)
				}
			})
		}
	};
	t.fn.slider = function(i) {
		return this.each(function() {
			var s = t(this);
			var e = s.data("slider");
			if(!e) {
				e = new l(s, i);
				s.data("slider", e)
			}
			if(typeof i === "string") {
				e[i]()
			}
		})
	}
})(jQuery, window, document);

三、运行效果

滑动前:
在这里插入图片描述
滑动后:
在这里插入图片描述

四、注意

jquery.slider.min.js的引入要在jquery-3.3.1.min.js引入的下方,不然会报错,提示一些效果无效。
还有就是
在这里插入图片描述
这个图片里面第一个是滑动之前的图片,第二个是成功后的图片,我这里没有图片。你们在练习的时候可以随意引入两张图片看下效果。
最后一个就是引入的文件路径一定不要出错,特别是js文件。


http://www.niftyadmin.cn/n/936225.html

相关文章

【LeetCode】67. Add Binary

Add Binary Given two binary strings, return their sum (also a binary string). For example,a "11"b "1"Return "100". 先进行对齐操作&#xff0c;然后从右往左逐位相加&#xff0c;注意进位即可。 class Solution { public:string addBi…

hadoop 常用命令行操作小结

1、检测hadoop运行状态信息 hadoop dfsadmin -report  打印出hadoop中硬盘的使用信息 2、 hadoop中创建归档文件 hadoop archive -archiveName example.har -p /tmp/input dir1 dir2 -r 2 /tmp/output/ 其中example.har为hadoop中归档文件的特殊格式&#xff0c;-p指定父目录…

java转json字符串

一、作用 为了方便数据的读取和调用&#xff0c;我们一般都是给别人返回json字符串的格式&#xff0c;这样可以方便接口的对接和使用。 二、实现 我这里用的是Springboot项目&#xff0c;直接用依赖导入jar包&#xff1a; <!-- https://mvnrepository.com/artifact/com.a…

一步一步写算法(之图结构)

一步一步写算法&#xff08;之图结构&#xff09; 原文:一步一步写算法&#xff08;之图结构&#xff09; 【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 图是数据结构里面的重要一章。通过图&a…

Springboot单文件、多文件上传下载

一、概述 这篇文章主要是Springboot项目单文件、多文件的上传和下载功能的实现。可以上传任何格式的文件&#xff0c;并且根据文件的地址进行下载。 二、实现 1、首先创建一个Springboot项目。 2、在pom.xml里面导入需要的依赖&#xff1a; <?xml version"1.0&quo…

ORACLE SQL练习(六)

--使用子查询来查找不确定的值--子查询与SELECT语句SELECT E.EMP_ID, E.FIRST_NAME, E.LAST_NAME, EP.PAY_RATEFROM EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL EPWHERE E.EMP_ID EP.EMP_IDAND EP.PAY_RATE <(SELECT PAY_RATE FROM EMPLOYEE_PAY_TBL WHERE EMP_ID 443679012);下面…

OpenCV 求外接矩形以及旋转角度

程序没有写完整&#xff0c;大概功能就是实现了&#xff0c;希望大家分享学习&#xff0c;把他改对 // FindRotation-angle.cpp : 定义控制台应用程序的入口点。 //// findContours.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h"#include <iostream&…

java报:Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'

一、错误 我用参数直接传日期时直接报了这个错误&#xff1a; Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Date’ for property ‘createTime’; nested exception is org.springframework.core.convert.ConversionFailedE…