javascript拖拽效果延伸学习


Posted in Javascript onApril 04, 2016

本文总结一下,拖拽所延伸出来的一些效果,供大家参考,具体内容如下

1.实现拖拉图片时,带框的效果。即当鼠标拖动某一个图片或物体时,其原有位置扔保留其型。

这种效果,其实很简单,主要是另外创建一个物体,使其与被拖拽的物体,宽和高一样,然后,将其变为拖拽的对象。

直接上代码:

<html
<head>
<style>
#div1 {width:100px; height:100px; background:yellow; position:absolute;}
.box{border: 1px solid black;position: absolute;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function ()//凡是被拖拽的物体,其必须定位为absolute
{
  var oDiv=document.getElementById('div1');
  oDiv.onmousedown=function (ev)
  {
    var oEvent=ev||event;
    var disX=oEvent.clientX-oDiv.offsetLeft;
    var disY=oEvent.clientY-oDiv.offsetTop;

    var oNewDiv=document.createElement('div');
    oNewDiv.className='box';
    oNewDiv.style.width=oDiv.offsetWidth-2+'px';//将2px的边框去掉
    oNewDiv.style.height=oDiv.offsetHeight-2+'px';
    
     oNewDiv.style.left=oDiv.offsetLeft+'px';
     oNewDiv.style.top=oDiv.offsetTop+'px';
    document.body.appendChild(oNewDiv);
    document.onmousemove=function (ev)
    {
      var oEvent=ev||event;
      oNewDiv.style.left=oEvent.clientX-disX+'px';
      oNewDiv.style.top=oEvent.clientY-disY+'px';
    };
    document.onmouseup=function ()
    {
      document.onmousemove=null;
      document.onmouseup=null;
      document.body.removeChild(oNewDiv);
      oDiv.style.left=oNewDiv.style.left;
      oDiv.style.top=oNewDiv.style.top;
    };
  };
};
</script>
</head>

<body>
<div id="div1">
</div>
</body>
</html>

2.关于窗口拖拉放大缩小的效果,就是在上面的div之中再包一个div。

<html
<head>
<style>
#div1 {width:10px; height:10px; background:url(images/1.gif); position:absolute;bottom: 0;right: 0}//拖拉的物体,改为图片
#div2{width: 200px;height: 200px;position: relative;background: #ccc;}
.box{border: 1px solid black;position: absolute;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function ()//凡是被拖拽的物体,其必须定位为absolute
{
  var oDiv=document.getElementById('div1');
   var oDiv2=document.getElementById('div2');
  oDiv.onmousedown=function (ev)
  {
    var oEvent=ev||event;
    var disX=oEvent.clientX-oDiv.offsetLeft;
    var disY=oEvent.clientY-oDiv.offsetTop;

    var oNewDiv=document.createElement('div');
    //oNewDiv.className='box';
    oNewDiv.style.width=oDiv.offsetWidth-2+'px';
    oNewDiv.style.height=oDiv.offsetHeight-2+'px';
    
     oNewDiv.style.left=oDiv.offsetLeft+'px';
     oNewDiv.style.top=oDiv.offsetTop+'px';
    document.body.appendChild(oNewDiv);
    document.onmousemove=function (ev)
    {
      var oEvent=ev||event;
      oDiv2.style.width=oEvent.clientX-disX+'px';//这里是它的父级
      oDiv2.style.height=oEvent.clientY-disY+'px';
    };
    document.onmouseup=function ()
    {
      document.onmousemove=null;
      document.onmouseup=null;
      document.body.removeChild(oNewDiv);
      oDiv.style.left=oDiv2.style.left;
      oDiv.style.top=oDiv2.style.top;
    };
  };
};
</script>
</head>

<body>
<div id='div2'>
   <div id="div1">
   </div>
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JavaScript 设计模式学习 Singleton
Jul 27 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
Mar 28 Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 Javascript
详谈js原型继承的一些问题
Sep 06 Javascript
JS异步函数队列功能实例分析
Nov 28 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
你点的 ES6一些小技巧,请查收
Apr 25 Javascript
15个顶级开源JavaScript框架和库
Oct 10 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
javascript事件委托的用法及其好处简析
Apr 04 #Javascript
基于javascript制作微博发布栏效果
Apr 04 #Javascript
纯js实现手风琴效果
Apr 17 #Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 #Javascript
Angular 根据 service 的状态更新 directive
Apr 03 #Javascript
jQuery中的Deferred和promise 的区别
Apr 03 #Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
Apr 03 #Javascript
You might like
for循环连续求和、九九乘法表代码
2012/02/20 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
js微信分享API
2020/10/11 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
TensorFlow的权值更新方法
2018/06/14 Python
Python实现多线程的两种方式分析
2018/08/29 Python
python 解压pkl文件的方法
2018/10/25 Python
python实现猜数字游戏
2020/03/25 Python
pandas apply多线程实现代码
2020/08/17 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
经典c++面试题四
2015/05/14 面试题
优秀高中生事迹材料
2014/02/11 职场文书
工地标语大全
2014/06/18 职场文书
电子工程求职信
2014/07/17 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
春节晚会开场白
2015/05/29 职场文书
课题研究阶段性总结
2015/08/13 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Python requests用法和django后台处理详解
2022/03/19 Python