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 相关文章推荐
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
模仿百度三维地图的js数据分享
May 12 Javascript
JQuery入门——事件切换之hover()方法应用介绍
Feb 05 Javascript
使用javascript获取页面名称
Dec 23 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
微信小程序 canvas API详解及实例代码
Oct 08 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
jQuery实现两个select控件的互移操作
Dec 22 Javascript
js+css实现打字效果
Jun 24 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
微信二次分享报错invalid signature问题及解决方法
Apr 01 Javascript
vue a标签点击实现赋值方式
Sep 07 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
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
文秘专业自荐信
2013/10/14 职场文书
网络维护管理员的自我评价分享
2013/11/11 职场文书
给导游的表扬信
2014/01/10 职场文书
公司面试感谢信
2014/02/01 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
岗位聘任书范文
2014/03/29 职场文书
消防安全责任书范本
2014/04/15 职场文书
我的理想演讲稿
2014/04/30 职场文书
单位委托书怎么写
2014/08/02 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python