原生JS实现拖拽图片效果


Posted in Javascript onAugust 27, 2020

本文实例为大家讲解了JS实现拖拽图片效果的详细代码,分享给大家供大家参考,具体内容如下

javascript event 对象的clientX,offsetX,screenX,pageX的区别:

原生JS实现拖拽图片效果

用html5的drag来实现拖拽有兼容性问题,使用拖拽插件代码又很多,而这个拖拽demo代码少,并且兼容所有浏览器,很值得在项目中使用,

css样式如下:

#div1{ 
  width: 100px; height: 100px; 
  background-color: #4D4D4D; 
  position: absolute; cursor: pointer; 
  -webkit-box-shadow: 3px 3px 0px 3px #C7C7C7; 
  box-shadow: 3px 3px 3px 0px #C7C7C7; 
 }
 #parent{ 
  width: 500px; height: 500px; 
  border: 1px solid #CDCDCD; 
  position: relative; margin: 0 auto; //父级元素设置为:
  background-color: #F4F4F4; 
 }
 .postText{
  width: 500px; height: 30px;margin: 0 auto; background-color: #F4F4F4;
 }
 .postText span{ 
  padding:0px 10px;
 }

html代码如下:

<div id="parent">
 <div id="div1" onmousemove="posMove(this.id)"></div>
</div>
<div class="postText">
 移动的距离Top:<span id="posTop"></span>Left:<span id="posLeft"></span>
</div>

js代码及注释如下

function posMove(getdivid) {
  var oDiv = document.getElementById(getdivid);
  var oParent = document.getElementById('parent');
  var sent = {
   l: 10, //设置div在父元素的活动范围,10相当于给父div设置padding-left:10;
   r: oParent.offsetWidth - oDiv.offsetWidth, // offsetWidth:当前对象的宽度, offsetWidth = width+padding+border
   t: 10,
   b: oParent.offsetHeight - oDiv.offsetHeight,
   n: 10
  }
  drag(oDiv, sent); 
 }
 
 /**
  *
  * @param obj:被拖动的div
  * @param sent :设置div在容器中可以被拖动的区域
  */
 function drag(obj,sent){

  var dmW = document.documentElement.clientWidth || document.body.clientWidth;
  var dmH = document.documentElement.clientHeight || document.body.clientHeight;

  var sent = sent || {};
  var l = sent.l || 0;
  var r = sent.r || dmW - obj.offsetWidth;
  var t = sent.t || 0;
  var b = sent.b || dmH - obj.offsetHeight;
  var n = sent.n || 10;

  obj.onmousedown = function (ev){
   var oEvent = ev || event;
   var sentX = oEvent.clientX - obj.offsetLeft;
   var sentY = oEvent.clientY - obj.offsetTop;

   document.onmousemove = function (ev){
    var oEvent = ev || event;

    var slideLeft = oEvent.clientX - sentX;
    var slideTop = oEvent.clientY - sentY;

    if(slideLeft <= l){
     slideLeft = l;
    }
    if(slideLeft >= r){
     slideLeft = r;
    }
    if(slideTop <= t){
     slideTop = t;
    }
    if(slideTop >= b){
     slideTop = b;
    }

    obj.style.left = slideLeft + 'px';
    obj.style.top = slideTop + 'px';

    document.getElementById('posTop').innerHTML = slideTop;
    document.getElementById('posLeft').innerHTML = slideLeft;

   };
   document.onmouseup = function (){
    document.onmousemove = null;
    document.onmouseup = null;
   }

   return false;
  }
 }

以上就是关于js拖拽效果的实现代码,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery控制display属性为none或block
Mar 31 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
探讨JavaScript中的Rest参数和参数默认值
Jul 29 Javascript
jquery专业的导航菜单特效代码分享
Aug 29 Javascript
JS控制文本域只读或可写属性的方法
Jun 24 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
Jan 25 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
Aug 20 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
Node.js模拟发起http请求从异步转同步的5种用法
Sep 26 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
基于jquery实现下拉框美化特效
Feb 02 #Javascript
AngularJS自动表单验证
Feb 01 #Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 #Javascript
AngularJS手动表单验证
Feb 01 #Javascript
基于JavaScript实现动态添加删除表格的行
Feb 01 #Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 #Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 #Javascript
You might like
详解PHP实现异步调用的4种方法
2016/03/14 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
移动节点的jquery代码
2014/01/13 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
对Django外键关系的描述
2019/07/26 Python
Python timeit模块的使用实践
2020/01/13 Python
Django操作session 的方法
2020/03/09 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
如何查找网页漏洞
2016/06/22 面试题
公司开业庆典策划方案
2014/06/04 职场文书
高考励志标语
2014/06/05 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
工作检讨书大全
2015/01/26 职场文书
小学教学工作总结2015
2015/05/13 职场文书