javascript實(shí)現(xiàn)滑動(dòng)解鎖功能
效果圖:

代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#slider-box {
width: 300px;
height: 50px;
border-radius: 4px;
background: #ccc;
margin: 250px auto;
position: relative;
}
#slider {
width: 48px;
height: 48px;
border: 1px solid #eee;
text-align: center;
line-height: 48px;
display: inline-block;
background: #fff;
border-radius: 4px;
cursor: move;
position: absolute;
left: 0;
z-index: 5;
}
#slider-text {
text-align: center;
line-height: 50px;
display: inline-block;
width: 100%;
height: 50px;
font-family: "微軟雅黑";
position: absolute;
left: 0;
z-index: 4;
}
#slider-bg {
width: 0;
height: 48px;
background: green;
position: absolute;
z-index: 3;
border-radius: 4px;
}
#slider-Emerge {
width: 100px;
background:;
height: 50px;
position: absolute;
}
#stop-go {
width: 48px;
height: 48px;
border: 1px solid #eee;
background:#36F;
position: absolute;
right: -1px;
display: none;
text-align: center;
line-height: 48px;
color: #fff;
font-family: "微軟雅黑";
border-radius: 4px;
z-index: 5;
}
div{
-moz-user-select:none;
-webkit-user-select:none;
user-select:none;
}
</style>
</head>
<body>
<div id="slider-box">
<span id="slider">></span>
<span id="slider-text">滑動(dòng)解鎖</span>
<span id="slider-bg"></span>
<span id="slider-Emerge"></span>
<span id="stop-go">∨</span>
</div>
</body>
<script type="text/javascript">
var sliderel={
$: function(selector){
return document.getElementById(selector)
},
getEvent:function(e){
var e=e || window.event
return e;
},
stopBubble:function(e){
var e =this.getEvent(e)
if(typeof e.preventDefault != "undefined"){
e.preventDefault();
}else{
e.returnValue = false;
}
}
},
Elemt={
flag:false,
nowMoseX: 0,
mx:sliderel.$("slider-box"),
sd:sliderel.$("slider"),
st:sliderel.$("slider-text"),
sb:sliderel.$("slider-bg"),
se:sliderel.$("slider-Emerge"),
sg:sliderel.$("stop-go"),
}
Elemt.sd.onmousedown=function(e){
var e =sliderel.getEvent(e)
sliderel.stopBubble(e);
Elemt.flag=true
nowMoseX=e.clientX-Elemt.sd.offsetLeft;
}
//滑塊最大移動(dòng)的距離
maxMove=Elemt.mx.offsetWidth -Elemt.sd.offsetWidth;
//鼠標(biāo)移動(dòng)的時(shí)候是否成功
Elemt.mx.onmousemove=function(e){
var e =sliderel.getEvent(e)
if(Elemt.flag){
var moveX=e.clientX-nowMoseX;
var oElemLeft=Elemt.sd.offsetLeft;//判斷滑塊移動(dòng)的范圍
if(oElemLeft<0){ //判斷滑塊是否超出限制位置
moveX=0;
Elemt.flag=false
}else if(oElemLeft>maxMove){
moveX=maxMove;
Elemt.sg.style.display="block";
Elemt.sd.style.display="none"
Elemt.sb.style.width=300+"px"
Elemt.st.innerHTML="滑動(dòng)成功"
Elemt.st.style.color="#fff"
}
}
Elemt.sd.style.left=moveX+"px"
Elemt.sb.style.width=oElemLeft+20+"px";
}
//當(dāng)鼠抬起判斷是否滑動(dòng)成功
Elemt.mx.onmouseup=function(e){
var e =sliderel.getEvent(e)
Elemt.flag=false
if(Elemt.sd.offsetLeft<maxMove){
speed=Math.ceil(Elemt.sd.offsetLeft/40);
time=setInterval(function(){
if(Elemt.sd.offsetLeft>=0){
Elemt.sd.style.left=Elemt.sd.offsetLeft-speed+"px";
Elemt.sb.style.width=Elemt.sb.offsetWidth-speed+"px";
}else{
clearInterval(time);
return false;
}
},10)
}
}
//當(dāng)鼠離開是否滑動(dòng)成功
Elemt.sd.onmouseout=function(e){
sliderel.stopBubble(e);
Elemt.flag=false;
if( Elemt.sd.offsetLeft<maxMove){
speed=Math.ceil(Elemt.sd.offsetLeft/40);
time=setInterval(function(){
if(Elemt.sd.offsetLeft>=0){
Elemt.sd.style.left=Elemt.sd.offsetLeft-speed+"px";
Elemt.sb.style.width=Elemt.sb.offsetWidth-speed+"px";
}else{
clearInterval(time);
return false;
}
},10);
}
}
</script>
</html>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
- jQuery使用unlock.js插件實(shí)現(xiàn)滑動(dòng)解鎖
- javascript實(shí)現(xiàn)滑動(dòng)解鎖功能
- js實(shí)現(xiàn)html滑動(dòng)圖片拼圖驗(yàn)證
- JS實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證功能完整示例
- js+canvas實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼功能
- 使用 Node.js 模擬滑動(dòng)拼圖驗(yàn)證碼操作的示例代碼
- JS實(shí)現(xiàn)PC手機(jī)端和嵌入式滑動(dòng)拼圖驗(yàn)證碼三種效果
- javascript結(jié)合Flexbox簡單實(shí)現(xiàn)滑動(dòng)拼圖游戲
- 原生js實(shí)現(xiàn)簡單滑動(dòng)解鎖功能?js實(shí)現(xiàn)滑動(dòng)拼圖解鎖
相關(guān)文章
JavaScript數(shù)據(jù)類型及相互間的轉(zhuǎn)換規(guī)則
這篇文章主要介紹了JavaScript數(shù)據(jù)類型及相互間的轉(zhuǎn)換規(guī)則,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
js點(diǎn)擊按鈕實(shí)現(xiàn)水波紋效果代碼(CSS3和Canves)
這篇文章主要為大家詳細(xì)介紹了點(diǎn)擊按鈕實(shí)現(xiàn)水波紋效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Json實(shí)現(xiàn)傳值到后臺代碼實(shí)例
這篇文章主要介紹了Json實(shí)現(xiàn)傳值到后臺代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
javascript 關(guān)于# 和 void的區(qū)別分析
href 為#的跳到了自己的頁面。原來‘#’代表的是 #top ,2009-10-10
微信小程序自定義組件的實(shí)現(xiàn)方法及自定義組件與頁面間的數(shù)據(jù)傳遞問題
這篇文章主要介紹了微信小程序自定義組件的實(shí)現(xiàn)方法及自定義組件與頁面間的數(shù)據(jù)傳遞 ,需要的朋友可以參考下2018-10-10
JS實(shí)現(xiàn)仿新浪微博發(fā)布內(nèi)容為空時(shí)提示功能代碼
這篇文章主要介紹了JS實(shí)現(xiàn)仿新浪微博發(fā)布內(nèi)容為空時(shí)提示功能,2015-08-08
一文總結(jié)JS中邏輯運(yùn)算符的特點(diǎn)
在JavaScript的眾多運(yùn)算符里,提供了三個(gè)邏輯運(yùn)算符&&、||和!,下面這篇文章主要給大家介紹了關(guān)于JS中邏輯運(yùn)算符的特點(diǎn),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

