首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现滑动解锁

滑动解锁通常用于增强用户界面的交互性和安全性。在JavaScript中实现滑动解锁功能,可以通过监听触摸事件(touchstarttouchmovetouchend)或鼠标事件(mousedownmousemovemouseup)来实现。以下是一个简单的滑动解锁实现示例:

HTML结构

代码语言:txt
复制
<div id="slider-container">
  <div id="slider-track"></div>
  <div id="slider-thumb"></div>
</div>

CSS样式

代码语言:txt
复制
#slider-container {
  position: relative;
  width: 300px;
  height: 40px;
  background-color: #eee;
  border-radius: 20px;
  text-align: center;
  line-height: 40px;
  user-select: none;
}

#slider-track {
  position: absolute;
  top: 50%;
  left: 0;
  height: 6px;
  background-color: #76c7c0;
  transform: translateY(-50%);
  border-radius: 3px;
}

#slider-thumb {
  position: absolute;
  top: 5px;
  left: 0;
  width: 40px;
  height: 30px;
  background-color: #76c7c0;
  border-radius: 20px;
  cursor: pointer;
}

JavaScript逻辑

代码语言:txt
复制
const sliderContainer = document.getElementById('slider-container');
const sliderThumb = document.getElementById('slider-thumb');
let isDown = false;
let startX;
let currentX;

sliderContainer.addEventListener('mousedown', (e) => {
  isDown = true;
  startX = e.clientX - sliderThumb.offsetLeft;
});

sliderContainer.addEventListener('touchstart', (e) => {
  isDown = true;
  startX = e.touches[0].clientX - sliderThumb.offsetLeft;
});

document.addEventListener('mousemove', (e) => {
  if (!isDown) return;
  currentX = e.clientX - sliderContainer.offsetLeft;
  if (currentX < 0) currentX = 0;
  if (currentX > sliderContainer.offsetWidth - sliderThumb.offsetWidth) {
    currentX = sliderContainer.offsetWidth - sliderThumb.offsetWidth;
  }
  sliderThumb.style.left = currentX + 'px';
});

document.addEventListener('touchmove', (e) => {
  if (!isDown) return;
  currentX = e.touches[0].clientX - sliderContainer.offsetLeft;
  if (currentX < 0) currentX = 0;
  if (currentX > sliderContainer.offsetWidth - sliderThumb.offsetWidth) {
    currentX = sliderContainer.offsetWidth - sliderThumb.offsetWidth;
  }
  sliderThumb.style.left = currentX + 'px';
});

document.addEventListener('mouseup', () => {
  if (isDown && currentX >= sliderContainer.offsetWidth - sliderThumb.offsetWidth - 5) {
    // 解锁成功
    alert('解锁成功!');
  }
  isDown = false;
});

document.addEventListener('touchend', () => {
  if (isDown && currentX >= sliderContainer.offsetWidth - sliderThumb.offsetWidth - 5) {
    // 解锁成功
    alert('解锁成功!');
  }
  isDown = false;
});

解释

  1. HTML结构:包含一个容器和两个子元素,一个用于滑动轨道,一个用于滑动块。
  2. CSS样式:设置容器和滑动块的样式,使其看起来像一个滑动解锁组件。
  3. JavaScript逻辑
    • 监听鼠标和触摸事件,记录滑动开始的位置。
    • 在滑动过程中更新滑动块的位置。
    • 当滑动到一定位置时,触发解锁成功的事件。

优势

  • 用户体验好:滑动解锁比传统的密码输入更直观、快捷。
  • 安全性:可以结合其他验证方式(如指纹、面部识别)提高安全性。

应用场景

  • 移动应用:常见于登录、支付等需要验证用户身份的场景。
  • 网页应用:用于增强用户界面的交互性和安全性。

注意事项

  • 兼容性:确保在不同设备和浏览器上都能正常工作。
  • 安全性:滑动解锁本身并不提供很高的安全性,通常需要结合其他验证方式。

通过以上代码和解释,你可以实现一个基本的滑动解锁功能,并根据需要进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android滑动解锁功能实现,Android_滑动解锁

1.滑动解锁代码流程图: 流程图 图片资源:https://pan.baidu.com/s/1tkcw0tdxV78mnwHqOtcAGg 提取码:2xsq 2.代码: xml文件: xmlns:app.../tv_alert” android:layout_width=”match_parent” android:layout_height=”wrap_content” android:text=”图案解锁...ArrayList lineTagsList; ArrayList selectedList; int tag; //保存上⼀次被点亮的点的对象 ImageView lastSelectedDot; //记录滑动的密码...= null){ //有密码了 if (password.toString().equals(orgPassword)){ alertTextView.setText(“解锁密码成功”); }...手指在两个点间滑动时,两个点的tag值组成一个两位数(两个点小的tag值组成十位,大的组成个位),遍历所有的线的tag值,判断是否有与这个两位数相同的tag值,有则点亮该线。

1.2K10

android m 滑动解锁,滑动解锁Slideunlock

滑动解锁(Slideunlock)在之前的塞班机上可谓光茫四射,惹得一身荣耀,如今登入android市场,依然备受关注,多种解锁截屏法方式,满足不同人的需求。...软件介绍 滑动解锁(Slideunlock),一款仿Iphone又超越Iphone解锁和加锁的实用软件,华丽百变的UI,多种感应器加锁解锁功能,是您可以做到无需触碰手机即可轻松完成加锁或解锁操作。...现在作者将此软件的功能创意不断完善移植到Android系统,当前1.0的,距离感应器、重力加速感应器的加解锁功能已经被完美实现。...更新说明 1.修改了图标,细化了滑动界面。 2.增加了解锁震动反馈。 3.增加了解锁提示字体颜色设置。 4.10秒钟不解锁自动锁屏。 功能介绍 1.一键加锁浮动按钮。...关闭方法:“系统设定->位置和安全->选择设备管理器”从中取消滑动解锁对应勾选(这个应该算是个玩android的小常识吧!)

2.1K30
  • android自定义滑块解锁,android 滑动解锁

    通过android自定义View实现横向的滑动解锁,1、滑动到中间会自动返回到原始的位置,2、滑动到底部会自动解锁,会触发解锁的回调;首先看效果图如下: 实现以上部分一共分为三部分: 其中背景通过shape.xml...实现 滑动的锁是一张图片 文字通过Paint绘制在中间,高度可定制 主要介绍一下实现的主要部分: (1)有自定义的属性如下: (2)重写ondraw()方法,绘制文字和锁: @Overrideprotected...mLockBitmap, mLocationX, 0, mPaint); } } (3)最重要的一步是触摸事件的处理,1、当触摸屏幕是触发ACTION_DOWN事件,计算时候触摸到锁,只有当触到锁的时候才能滑动...;2、手指移动时,获得新的位置后计算新的位置,然后重新绘制,若移动到另一端表示解锁成功,执行回调方法解锁成功;3、手指离开屏幕后重新reset View,动画回到初始位置: @Override public...{ mLocationX = (Float) valueAnimator.getAnimatedValue(); invalidate(); } }); anim.start(); } 这就是完成滑动解锁的主要步骤

    1.9K10

    原生JS实现移动端滑动反弹

    什么是 Touch滑动?就是类似于 PC端的滚动事件,但是在移动端是没有滚动事件的,所以就要用到 Touch事件结合 js去实现,效果如下: ? 1. 准备工作 什么是移动端的 Touch事件?...去实现滑动。...; 3、touchmove的时候,还要做另一件事情,就是获取两点的差值( B.clientY-A.clientY),将这个差值动态赋值给 ul, ul只需要设置向 Y轴方向偏移这个距离,就能实现列表随手指滑动...先来张示意图,怎么通过 js 让列表滑动起来 ?...限制滑动区间 到上面一步,我们已经可以实现列表的滑动了,但是也存在一个问题,就是向上或者向下的时候没有限制,上下可以无限的滑动,甚至再用点力,就看不到列表了。

    10.4K20

    200行代码实现解锁滑动验证码(文末附源码)

    作者:崔庆才 转自:进击的coder 做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的原理以及带大家实现一个滑动验证码...本文章主要来介绍一下第一个阶段,也就是前端校验的验证码的实现,下面来介绍一下拖动验证码的具体实现。 需求 那么前端完成一个合格的验证码,究竟需要做成什么样子呢?...具体实现 下面就具体讲解下这个是怎么实现的,实际上核心代码只有 200 行,下面对整个核心流程进行说明。...既然 Vue 这么火,那我这里就用 Vue 来实现啦,具体的环境配置这里就不再赘述了,需要安装的有: Node.js:https://nodejs.org/en/ Vue-Cli:https://cli.vuejs.org...最后,就是拖拽完成之后,将滑动轨迹输出出来,这里我就直接呈现在页面上了, 区域加入如下定义即可: <p v-if="state.dragged" id="trace"

    2.5K31

    css+js实现左右滑动卡片组件

    最近的一个活动页面需要做一个可以左右滑动的抽签效果,故通过用css的transform属性和js结合来模拟可以无限滚动的效果。...先上效果: Kapture 2018-12-13 at 19.47.23.gif demo地址:https://kiroroyoyo.github.io/cardTransform/index.html 实现过程...而对于用户这一操作是无感知的,认为已经滑动到了新的位置。 3.滑动过程实现 a....目标位移与帧位移 为了做出滑动后到停留位置的缓动效果,所以当用户左右滑动屏幕时,会记录滑动距离,计算出卡片该到的目标位移位置,目标位移位置是有规则的,因为这里有10张卡片均分宽度,位置必须是(100%/...连续滑动判断 当在上次滑动动画还未播放结束时用户又进行了第二次滑动时,需要执行一下操作:     1).

    30.7K102

    Cordova插件开发——滑动手势解锁(iOS篇)

    在我的业务场景中,我需要给我的应用加上手势解锁的功能。...我想了两种方案,一种是纯前端的方案,即在web页面中嵌入一段js,它负责锁屏界面的显示解锁等功能,是在原有的页面中盖上一层canvas(Demo在此);第二种是用插件的方式,原生代码去控制锁屏的显示等等...综合考虑体验和合理度等情况之后我决定用第二种方式,但是为了节省时间,我只是用插件实现了逻辑部分,解锁的界面为了省事儿还是用canvas直接画的。...Cordova的插件开发还算简单,比较有意思的问题是它如何实现的插件?...即如何让js和native进行通信的,其实在iOS这边主要是利用其runtime来实现的,我一年半前写了一个做了个简单版的bridge来干了类似的事情,有兴趣的可以查看我之前的一篇文章并留言讨论。

    2.2K10

    实现滑动菜单

    所谓的滑动菜单就是将一些菜单选项隐藏起来,而不是放置在主屏幕上,然后可以通过滑动的方式将菜单显示出来。这种方式既节省了屏幕空间,又实现了非常好的动画效果。 下面我们实现一个相对基本的滑动菜单。...在屏幕左侧边缘向右拖动,就可以让滑动菜单显示出来了: ?...2.使用NavigationView优化滑动菜单页面 NavigationView是Design Support库中提供的一个控件,它可以将滑动菜单页面的实现变得非常简单。...接下来我们实现一下这个控件, NavigationView是Design Support库中提供的,那么我们需要将这个库引入到项目中才行,如图中32-33行: 注:Sync的时候可能会出错,这时候添加如...其中CircleImageView是一个开源项目,它可以用来轻松实现图片圆形化: 2.2 在开始使用NavigationView之前,我们需要准备好两个东西: 1)menu。

    1.7K20

    WordPress评论滑动拉链解锁myQaptcha代码版及部署方法

    于是就想到了很早之前就很眼馋的滑动解锁功能,可惜那时候太菜 B,安装后发现拖不动,也就没继续折腾了。现在把多说去掉了,是时候研究下这个清爽又华丽的“拉链”解锁了!...废话不多说,下面说下免插件集成 Qaptcha 滑动解锁的具体方法: 一、下载代码 张戈已将修改好的代码打包上传,有需要的朋友可以下载: 下载地址 二、部署代码 将我提供的压缩包解压,得到一个 myQaptcha...三、修改代码 做完第二步之后,若刷新页面发现没有加载滑动解锁,说明你主题的评论框用的元素 ID 不是 comment,解决办法有 2 个,要不就修改 myQaptcha.php,要不就新增一个符合要求的标签...增加符合要求的标签,方法很简单: 我们只需要编辑主题评论模板 comments.php,在合适的位置添加如下代码即可: 这个标签是滑动解锁加载的标记位置...四、加载调整 代码默认是在文章和单页面加载,如果你的博客和张戈的一样,只是留言板可以留言,那文章页面完全不需要去加载相关的 js 和 css,影响加载速度。

    1.2K90
    领券