javascript拖拽應(yīng)用實例
之前文章中也講了一下拖拽的基本思想,理論是有了,那實踐呢,可以運用到什么地方呢?下面就給大家?guī)硪粋€用拖拽思想寫的一個小實例,供大家參考,大致效果看下圖:

就是這樣一個簡單的一個拖拽條,你可以把它理解為滾動條,也可以理解為表單中的數(shù)量選擇控件,也可以理解為進度條,等等,反正你可以改成很多你想要的效果,廢話不多說,我們來看看這個是怎么做的吧!
想了想,感覺原理就不用說了吧,我在拖拽效果中就已經(jīng)說的很清楚了,不清楚的同學(xué)可以出門左轉(zhuǎn),查看 javascript小實例,PC網(wǎng)頁里的拖拽 ,我就直接貼代碼了:
css:
<style>
#drag_wrap{
width:220px;
height:10px;
position:relative;
margin:100px auto;
}
.dis_bg{
width:200px;
height:10px;
border-radius:10px;
background:#ccc;
margin-left:10px;
}
#drag_bg{
width:0;
height:10px;
border-radius:10px;
background:#0CF;
}
#drag_box{
width:20px;
height:20px;
border-radius:10px;
background:#F30;
position:absolute;
top:-5px;
left:0;
cursor:move;
}
#drag_box span{
width:40px;
height:20px;
text-align:center;
line-height:20px;
border:1px solid #ccc;
position:absolute;
top:-25px;
left:-10px;
color:#333;
background:#fff;
}
#drag_wrap1{
width:10px;
height:220px;
position:relative;
margin:100px auto;
}
.dis_bg1{
width:10px;
height:200px;
border-radius:10px;
background:#ccc;
position:absolute;
top:10px;
}
#drag_bg1{
width:10px;
height:0;
border-radius:10px;
background:#0CF;
}
#drag_bg1{
width:10px;
height:0;
border-radius:10px;
background:#0CF;
}
#drag_box1{
width:20px;
height:20px;
border-radius:10px;
background:#F30;
position:absolute;
top:-5px;
left:-5px;
cursor:move;
}
#drag_box1 span{
width:40px;
height:20px;
text-align:center;
line-height:20px;
border:1px solid #ccc;
position:absolute;
top:0;
left:25px;
color:#333;
background:#fff;
}
</style>
html:
<div id="drag_wrap">
<div class="dis_bg">
<div id="drag_bg"></div>
</div>
<div id="drag_box"><span>0</span></div>
</div>
<div id="drag_wrap1">
<div class="dis_bg1">
<div id="drag_bg1"></div>
</div>
<div id="drag_box1"><span>0</span></div>
</div>
JavaScript:
window.onload = function(){
drag("drag_box","drag_wrap","drag_bg","left");
drag("drag_box1","drag_wrap1","drag_bg1","top");
function drag(obj,parentNode,bgObj,attr,endFn){
var obj = document.getElementById(obj);
var parentNode = document.getElementById(parentNode);
var bgObj = document.getElementById(bgObj);
var oNum = obj.getElementsByTagName('span')[0];
obj.onmousedown = function(ev){
var ev = ev || event;
//非標準設(shè)置全局捕獲(IE)
if(obj.setCapture){
obj.setCapture()
};
var disX = ev.clientX - this.offsetLeft,
disY = ev.clientY - this.offsetTop;
var oWidth = obj.offsetWidth,
oHeight = obj.offsetHeight;
var pWidth = parentNode.offsetWidth,
pHeight = parentNode.offsetHeight;
document.onmousemove = function(ev){
var ev = ev || event;
if(attr == "left"){ //橫向
var left = ev.clientX - disX;
//左側(cè)
if(left <= 0){
left = 0;
}else if(left > pWidth - oWidth){//右側(cè)
left = pWidth - oWidth;
};
obj.style.left = bgObj.style.width = left + 'px';
oNum.innerHTML = left;
}else if(attr == "top"){ //豎向
var top = ev.clientY - disY;
//上面
if(top <= 0){
top = 0;
}else if(top > pHeight - oHeight){//下面
top = pHeight - oHeight;
};
obj.style.top = bgObj.style.height = top + 'px';
oNum.innerHTML = top;
};
};
document.onmouseup = function(ev){
var ev = ev || event;
document.onmousemove = document.onmouseup = null;
endFn && endFn();
//非標準釋放全局捕獲(IE)
if(obj.releaseCapture){
obj.releaseCapture()
};
};
return false;
};
}
}
參數(shù)說明:
這里給了5個參數(shù),obj,parentNode,bgObj,attr,endFn,分別是:
obj:被拖拽對象
parentNode:限制被拖拽對象活動區(qū)域的對象,一般設(shè)為它的父級
bgObj:拖動時的表色背景對象
attr:2個參數(shù)left,top,表示是橫向拖拽還是縱向拖拽
endFn:返回函數(shù),有就執(zhí)行,沒有就不執(zhí)行,非必填
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
js實現(xiàn)web調(diào)用攝像頭 js截取視頻畫面
這篇文章主要為大家詳細介紹了JS web調(diào)用攝像頭,截取視頻畫面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
JavaScript中檢測數(shù)據(jù)類型的四種方法
這篇文章主要給大家分享的是JavaScript中檢測數(shù)據(jù)類型的四種方法,有 typeof、instanceof、constructor、Object.prototype.toString.call(),下面文章詳細介紹內(nèi)容,需要的小伙伴可以參考一下2022-01-01

