jq实现拖动滑块实现人机校验——基础积累

最近在写后台管理系统,同事遇到一个需求关于滑动验证的。之前的样式是:
在这里插入图片描述
现在只要底部的滑动验证,图片不要了,而且要滑动到右边才算是验证通过。

就是如下所示的最简单的验证方式:
在这里插入图片描述
在这里插入图片描述
由于同事现有的项目是mvc的,并不能很好的使用插件,所以要使用jq来写是最好的。

下面把代码附上:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script src="./drag.js"></script>
    <style>
      .slidetounlock {
        font-size: 12px;
        background: -webkit-gradient(
          linear,
          left top,
          right top,
          color-stop(0, #4d4d4d),
          color-stop(0.4, #4d4d4d),
          color-stop(0.5, #fff),
          color-stop(0.6, #4d4d4d),
          color-stop(1, #4d4d4d)
        );
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        -webkit-animation: slidetounlock 3s infinite;
        -webkit-text-size-adjust: none;
      }

      @-webkit-keyframes slidetounlock {
        0% {
          background-position: -200px 0;
        }
        100% {
          background-position: 200px 0;
        }
      }
      .drag {
        position: relative;
        background-color: #e8e8e8;
        width: 300px;
        height: 40px;
        line-height: 40px;
        text-align: center;
        margin-bottom: 20px;
      }
      .handler {
        position: absolute;
        top: 0px;
        left: 0px;
        width: 40px;
        height: 38px;
        border: 1px solid #ccc;
        cursor: move;
      }
      .handler_bg {
        background: #fff url('../img/slider.png') no-repeat center;
      }
      .handler_ok_bg {
        background: #fff url('../img/complet.png') no-repeat center;
      }
      .drag .drag_bg {
        /*background-color: #7ac23c;*/
        background: #67c23a;
        height: 40px;
        width: 0px;
      }
      .drag .drag_text {
        position: absolute;
        top: 0px;
        width: 300px;
        color: #9c9c9c;
        -moz-user-select: none;
        -webkit-user-select: none;
        user-select: none;
        -o-user-select: none;
        -ms-user-select: none;
        font-size: 12px;
      }
    </style>
  </head>
  <body>
    <div id="drag" class="drag">
      <div class="drag_bg"></div>
      <div
        class="drag_text slidetounlock"
        onselectstart="return false;"
        unselectable="on"
      >
        请按住滑块,拖动到最右边
      </div>
      <div class="handler handler_bg"></div>
    </div>
    <script>
      $('#drag').drag();
    </script>
  </body>
</html>

drag.js文件如下:

/**
 * Created by shuai_wy on 2017/3/14
 */
$.fn.drag = function (options) {
  var x,
    drag = this,
    isMove = false,
    defaults = {};
  var options = $.extend(defaults, options);
  var handler = drag.find('.handler');
  var drag_bg = drag.find('.drag_bg');
  var text = drag.find('.drag_text');
  var maxWidth = drag.width() - handler.width(); //能滑动的最大间距

  //鼠标按下时候的x轴的位置
  handler.mousedown(function (e) {
    isMove = true;
    x = e.pageX - parseInt(handler.css('left'), 10);
  });

  //鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动聚合力
  $(document)
    .mousemove(function (e) {
      var _x = e.pageX - x; //_x = e.pageX - (e.pageX - parseInt(handler.css('left'), 10)) = x
      if (isMove) {
        if (_x > 0 && _x <= maxWidth) {
          handler.css({ left: _x });
          drag_bg.css({ width: _x });
        } else if (_x > maxWidth) {
          //鼠标指针移动距离达到最大时清空事件
          dragOk();
        }
      }
    })
    .mouseup(function (eJ) {
      isMove = false;
      var _x = e.pageX - x;
      if (_x < maxWidth) {
        //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
        handler.css({ left: 0 });
        drag_bg.css({ width: 0 });
      }
    });

  //清空事件
  function dragOk() {
    handler.removeClass('handler_bg').addClass('handler_ok_bg');
    text.removeClass('slidetounlock').text('验证通过').css({ color: '#fff' }); //modify
    drag.css({ color: '#fff !important' });

    handler.css({ left: maxWidth }); // add
    drag_bg.css({ width: maxWidth }); // add

    handler.unbind('mousedown');
    $(document).unbind('mousemove');
    $(document).unbind('mouseup');
  }
};

注意:一个页面只能有一个滑块验证的功能,因为有用到document.onmouseup``document.onmousemove等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/761876.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第1天|yulang

今天主要了解了深度学习框架之昇思MindSpore的初学入门&#xff0c;没想到 ai学习入门如此简单&#xff0c;不愧是华为大手笔&#xff0c;提供的学习环境配置如此之高。这个平台有点类似百度飞桨&#xff0c;大大降低了AI开发门槛&#xff0c;使用户能够快速实现想要的模型&…

Dinky 让Flink作业纵享丝滑

1.Dinky是什么&#xff1f; Dinky 是一个开箱即用的一站式实时计算平台&#xff0c;以 Apache Flink 为基础&#xff0c;连接 OLAP 和数据湖等众多框架,致力于流批一体和湖仓一体的建设与实践。Dinky 让Flink作业纵享丝滑&#xff0c;为 Apache Flink 深度定制的新一代实时计算…

【Python机器学习】模型评估与改进——留一法交叉验证

留一法也是一种常见的交叉验证方法。 我们可以将留一法交叉验证看作是每折只包含单个样本的k折交叉验证。对于每次划分&#xff0c;选择单个数据点作为测试集。这种方法可能非常耗时&#xff0c;特征是对于大型数据&#xff0c;但是小型数据集上有时可以给出更好的估计结果&am…

生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)

前言&#xff1a;今天演示下生产环境keepalived的部署方式&#xff0c;安装模式有很多&#xff0c;比如说主备模型和双主模型&#xff0c;主备分&#xff1a;抢占模式 和 非抢占模式。这里我会一一展开说具体怎么配置一、双节点均部署Nginx&#xff1a; 第一步&#xff1a;上传…

MSYS2教程(windows环境下使用linux工具)

MSYS2教程(windows环境下使用linux工具) 1.msys2简介 MSYS2&#xff08;Minimal SYStem 2&#xff09;是一个集成了大量的GNU工具链、工具和库的开源软件包集合。它提供了一个类似于Linux的shell环境&#xff0c;可以在Windows系统中编译和运行许多Linux应用程序和工具。 MS…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数&#xff1a; EXPLODE(ARRAY)&#xff1a;将ARRAY中的每一元素转换为每一行 EXPLODE(MAP)&#xff1a;将MAP中的每个键值对转换为两行&#xff0c;其中一行数据包含键&#xff0c;另一行数据包含值 数据样例&#xff1a; 1、将每天的课程&#…

我的世界服务器-高版本服务器-MC服务器-生存服务器-RPG服务器-幻世星辰

生存为主&#xff0c;RPG乐趣为辅&#xff0c;重视每位玩家的建议&#xff0c;一起打造心目中的服务器&#xff0c;与小伙伴一起探险我的世界&#xff01; 服务器版本: 1.18.2 ~ 1.20.4 Q群&#xff1a; 338238381 服务器官网: 星辰毛毛雨-Minecraft高版本生存服务器我的世界…

C语言入门-指针和数组5

指针和地址 地址 地址是内存中一个特定位置的标识符。每个内存位置都有一个唯一的地址&#xff0c;用于存储数据。这些地址通常表示为十六进制数。 物理地址&#xff1a;硬件层次上的实际内存地址。逻辑地址&#xff1a;程序运行时使用的地址&#xff0c;由操作系统管理。 …

“蓝潮卫士“水位雨量监测一体机,重塑城市防洪新防线!

​ 6月24日&#xff0c;湖南长沙遭遇了一场突如其来的特大暴雨侵袭。天空像破了个口子&#xff0c;雨水倾盆而下&#xff0c;仅仅1小时&#xff0c;就下了54个西湖&#xff0c;降水量突破了历史同期极值。这场暴雨直接导致了严重的城市内涝问题&#xff0c;部分地区瞬间变成一…

强化学习的数学原理:贝尔曼公式

大纲 这一节课程的大纲&#xff1a; 重点 对于这次课&#xff0c;重点是两个东西&#xff1a; Motivating examples(为什么需要贝尔曼公式) 首先要明白&#xff0c;为什么 return 是重要的&#xff1f; 之前其实就说过&#xff0c;return 能够帮助我们评价一个策略是好还是坏…

阿里云:云通信号码认证服务,node.js+uniapp(vue),完整代码

api文档&#xff1a;云通信号码认证服务_云产品主页-阿里云OpenAPI开发者门户 (aliyun.com) reg.vue <template> <div> <input class"sl-input" v-model"phone" type"number" maxlength"11" placeholder"手机号…

几度互联网站群管理系统全媒体解决方案

随着高考的结束&#xff0c;各高校开启了紧张的招生宣传工作&#xff0c;几度互联网站群系统助力各高校招生宣传。 学校官方网站是互联网时代学校对外交流的重要途径和信息公开的主要载体&#xff0c;是展示学校形象、密切联系师生的重要窗口&#xff0c;是加强校园宣传思想工…

2024 年的 13 个 AI 趋势

2024 年的 13 个 AI 趋势 人工智能对环境的影响和平人工智能人工智能支持的问题解决和决策针对人工智能公司的诉讼2024 年美国总统大选与人工智能威胁人工智能、网络犯罪和社会工程威胁人工智能治疗孤独与对人工智能的情感依赖人工智能影响者中国争夺人工智能霸主地位人工智能…

LVGL实现字库的下载和使用

1 字库 字库的概念&#xff1a;相应文字或字符的合集。 点阵字库&#xff1a;按字库顺序排列的字符/汉字字模的合集。 LVGL中字库使用Unicode编码&#xff0c;Unicode 是全球文字统一编码。它把世界上的各种文字的每一个字符指定唯一编码&#xff0c;实现跨语种、跨平台的应…

分体式天线的应用介绍

分体式天线的主要应用广泛且多样化&#xff0c;以下是对其主要应用的归纳&#xff1a; 1、仓储管理 在RFID仓储项目中&#xff0c;使用性能好的RFID分体式天线可以确保系统的稳定性&#xff0c;更能够降低整个项目的成本。 分体式天线通过其多个天线接口与分体式读写器连接&…

K-Planes代码记录

随记 原文 K-Planes: Explicit Radiance Fields in Space, Time, and Appearance&#xff0c;又要换baseline&#xff0c;可是效果不好能怎么办呢&#xff0c;我可不可以发疯。k-planes的代码又是非常工程琐碎的&#xff0c;大佬的代码果然不顾小白死活。随便记录下整个过程。…

哪个牌子的超声波清洗器好?精选四大超强超声波清洗机力荐

生活中戴眼镜的人群不在少数&#xff0c;然而要维持眼镜的干净却不得不每次都需要清洗&#xff0c;只是通过手洗的方式实在太慢并且容易操作不当让镜片磨损更加严重&#xff01;所以超声波清洗机就诞生了&#xff01;超声波清洗机能够轻松清洗机眼镜上面的油脂污渍&#xff0c;…

Spire.PDF for .NET【文档操作】演示:在 PDF 中创建目录 (TOC)

目录在增强文档的可读性和可导航性方面起着至关重要的作用。它为读者提供了文档结构的清晰概述&#xff0c;使他们能够快速找到并访问他们感兴趣的特定部分或信息。这对于较长的文档&#xff08;例如报告、书籍或学术论文&#xff09;尤其有价值&#xff0c;因为读者可能需要多…

国产压缩包工具——JlmPackCore SDK说明(二)——JlmPack_Create函数说明

一、JlmPack_Create函数说明 JlmPack_Create函数是创建jlm压缩文件的核心函数&#xff0c;最大允许CATALOG_MAX_LIMIT&#xff08;请参考Config.h&#xff09;个目录&#xff0c;意思是包括文件夹和文件在内&#xff0c;遍历整个列表最大允许CATALOG_MAX_LIMIT个目录对象&#…

【Unity小技巧】Unity字典序列化

字典序列化 在 Unity 中&#xff0c;标准的 C# 字典&#xff08;Dictionary<TKey, TValue>&#xff09;是不能直接序列化的&#xff0c;因为 Unity 的序列化系统不支持非 Unity 序列化的集合类型。可以通过手写字典实现 效果&#xff1a; 实现步骤&#xff1a; 继承ISe…