原生JS拖拽效果

  

很多时候我们做网站都会遇到   <强> JS拖拽的需求,今天就按照一个弹出框拖拽作为一个小案例写个JS原生的代码。

  

  原生JS拖拽效果

  

按照上面的需求咱们开始制作一个拖拽效果吧。

  

  <强>第一步,咱们得写一个布局和响应的css

  
 & lt; div  id=癰ox"比;
  ,,,& lt; div  id=癰tn"在标题& lt;/div>
  ,,,& lt; p>青格勒前端博客! & lt;/p>
  ,,,& lt; p> www.cenggel.com

& lt;/div>
  
 & lt; style>
  盒子,,,#{,身高:200 px;,宽度:200 px;,背景:# 999;,位置:绝对;},,,,# btn{,高度:30 px;,背景:# 000;,光标:all-scroll;,填充:0,10 px;,颜色:# fff;} & lt;/style> 
  

这里的话咱们id=btn的为拖拽的区域。

  

  <强>二、逻辑讲述

  

整个JS代码不是很多,当鼠标按下的时候获取鼠标的位置和id=框的上距和左边距,然后计算目前的位置。

  

然后这时候鼠标移动的时候再次计算鼠标的位置,然后给id=框位置

  

当鼠标按钮松开的时候把onmousemove和onmouseup清除掉

  

  <强>三,JS代码部分

  
 & lt; script 类型=拔谋?javascript"比;
  ,,,function 阻力(obtnf obtn){,,,,,,,//按钮及初始值
  ,,,,,,,var  obtn =, . getelementbyid (obtn),
  ,,,,,,,,,,,obtnf =, . getelementbyid (obtnf),
  ,,,,,,,,,,,disX =, 0,
  ,,,,,,,,,,,disY =, 0;,,,,,,,,//鼠标按下时开始计算
  ,,,,,,,obtn.onmousedown =,函数(ev) {,,,,,,,,,,, var  ev =, ev  | |, window.event;
  ,,,,,,,,,,,disX =, ev.clientX 作用;obtnf.offsetLeft;
  ,,,,,,,,,,,disY =, ev.clientY 作用;obtnf.offsetTop;,,,,,,,,,,,,//鼠标按下并移动时计算
  ,,,,,,,,,,,document.onmousemove =,函数(ev) {,,,,,,,,,,,,,,, var  ev =, ev  | |, window.event;
  ,,,,,,,,,,,,,,,obtnf.style.left =, ev.clientX 作用;disX  +, & # 39; px # 39;;
  ,,,,,,,,,,,,,,,obtnf.style.top =, ev.clientY 作用;disY  +, & # 39; px # 39;;
  ,,,,,,,,,,,},,,,,,,,,,,,,//鼠标松开时清除时间
  ,,,,,,,,,,,document.onmouseup =,函数(){,,,,,,,,,,,,,,,document.onmousemove =,零,,,,,,,,,,,,,,,,,document.onmouseup =,空;
  ,,,,,,,,,,,},,,,,,,,,,,,,return 假;
  ,,,,,,,};
  ,,,},,,,,//引用
  ,,,拖(“box",“btn") & lt;/script>, www.gendan5.com 
  

最后咱们的效果如下

  

  原生JS拖拽效果

  

做到这里其实咱们的效果并不完的美,应为当我们拖拽的时候发现,他能直接被拖到浏览器的外面去了,所以咱们再给他加点限制。

  

最终JS代码如下:

  
 & lt; script 类型=拔谋?javascript"比;
  ,,,function  xianzhi (val,最大值、最小值){,,,,,,,if  (val 祝辞,max) {,,,,,,,,,,, return 马克思;
  ,,,,,,,}else 如果(val  & lt;, min) {,,,,,,,,,,, return ,最小值;
  ,,,,,,,其他}{,,,,,,,,,,,return  val;
  ,,,,,,,},,,,,,,,console.log (val)
  ,,,},,,,function 阻力(obtnf obtn){,,,,,,,//按钮及初始值
  ,,,,,,,var  obtn =, . getelementbyid (obtn),
  ,,,,,,,,,,,obtnf =, . getelementbyid (obtnf),
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

原生JS拖拽效果