Home  >  Article  >  Web Front-end  >  JS uses drag events to change the size of objects

JS uses drag events to change the size of objects

php中世界最好的语言
php中世界最好的语言Original
2018-04-13 11:32:251341browse

This time I will bring you JS using drag events to change the size of objects. What are the precautions for JS to use drag events to change the size of objects. The following is a practical case. Let’s take a look. .

Drag to change object size function: drag the yellow small p to change the width and height of the green big p

The main implementation consists of three major steps:

1. Get the size of two p
through the ID 2. Add the onmousedown event to the small p
3. Add the onmousedown event to documentAdd onmousemove and onmouseup events

From the analysis diagram, we can see that we only need to obtain the increasing width value of the object when dragging, and the problem is solved

<p id="panel">
  <p id="dragIcon"></p>
</p>

Add some style

<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 implementation code:

<script>
  window.onload = function () {
    // 1. 获取两个大小p
    var oPanel = document.getElementById('panel');
    var oDragIcon = document.getElementById('dragIcon');
    // 定义4个变量
    var disX = 0;//鼠标按下时光标的X值
    var disY = 0;//鼠标按下时光标的Y值
    var disW = 0; //拖拽前p的宽
    var disH = 0; // 拖拽前p的高
    //3. 给小p加点击事件
    oDragIcon.onmousedown = function (ev) {
      var ev = ev || window.event;
      disX = ev.clientX; // 获取鼠标按下时光标x的值
      disY = ev.clientY; // 获取鼠标按下时光标Y的值
      disW = oPanel.offsetWidth; // 获取拖拽前p的宽
      disH = oPanel.offsetHeight; // 获取拖拽前p的高
      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>

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Recommended reading:

Detailed explanation of the steps to achieve seamless scrolling effect with vue.js

Implementation of react server rendering Detailed explanation of steps

The above is the detailed content of JS uses drag events to change the size of objects. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn