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 相关文章推荐
javascript 支持ie和firefox杰奇翻页函数
Jul 22 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
IE FF OPERA都可用的弹出层实现代码
Sep 29 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
JavaScript实现鼠标点击后层展开效果的方法
May 13 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
Sep 02 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
JS无限级导航菜单实现方法
Jan 05 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 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的日期与时间函数技巧
2008/04/24 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
jquery获取元素索引值index()示例
2014/02/13 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
python实现telnet客户端的方法
2015/04/15 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python如何使用腾讯云发送短信
2020/09/17 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
社区娱乐活动方案
2014/08/21 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python