zoukankan      html  css  js  c++  java
  • 拖动div元素

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>CodePen - draggable div#4</title>
    <style>
    *{margin:0;padding:0;border:none}
    body,html{height:100%;width:100%}
    .drag-box{user-select:none;background:#f0f0f0;z-index:2147483647;position:fixed;left:0;top:0;width:200px}
    #dragBoxBar{align-items:center;display:flex;justify-content:space-between;background:#ccc;width:100%;height:40px;cursor:move;user-select:none}
    .no-select{user-select:none}
    .pointer-events{pointer-events:none}
    .no-border{border:none}
    #injectedBox{height:160px;display:flex;align-items:center;justify-content:center;font-size:2rem;background:#eee}
    
    #dragdiv{z-index:2147483647;position:fixed;left:0;top:0;width:200px}
    #draghead {background:#ccc;width:100%;height:40px;cursor:move}
    #dragbody{height:160px;width:100%;background:#eee}
    </style>
    <script src="jquery-1.8.2.min.js"></script>
    </head>
    <body>
    <div id="dragdiv">
        <div id="draghead"></div>
        <div id="dragbody"></div>
    </div>
    <script>
    var isMouseDown,
    initX,
    initY,
    height = $('#dragbody').offsetHeight,
    width = $('#dragbody').offsetWidth,
    dragBoxBar = document.getElementById('draghead'),
    injectedBox = document.getElementById('dragbody'),
    dragBox = document.getElementById('dragdiv');
    
    dragBoxBar.addEventListener('mousedown', function (e) {
      isMouseDown = true;
      document.body.classList.add('no-select');
      injectedBox.classList.add('pointer-events');
      initX = e.offsetX;
      initY = e.offsetY;
      //dragBox.style.opacity = 0.5;
    });
    
    dragBoxBar.addEventListener('mouseup', function (e) {
      mouseupHandler();
    });
    
    document.addEventListener('mousemove', function (e) {
      if (isMouseDown) {
        var cx = e.clientX - initX,
        cy = e.clientY - initY;
        if (cx < 0) cx = 0;
        if (cy < 0) cy = 0;
        if (window.innerWidth - e.clientX + initX < width + 16)  cx = window.innerWidth - width;
        if (e.clientY > window.innerHeight - height - dragBoxBar.offsetHeight + initY) cy = window.innerHeight - dragBoxBar.offsetHeight - height;
        dragBox.style.left = cx + 'px';
        dragBox.style.top = cy + 'px';
      }
    });
    
    document.addEventListener('mouseup', function (e) {
      if (e.clientY > window.innerWidth || e.clientY < 0 || e.clientX < 0 || e.clientX > window.innerHeight) {
        mouseupHandler();
      }
    });
    
    function mouseupHandler() {
      isMouseDown = false;
      document.body.classList.remove('no-select');
      injectedBox.classList.remove('pointer-events');
      //dragBox.style.opacity = 1;
    }
    </script>
    </body>
    </html>
  • 相关阅读:
    C#中TreeView组件使用方法初步
    DataList编辑、更新、取消、删除、分页
    使用JMeter做web应用的压力测试
    再读Struts1.3.5 User Guide 3 Building Control Components
    Tomcat DBCP Connection Pool Abandon Feature
    在Linux调试web应用时,如何查看System.out.println的输出?
    再读Struts1.3.5 User Guide 4 Configuring Applications
    一篇关于web.xml配置的详细说明
    再读Struts1.3.5 User Guide 1 Building Model Components
    Struts下html:select可以多选时的处理方法
  • 原文地址:https://www.cnblogs.com/wangyongx/p/11526783.html
Copyright © 2011-2022 走看看