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 相关文章推荐
jQuery创建插件的代码分析
Apr 14 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
聊一聊jQuery插件uploadify使用方法
Aug 24 Javascript
js微信支付实现代码
Dec 22 Javascript
JS作用域深度解析
Dec 29 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
Nuxt升级2.0.0时出现的问题(小结)
Oct 08 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
JavaScript箭头函数中的this详解
Jun 19 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python多线程实现TCP服务端
2019/09/03 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
老师推荐信
2013/10/28 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
网络技术专业求职信
2014/02/18 职场文书
村党支部换届选举方案
2014/05/02 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
React Fragment介绍与使用详解
2021/11/11 Javascript