JS实现基于拖拽改变物体大小的方法

 更新时间:2018年01月23日 12:08:34   作者:关耳佳  
这篇文章主要介绍了JS实现基于拖拽改变物体大小的方法,涉及javascript事件响应及页面元素属性动态操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了JS实现基于拖拽改变物体大小的方法。分享给大家供大家参考,具体如下:

拖拽改变物体大小功能:拖拽黄色小div来改变绿色大div的宽和高

主要实现由三大步:

1. 通过id获取到大小两个div
2. 给小div添加onmousedown事件
3. 在onmousedown事件给document添加onmousemoveonmouseup事件

由分析图可知,我们只需要在拖拽的时候,获取到物体不断增加的宽度值,问题就解决了

<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>

效果图:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • JavaScript获取某一天所在的星期

    JavaScript获取某一天所在的星期

    我们会遇到的需求是,获取今天或者某一天所在星期的开始和结束日期。今天小编通过实例代码给大家分享JavaScript获取某一天所在的星期,感兴趣的朋友跟随小编一起看看吧
    2019-09-09
  • JavaScript实现无阻塞加载的常用方式

    JavaScript实现无阻塞加载的常用方式

    在 JavaScript 中,无阻塞加载(Non-blocking Loading)是优化网页性能的关键技术,通过避免脚本阻塞页面渲染和其他资源的加载,提升用户体验,以下是实现无阻塞加载的常用方法及示例,需要的朋友可以参考下
    2025-03-03
  • 用javascript实现放大镜效果

    用javascript实现放大镜效果

    这篇文章主要为大家详细介绍了用javascript实现放大镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • js实现的类似于asp数据字典的数据类型代码实例

    js实现的类似于asp数据字典的数据类型代码实例

    这篇文章主要介绍了js实现的类似于asp数据字典的数据类型代码实例,即js实现的字典数据类型,需要的朋友可以参考下
    2014-09-09
  • JavaScript实现数组去重的14种方法大全

    JavaScript实现数组去重的14种方法大全

    亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧,感兴趣的小伙伴跟着小编一起来看看吧
    2025-03-03
  • WebSocket连接频繁断开的问题及解决方案

    WebSocket连接频繁断开的问题及解决方案

    随着实时应用的普及,如在线聊天、实时数据监控和协作工具,WebSocket 成为了实现双向通信的重要技术,然而,在实际开发中,开发者常常会遇到 WebSocket 连接频繁断开的情况,本文将深入探讨 WebSocket 连接频繁断开的常见原因,并提供详细的解决方案和最佳实践
    2025-02-02
  • 微信小程序实现的动态设置导航栏标题功能示例

    微信小程序实现的动态设置导航栏标题功能示例

    这篇文章主要介绍了微信小程序实现的动态设置导航栏标题功能,结合实例形式分析了微信小程序使用wx.setNavigationBarTitle接口动态设置导航栏标题的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • JavaScript实现一个输入框组件

    JavaScript实现一个输入框组件

    这篇文章主要为大家详细介绍了JavaScript实现一个输入框组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 简单聊聊JavaScript的事件循环机制

    简单聊聊JavaScript的事件循环机制

    前端开发的童鞋应该都知道,JavaScript是一门单线程的脚本语言,这就意味着JavaScript 代码在执行的时候,只有一个主线程来执行所有的任务,同一个时间只能做同一件事情,这篇文章主要给大家介绍了关于JavaScript事件循环机制的相关资料,需要的朋友可以参考下
    2022-03-03
  • 页面中iframe相互传值传参

    页面中iframe相互传值传参

    兼容IE和火狐JS父窗口调用iframe里面的对象、函数的方法
    2009-12-12

最新评论