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 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
Javascript数组Array基础介绍
Mar 13 Javascript
浅析jQuery中使用$所引发的问题
May 29 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
Nov 25 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 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
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
JavaScript 学习初步 入门教程
2010/03/25 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
js实现自定义路由
2017/02/04 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
python中while循环语句用法简单实例
2015/05/07 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python微信好友数据分析详解
2018/11/19 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
python让函数不返回结果的方法
2020/06/22 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
房产委托公证书样本
2014/04/04 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
活动主持人开场白
2015/05/28 职场文书