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创建一个选择文件的对话框代码
Jun 16 Javascript
js判断选择时间不能小于当前时间的示例代码
Sep 24 Javascript
js+css实现文字散开重组动画特效代码分享
Aug 21 Javascript
js实现文字滚动效果
Mar 03 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
Jan 23 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
Vue 中使用 CSS Modules优雅方法
Apr 09 Javascript
JS大坑之19位数的Number型精度丢失问题详解
Apr 22 Javascript
Vue 动态组件components和v-once指令的实现
Aug 30 Javascript
快速解决element的autofocus失效问题
Sep 08 Javascript
详解nginx配置vue h5 history去除#号
Nov 09 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
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
GreyBox技术总结(转)
2010/11/23 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
优秀士兵个人事迹材料
2014/01/19 职场文书
降消项目实施方案
2014/03/30 职场文书
视光学专业自荐信
2014/06/24 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
出国留学导师推荐信
2015/03/26 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP