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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
jquery 新浪网易的评论块制作
Jul 01 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
Oct 20 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
Jan 15 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
Vue.js学习笔记之常用模板语法详解
Jul 25 Javascript
mpvue 如何使用腾讯视频插件的方法
Jul 16 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 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
PHP中的正规表达式(二)
2006/10/09 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
深入理解PHP中的count函数
2016/05/31 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
python实现八大排序算法(1)
2017/09/14 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
区分python中的进程与线程
2020/08/13 Python
python编程的核心知识点总结
2021/02/08 Python
实习生体会的自我评价范文
2013/11/28 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
长城的导游词
2015/01/30 职场文书
大学学生会辞职信
2015/05/13 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
详解Python描述符的工作原理
2021/06/11 Python