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 相关文章推荐
不能再简单的无闪刷新验证码原理很简单
Nov 05 Javascript
Eval and new funciton not the same thing
Dec 27 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
禁用JavaScript控制台调试的方法
Mar 07 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 Javascript
js实现网页多级级联菜单代码
Aug 20 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
JS中使用new Option()实现时间联动效果
Dec 10 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
基于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
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
小程序实现录音功能
2020/09/22 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
python3解析库lxml的安装与基本使用
2018/06/27 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
python实现图片转字符画的完整代码
2021/02/21 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
中专毕业生的自我鉴定
2013/12/01 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
集中采购方案
2014/06/10 职场文书
世博会口号
2014/06/20 职场文书
十岁生日答谢词
2015/01/05 职场文书
表扬稿格式范文
2015/01/16 职场文书
Flask response响应的具体使用
2021/07/15 Python