简单实现滑动解锁,效果图是这样的

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>滑动解锁</title><style>.div1 {width: 200px;height: 30px;border: 1px solid #cccccc;user-select: none;position: relative;margin: 0 auto;margin-top: 300px;}.div2 {width: 100%;height: 30px;}.div3 {position: absolute;top: 0;left: 0;width: 36px;height: 30px;line-height: 30px;text-align: center;background: #fff;cursor: pointer;font-family: "宋体";z-index: 10;font-weight: bold;color: #929292;/* cursor: move; */}.div4 {position: absolute;left: 0;top: 0;bottom: 0;right: 0;line-height: 30px;text-align: center;z-index: -1;background: #ccc;}</style>
</head><body><!-- 大盒子 --><div class="div1" id='div1'><div class="div2" id='div2'></div><span class="div3" id='div3'>>></span><div class="div4" id='div4'>滑动解锁</div></div><script>//     var a =1,b='1'//     console.log(a+b,a-b,a++,b++)//     const str = 'console.log(1)';//     // replaceAll("\\(.*\\)","");// const newStr=str.replace[/console\.log/, 'return ']// console.log(newStr)var div1 = document.getElementById('div1');var div3 = document.getElementById('div3');var div4 = document.getElementById('div4');var left;var px = div1.offsetWidth - div3.offsetWidthdiv3.onmousedown = function (event) {var event = window.event || ev;left = event.clientX - div3.offsetLeft;//鼠标按下时的位置console.log(event)console.log(left)document.onmousemove = function (event) {//鼠标移动var event = window.event || ev;lefta = event.clientX - left;//鼠标移动的距离console.log(px, lefta);if (lefta < 0) {lefta = 0;} else if (px < lefta) {lefta = px - 2;}div3.style.left = lefta + 'px';}document.onmouseup = function (event) {//鼠标抬起var event = window.event || ev;document.onmousemove = null;document.onmouseup = null;lefta = event.clientX - left;if (lefta < 0) {lefta = 0;span.innerHTML = '滑动解锁';} else if (px < lefta) {lefta = px - 2;div4.innerHTML = '解锁成功';div3.innerHTML = '√';div3.onmousedown = null;alert('成功')} else {lefta = 0;}div3.style.left = lefta + 'px';}}</script>
</body></html>

由于拼图解锁我没做过,做了个大概的样子,效果图

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>滑动解锁</title><style>* {margin: 0;padding: 0;}.conter{width: 202px;border: 1px solid #ccc;margin: 0 auto;margin-top: 300px;}.box {width: 202px;height: 130px;background: #ff00ff;position: relative;}.box::before {content: '';position: absolute;bottom:  50px;right: 30px;width: 30px;height: 30px;background: #fff;z-index: 99;}.div1 {position: absolute;bottom: 0;width: 200px;height: 30px;border: 1px solid #cccccc;user-select: none;position: relative;}.div2 {width: 100%;height: 30px;}.div3 {position: absolute;top: 0;left: 0;width: 36px;height: 30px;line-height: 30px;text-align: center;background: #fff;cursor: pointer;font-family: "宋体";z-index: 10;font-weight: bold;color: #929292;z-index: 1000;}.div3::before{content: '';position: absolute;top: -81px;left: 3px;width: 30px;height: 30px;background: #000;}.div4 {position: absolute;left: 0;top: 0;bottom: 0;right: 0;line-height: 30px;text-align: center;z-index: -1;background: #ccc;}</style>
</head><body><!-- 大盒子 --><div class="conter"><!-- 可以放图片  计算位置 --><div class="box"></div><div class="div1" id='div1'><div class="div2" id='div2'></div><!-- 对应缺口位置 拖动到相应位置既符合 --><span class="div3" id='div3'>>></span><div class="div4" id='div4'>滑动解锁</div></div></div><script>var div1 = document.getElementById('div1');var div3 = document.getElementById('div3');var div4 = document.getElementById('div4');var left;var px = div1.offsetWidth - div3.offsetWidthdiv3.onmousedown = function (event) {var event = window.event || ev;left = event.clientX - div3.offsetLeft;//鼠标按下时的位置document.onmousemove = function (event) {//鼠标移动var event = window.event || ev;lefta = event.clientX - left;//鼠标移动的距离// console.log(lefta);if (lefta < 0) {lefta = 0;} else if (px < lefta) {lefta = px;}div3.style.left = lefta + 'px';}document.onmouseup = function (event) {//鼠标抬起var event = window.event || ev;document.onmousemove = null;document.onmouseup = null;lefta = event.clientX - left;console.log(lefta)if (lefta < 0) {lefta = 0;div4.innerHTML = '滑动解锁';// 是否符合缺口位置} else if (lefta > '134' &&  lefta <'142') {div4.innerHTML = '解锁成功';div3.innerHTML = '√';div3.onmousedown = null;alert('成功')} else {alert('错误,请重试')lefta = 0;}div3.style.left = lefta + 'px';}}</script>
</body></html>

小白一个,有错误虚心接受批评,请多多指教

原生简单实现滑动解锁,和滑动拼图解锁相关推荐

  1. pc端html轮播带滑块,swiper.js简单快速实现轮播滑动(兼容PC端、移动端)

    swiper是一款免费以及轻量级轮播滑动的js框架,适用于PC端跟移动端,官方地址:(https://www.swiper.com.cn/) 效果演示: PC端 移动端(在浏览器将设备切换为手机,这里 ...

  2. dw在php图片滑动切换效果,超简单的图片左右切换滑动

    网上看过很多图片左右切换滑动的效果,不过大都是使用插件实现.插件虽方便,但是对于新手的学习并不是最好的.本文使用jquery这个由原生的JavaScript封装的库,用最简短的代码实现此功能 效果预览 ...

  3. android自定义滑块解锁,android 滑动解锁

    通过android自定义View实现横向的滑动解锁,1.滑动到中间会自动返回到原始的位置,2.滑动到底部会自动解锁,会触发解锁的回调:首先看效果图如下: 实现以上部分一共分为三部分: 其中背景通过sh ...

  4. android 手势识别 (缩放 单指滑动 多指滑动)

    Android P 手势识别 1.前提介绍: 2.单指相关 2.双指缩放 3.多指滑动. 4.总体识别代码 1.前提介绍: 关于Android 手势识别就是当前view 根据用户的不同touch行为, ...

  5. 写了个移动端可滑动(惯性滑动回弹)Vue导航栏组件 ly-tab

    前段时间写了一个移动端的自适应滑动Vue导航栏组件,觉得有一定实用性,大家可能会用得到(当然有些大佬自己写得更好的话就没必要啦),于是前两天整理了一下,目前已经发布到npm和GitHub上了,点我到n ...

  6. android自定义滑动,Android自定义滑动刻度尺

    一 基础: 自定义View实现跟随手指滚动的刻度尺,实现了类似SeekBar的滑动选中效果.项目地址,欢迎star! UI图: 功能: 通过设置最小值跟最大值的范围,以及offset值.View将根据 ...

  7. Android 7.1 增加屏幕边缘滑动事件(手势滑动)两种方式(Back,Home,Menu功能键) 免开启无障碍功能

    目前公司在做新项目开发,项目目前是不让有Back,Home,Menu实体按键,这就导致了一个问题,点开其它应用无法返回到桌面, 当然些问题对于做开发的我们肯定是难不到的,如果我们开发碰到这问题肯定是a ...

  8. html列表滑动字母索引,js实现做通讯录的索引滑动显示效果和滑动显示锚点效果...

    只做实现..完全没考虑性能优化.所以我实现了以后特别卡. 第一个是在通讯录右边的索引条上进行滑动,滑动到相应字母就跳转到相应字母的锚点上. 思路:监听touchmove事件,获取clientX和cli ...

  9. vue弹出层滑动禁止背景跟着滑动_vue移动端弹起蒙层滑动禁止底部滑动操作

    解决办法 在蒙层弹起的时候将body设置为fixed定位 在蒙层消失的时候将body恢复原位 popupVisible(newValue) { if (newValue) { document.bod ...

最新文章

  1. mysql根据当前时间删除_从日期时间早于另一项日期时间的Mysql表中删除
  2. 简论重大科学发现诞生的时机
  3. VS2015 ionic 开发环境配置纪要
  4. Nginx安装echo模块
  5. 结合Selenium 和 Requests完成动态数据爬取
  6. opencv怎么2个摄像头_最后2个月,怎么做能够快速提分?
  7. Django的ModelForm
  8. 操作系统:Windows映射网络文件夹的方法介绍
  9. python常用函数和操作_python一条语句分析几个常用函数和概念 -
  10. JAVA多线程实现的三种方式 ()
  11. Tensorflow2.0.0版本和Keras2.4.3不兼容
  12. TurboMail邮件系统配置之预防邮件炸弹
  13. 两轮电动车不需要高端
  14. B站视频直接下载成mp4格式
  15. 查看源代码的几种方法
  16. 神舟战神 Z8 2022款评测
  17. 微信开发者工具创建vue项目步骤
  18. 如何从GitHub中下载别人的代码
  19. AI智能营业厅视频监控解决方案
  20. 简单三步,入驻行云管家管理您的云资源

热门文章

  1. 工具学习——ubuntu轻量桌面对比
  2. 边缘计算场景下云边端一体化的挑战与实践
  3. 职高计算机教师招聘考试内容,中高职类教师招聘备考建议
  4. Vue.js - 解决部署到服务器后Element UI图标不显示问题(404错误)
  5. chkdsk工具使用总结
  6. 2022年全球市场紧急出口装置总体规模、主要生产商、主要地区、产品和应用细分研究报告
  7. 双馈风力发电系统,双pwm变换器控制系统,采用直接转矩输入代替风力发电机
  8. C6678信号处理板资料保存:基于Xilinx Virtex-6 XC6VLX240T 和TI DSP TMS320C6678的信号处理板204
  9. 第一个C语言程序编写
  10. FS68001A是一款5W无线充方案IC兼容WPC Qi v1.2.4最新标准支持5W