jQuery實(shí)現(xiàn)html元素拖拽
代碼很簡單,效果非常棒,直接給大家上源碼:
html
<div>
<div class="money-input">
定投金額 :
<div class="input-rela">
<input type="text" placeholder="2000"/>
<span>元</span>
</div>
</div>
<div class="money-line">
<img index="js-minus-a" class="js-minus" src="../images/minus.png" alt=""/>
<img id="dragImg" class="red-rela" src="../images/money-dw.png" alt="" onDrag="drag(event)" onDragEnd="dragEnd(event)" style="left: 265px;"/>
<img id="dragLine" class="line3" src="../images/money-line.png" alt=""/>
<img index="js-plus-a" class="js-plus" src="../images/plus.png" alt="" style="margin-left: 880px;"/>
</div>
<div class="money-desc">
<span style="margin-left: 65px;">100</span>
<span>500</span>
<span>1000</span>
<span>2000</span>
<span>3000</span>
<span>4000</span>
<span>5000</span>
<span>6000</span>
<span>7000</span>
<span>8000</span>
<span>9000</span>
<span>10000</span>
</div>
<p>單位:元</p>
</div>
css
.money-input{margin:36px auto 0;width:330px;font-size:14px;color:#818181}
.input-rela{width:250px;height:42px;display:inline-block;position:relative}
.input-rela>input{width:inherit;height:38px;border:1px solid #eee}
.input-rela>span{position:absolute;right:10px;top:13px}
.money-line{width:970px;margin:60px auto 0;position:relative}
.line3{position:absolute;left:40px;top:10px}
.red-rela{position:absolute;top:0;z-index:2;cursor:pointer}
.money-desc,.month-desc{font-size:12px;color:#818181}
.money-desc+p,.month-desc+p{margin-right:60px;text-align:right;color:#5a5a5a}
.money-desc>span{display:inline-block;width:71px}
.month-desc>span{display:inline-block;width:79px}
js
/**
* Created by cq on 2015/6/15.
*/
$(function(){
$('.js-minus').click(function(){
/* min need calculate*/
var index = $(this).attr("index")
var move,min;
if(index=="js-minus-a"){
move = 77;
min = 34;
}
if(index=="js-minus-b"){
move = 85;
min = 36;
}
var redPoint = $(this).next()
var left = redPoint.css("left")
var leftInt = left.replace(/px/g,"")
if((parseInt(leftInt)-move)>=min){
var newLeft = (parseInt(leftInt)-move)+"px"
redPoint.css("left",newLeft)
var num = parseInt ( (parseInt(leftInt)-move-min) / move )
var input = $(this).parent().prev().find("input")
if(index=="js-minus-a"){
var spans = $(this).parent().next().find("span")
var html = spans.eq(num).html()
input.val(html)
}
if(index=="js-minus-b"){
input.val(getMonth(num))
}
}
})
$('.js-plus').click(function(){
/* max and min need calculate*/
var index = $(this).attr("index")
var move , max , min ;
if(index=="js-plus-a"){
move = 77; //ÿ��ƫ����
max = 881; //��������
min = 34; //��Сƫ����
}
if(index=="js-plus-b"){
move = 85;
max = 886;
min = 36;
}
var redPoint = $(this).prev().prev()
var left = redPoint.css("left")
var leftInt = left.replace(/px/g,"")
if((parseInt(leftInt)+move)<=max){
var newLeft = (parseInt(leftInt)+move)+"px"
redPoint.css("left",newLeft)
var num = parseInt( (parseInt(leftInt)+move-min) / move )
var input = $(this).parent().prev().find("input")
if(index=="js-plus-a"){
var spans = $(this).parent().next().find("span")
var html = spans.eq(num).html()
input.val(html)
}
if(index=="js-plus-b"){
input.val(getMonth(num))
}
}
})
/*move img js*/
var offsetx = 0, offsety = 0;
var dragImg = document.getElementById("dragImg")
dragImg.addEventListener("mousedown",beforeDrag,true);
})
function beforeDrag(ev){
dragImg = ev.target;
var l = dragImg.offsetLeft;
var t = dragImg.offsetTop;
offsetx = ev.clientX - l;
offsety = ev.clientY - t;
}
function drag(e){
e.preventDefault();
/*min need calculate*/
var ml = 8,mr = 20,maxy = 70,moveWidth = 77,min=34;
var dragImg = e.target;
var dragLine = document.getElementById("dragLine");
var movex = e.clientX - offsetx;
var movey = e.clientY - offsety;
var minPY = dragLine.offsetLeft-ml;
var maxPY = dragLine.offsetLeft+dragLine.clientWidth-mr;
if(Math.abs(movey)>maxy){
return
}
if(movex<minPY){
dragImg.style.left = minPY + "px";
return
}
if(movex>maxPY){
dragImg.style.left = maxPY + "px";
return
}
dragImg.style.left = movex + "px";
}
function dragEnd (e){
e.preventDefault();
/*min need calculate*/
var ml = 8,mr = 20,maxy = 70,moveWidth = 77,min=34;
var dragImg = e.target;
var dragLine = document.getElementById("dragLine");
var movex = e.clientX - offsetx;
var movey = e.clientY - offsety;
var minPY = dragLine.offsetLeft-ml;
var maxPY = dragLine.offsetLeft+dragLine.clientWidth-mr;
if(movex<minPY){
dragImg.style.left = minPY + "px";
$(dragImg).parent().prev().find("input").val(100)
return
}
if(movex>maxPY){
dragImg.style.left = maxPY + "px";
$(dragImg).parent().prev().find("input").val(10000)
return
}
/*dragEnd xifu*/
var num = parseInt ( movex / moveWidth )
dragImg.style.left = (min+moveWidth*num) + "px";
/*dragEnd set input*/
var thisNode = $(dragImg)
var spans = thisNode.parent().next().find('span')
var html = spans.eq(num).html()
var input = thisNode.parent().prev().find("input")
input.val(html)
}
/*
function init() {
document.body.onmousemove = function(e) {
if (!e) {
e = window.event;
}
else {
e.srcElement = e.target;
}
document.getElementById("divDebug").innerHTML = "mousemove (" + e.clientX + "," + e.clientY + ") srcElement=" + e.srcElement.tagName + "[" + e.srcElement.id + "]";
}
}*/
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
jquery實(shí)現(xiàn)獲取具體時間(年月日)后3個月+1天的年月日
這篇文章主要為大家詳細(xì)介紹了jquery如何實(shí)現(xiàn)獲取具體時間(年月日)后3個月+1天的年月日,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2023-11-11
如何用jQuery實(shí)現(xiàn)ASP.NET GridView折疊伸展效果
我們今天就一個具體的需求進(jìn)行分析,引出如何用jQuery實(shí)現(xiàn)ASP.NET GridView折疊伸展效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-09-09
淺析Js(Jquery)中,字符串與JSON格式互相轉(zhuǎn)換的示例(直接運(yùn)行實(shí)例)
這幾天,遇到了json格式在JS和Jquey的環(huán)境中,需要相互轉(zhuǎn)換,在網(wǎng)上查了一下,大多為缺胳膊少腿,也許咱是菜鳥吧,終于測試成功后,還是給初學(xué)者們一個實(shí)例吧2013-07-07
基于jQuery的前端數(shù)據(jù)通用驗(yàn)證庫
做了這么長時間的開發(fā),一直因?yàn)轵?yàn)證的問題相當(dāng)?shù)目鄲?,不斷的寫很多重?fù)的代碼,對想偷懶的我來說是相當(dāng)痛苦的。2011-08-08
jquery獲取transform里的值實(shí)現(xiàn)方法
下面小編就為大家分享一篇jquery獲取transform里的值實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
Jquery 實(shí)現(xiàn)表格顏色交替變化鼠標(biāo)移過顏色變化實(shí)例
Jquery 實(shí)現(xiàn)表格顏色交替變化,點(diǎn)擊選中行,鼠標(biāo)移過顏色變化效果附演示代碼 ,喜歡的朋友可以參考下2013-08-08
用Juery網(wǎng)頁選項卡實(shí)現(xiàn)代碼
現(xiàn)在jquery比較流行,很多的選項卡效果可以通過jquery來實(shí)現(xiàn)。2011-06-06

