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 给汉字排序实例代码
Jun 28 Javascript
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
原生js 秒表实现代码
Jul 24 Javascript
js特效,页面下雪的小例子
Jun 17 Javascript
多种方式实现JS调用后台方法进行数据交互
Aug 20 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 Javascript
bootstrap学习笔记之初识bootstrap
Jun 21 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
JS中Attr的用法详解
Oct 09 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
常用PHP封装分页工具类
2017/01/14 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
Python科学计算之Pandas详解
2017/01/15 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python绘制多个子图的实例
2019/07/07 Python
python和php哪个容易学
2020/06/19 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
网络技术支持面试题
2013/04/22 面试题
火车来了教学反思
2014/02/11 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
婚礼家长致辞
2015/07/27 职场文书
校长新学期致辞
2015/07/30 职场文书