首页 > 语言 > JavaScript > 正文

jQuery实现html元素拖拽

2024-05-06 16:23:30
字体:
来源:转载
供稿:网友

本文主要给大家分享的是使用jQuery实现html元素可拖拽的效果,十分的炫酷,代码也相对比较简单,有需要的小伙伴可以参考下。

代码很简单,效果非常棒,直接给大家上源码:

html

 

 
  1. <div> 
  2. <div class="money-input"
  3. 定投金额 : 
  4. <div class="input-rela"
  5. <input type="text" placeholder="2000"/> 
  6. <span>元</span> 
  7. </div> 
  8.  
  9. </div> 
  10. <div class="money-line"
  11. <img index="js-minus-a" class="js-minus" src="../images/minus.png" alt=""/> 
  12. <img id="dragImg" class="red-rela" src="../images/money-dw.png" alt="" onDrag="drag(event)" onDragEnd="dragEnd(event)" style="left: 265px;"/> 
  13. <img id="dragLine" class="line3" src="../images/money-line.png" alt=""/> 
  14. <img index="js-plus-a" class="js-plus" src="../images/plus.png" alt="" style="margin-left: 880px;"/> 
  15. </div> 
  16. <div class="money-desc"
  17. <span style="margin-left: 65px;">100</span> 
  18. <span>500</span> 
  19. <span>1000</span> 
  20. <span>2000</span> 
  21. <span>3000</span> 
  22. <span>4000</span> 
  23. <span>5000</span> 
  24. <span>6000</span> 
  25. <span>7000</span> 
  26. <span>8000</span> 
  27. <span>9000</span> 
  28. <span>10000</span> 
  29. </div> 
  30. <p>单位:元</p> 
  31. </div> 

css

 

 
  1. .money-input{margin:36px auto 0;width:330px;font-size:14px;color:#818181} 
  2. .input-rela{width:250px;height:42px;display:inline-block;position:relative} 
  3. .input-rela>input{width:inherit;height:38px;border:1px solid #eee} 
  4. .input-rela>span{position:absolute;right:10px;top:13px} 
  5. .money-line{width:970px;margin:60px auto 0;position:relative} 
  6. .line3{position:absolute;left:40px;top:10px} 
  7. .red-rela{position:absolute;top:0;z-index:2;cursor:pointer} 
  8. .money-desc,.month-desc{font-size:12px;color:#818181} 
  9. .money-desc+p,.month-desc+p{margin-right:60px;text-align:right;color:#5a5a5a} 
  10. .money-desc>span{display:inline-block;width:71px} 
  11. .month-desc>span{display:inline-block;width:79px} 

js

 

 
  1. /** 
  2. * Created by cq on 2015/6/15. 
  3. */ 
  4. $(function(){ 
  5.  
  6. $('.js-minus').click(function(){ 
  7. /* min need calculate*/ 
  8. var index = $(this).attr("index"
  9. var move,min; 
  10. if(index=="js-minus-a"){ 
  11. move = 77; 
  12. min = 34; 
  13. if(index=="js-minus-b"){ 
  14. move = 85; 
  15. min = 36; 
  16. var redPoint = $(this).next() 
  17. var left = redPoint.css("left"
  18. var leftInt = left.replace(/px/g,""
  19. if((parseInt(leftInt)-move)>=min){ 
  20. var newLeft = (parseInt(leftInt)-move)+"px" 
  21. redPoint.css("left",newLeft) 
  22. var num = parseInt ( (parseInt(leftInt)-move-min) / move ) 
  23. var input = $(this).parent().prev().find("input"
  24. if(index=="js-minus-a"){ 
  25. var spans = $(this).parent().next().find("span"
  26. var html = spans.eq(num).html() 
  27. input.val(html) 
  28. if(index=="js-minus-b"){ 
  29. input.val(getMonth(num)) 
  30. }) 
  31.  
  32. $('.js-plus').click(function(){ 
  33. /* max and min need calculate*/ 
  34. var index = $(this).attr("index"
  35. var move , max , min ; 
  36. if(index=="js-plus-a"){ 
  37. move = 77; //ÿ��ƫ���� 
  38. max = 881; //�������� 
  39. min = 34; //��Сƫ���� 
  40. if(index=="js-plus-b"){ 
  41. move = 85; 
  42. max = 886; 
  43. min = 36; 
  44.  
  45. var redPoint = $(this).prev().prev() 
  46. var left = redPoint.css("left"
  47. var leftInt = left.replace(/px/g,""
  48. if((parseInt(leftInt)+move)<=max){ 
  49. var newLeft = (parseInt(leftInt)+move)+"px" 
  50. redPoint.css("left",newLeft) 
  51. var num = parseInt( (parseInt(leftInt)+move-min) / move ) 
  52. var input = $(this).parent().prev().find("input"
  53. if(index=="js-plus-a"){ 
  54. var spans = $(this).parent().next().find("span"
  55. var html = spans.eq(num).html() 
  56. input.val(html) 
  57. if(index=="js-plus-b"){ 
  58. input.val(getMonth(num)) 
  59. }) 
  60.  
  61. /*move img js*/ 
  62. var offsetx = 0, offsety = 0; 
  63. var dragImg = document.getElementById("dragImg"
  64. dragImg.addEventListener("mousedown",beforeDrag,true); 
  65. }) 
  66.  
  67. function beforeDrag(ev){ 
  68. dragImg = ev.target; 
  69. var l = dragImg.offsetLeft; 
  70. var t = dragImg.offsetTop; 
  71. offsetx = ev.clientX - l; 
  72. offsety = ev.clientY - t; 
  73.  
  74. function drag(e){ 
  75. e.preventDefault(); 
  76. /*min need calculate*/ 
  77. var ml = 8,mr = 20,maxy = 70,moveWidth = 77,min=34; 
  78. var dragImg = e.target; 
  79. var dragLine = document.getElementById("dragLine"); 
  80. var movex = e.clientX - offsetx; 
  81. var movey = e.clientY - offsety; 
  82. var minPY = dragLine.offsetLeft-ml; 
  83. var maxPY = dragLine.offsetLeft+dragLine.clientWidth-mr; 
  84. if(Math.abs(movey)>maxy){ 
  85. return 
  86. if(movex<minPY){ 
  87. dragImg.style.left = minPY + "px"
  88. return 
  89. if(movex>maxPY){ 
  90. dragImg.style.left = maxPY + "px"
  91. return 
  92. dragImg.style.left = movex + "px"
  93.  
  94.  
  95. function dragEnd (e){ 
  96. e.preventDefault(); 
  97. /*min need calculate*/ 
  98. var ml = 8,mr = 20,maxy = 70,moveWidth = 77,min=34; 
  99. var dragImg = e.target; 
  100. var dragLine = document.getElementById("dragLine"); 
  101. var movex = e.clientX - offsetx; 
  102. var movey = e.clientY - offsety; 
  103. var minPY = dragLine.offsetLeft-ml; 
  104. var maxPY = dragLine.offsetLeft+dragLine.clientWidth-mr; 
  105.  
  106. if(movex<minPY){ 
  107. dragImg.style.left = minPY + "px"
  108. $(dragImg).parent().prev().find("input").val(100) 
  109. return 
  110. if(movex>maxPY){ 
  111. dragImg.style.left = maxPY + "px"
  112. $(dragImg).parent().prev().find("input").val(10000) 
  113. return 
  114. /*dragEnd xifu*/ 
  115. var num = parseInt ( movex / moveWidth ) 
  116. dragImg.style.left = (min+moveWidth*num) + "px"
  117. /*dragEnd set input*/ 
  118. var thisNode = $(dragImg) 
  119. var spans = thisNode.parent().next().find('span'
  120. var html = spans.eq(num).html() 
  121. var input = thisNode.parent().prev().find("input"
  122. input.val(html) 
  123.  
  124. /* 
  125. function init() { 
  126. document.body.onmousemove = function(e) { 
  127. if (!e) { 
  128. e = window.event; 
  129. } 
  130. else { 
  131. e.srcElement = e.target; 
  132. } 
  133. document.getElementById("divDebug").innerHTML = "mousemove (" + e.clientX + "," + e.clientY + ") srcElement=" + e.srcElement.tagName + "[" + e.srcElement.id + "]"; 
  134. } 
  135. }*/ 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选