原生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 相关文章推荐
js传值 判断
Oct 26 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
javascirpt实现2个iframe之间传值的方法
Jun 30 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
select2 ajax 设置默认值,初始值的方法
Aug 09 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
Jun 02 Javascript
vue 监听 Treeselect 选择项的改变操作
Aug 31 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经典的给图片加水印程序
2006/12/06 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
js 加载时自动调整图片大小
2008/05/28 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python实现随机森林random forest的原理及方法
2017/12/21 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
教学个人的自我评价分享
2014/02/16 职场文书
实用的简历自我评价
2014/03/06 职场文书
文明寝室标语
2014/06/13 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
格林童话读书笔记
2015/06/30 职场文书