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学习笔记(三)显示当时时间的代码
Apr 08 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
javascript格式化指定日期对象的方法
Apr 21 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
JS正则匹配中文的方法示例
Jan 06 Javascript
重新理解JavaScript的六种继承方式
Mar 24 Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
Vue路由守卫之路由独享守卫
Sep 25 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 Javascript
如何HttpServletRequest文件对象并储存
Aug 14 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
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
web性能优化之javascript性能调优
2012/12/28 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
javascript模拟命名空间
2015/04/17 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
js html实现计算器功能
2018/11/13 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
广播体操口号
2014/06/18 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android
Django中celery的使用项目实例
2022/07/07 Python
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS