JS实现基于拖拽改变物体大小的方法


Posted in Javascript onJanuary 23, 2018

本文实例讲述了JS实现基于拖拽改变物体大小的方法。分享给大家供大家参考,具体如下:

拖拽改变物体大小功能:拖拽黄色小div来改变绿色大div的宽和高

JS实现基于拖拽改变物体大小的方法

主要实现由三大步:

1. 通过id获取到大小两个div
2. 给小div添加onmousedown事件
3. 在onmousedown事件给document添加onmousemoveonmouseup事件

JS实现基于拖拽改变物体大小的方法

由分析图可知,我们只需要在拖拽的时候,获取到物体不断增加的宽度值,问题就解决了

<div id="panel">
  <div id="dragIcon"></div>
</div>

加些样式

<style>
    #panel{
      position: absolute;
      width: 200px;height: 200px;
      background: green;
    }
    #dragIcon{
      position: absolute;bottom: 0;right: 0;
      width: 20px;height: 20px;
      background: yellow;
    }
</style>

js实现代码:

<script>
  window.onload = function () {
    // 1. 获取两个大小div
    var oPanel = document.getElementById('panel');
    var oDragIcon = document.getElementById('dragIcon');
    // 定义4个变量
    var disX = 0;//鼠标按下时光标的X值
    var disY = 0;//鼠标按下时光标的Y值
    var disW = 0; //拖拽前div的宽
    var disH = 0; // 拖拽前div的高
    //3. 给小div加点击事件
    oDragIcon.onmousedown = function (ev) {
      var ev = ev || window.event;
      disX = ev.clientX; // 获取鼠标按下时光标x的值
      disY = ev.clientY; // 获取鼠标按下时光标Y的值
      disW = oPanel.offsetWidth; // 获取拖拽前div的宽
      disH = oPanel.offsetHeight; // 获取拖拽前div的高
      document.onmousemove = function (ev) {
        var ev = ev || window.event;
        //拖拽时为了对宽和高 限制一下范围,定义两个变量
        var W = ev.clientX - disX + disW;
        var H = ev.clientY - disY + disH;
        if(W<100){
          W = 100;
        }
        if(W>800){
          W =800;
        }
        if(H<100){
          H = 100;
        }
        if(H>500){
          H = 500;
        }
        oPanel.style.width =W +'px';// 拖拽后物体的宽
        oPanel.style.height = H +'px';// 拖拽后物体的高
      }
      document.onmouseup = function () {
        document.onmousemove = null;
        document.onmouseup = null;
      }
    }
  }
</script>

效果图:

JS实现基于拖拽改变物体大小的方法

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
Oct 24 Javascript
JavaScript中的Array对象使用说明
Jan 17 Javascript
js的一些常用方法小结
Jun 29 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
jquery实现submit提交表单
Feb 03 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
input输入密码变黑点密文的实现方法
Jan 09 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
微信小程序实现倒计时调用相机自动拍照功能
Jun 10 Javascript
vue-router 源码之实现一个简单的 vue-router
Jul 02 Javascript
微信小程序云开发之使用云函数
May 17 Javascript
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
基于vue cli重构多页面脚手架过程详解
Jan 23 #Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
Jan 23 #Javascript
实时监控input框,实现输入框与下拉框联动的实例
Jan 23 #Javascript
从parcel.js打包出错到选择nvm的全部过程
Jan 23 #Javascript
浅谈vue项目重构技术要点和总结
Jan 23 #Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 #Javascript
php 解压zip压缩包内容到指定目录的实例
Jan 23 #Javascript
You might like
一个php作的文本留言本的例子(四)
2006/10/09 PHP
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
JavaScript面向对象编程
2008/03/02 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
js里的prototype使用示例
2010/11/19 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
python根据出生日期获得年龄的方法
2015/03/31 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
国际领先的学术出版商:Springer
2017/01/11 全球购物
绘画专业自荐信
2014/07/04 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
2014红色之旅心得体会
2014/10/07 职场文书