zoukankan      html  css  js  c++  java
  • js 鼠标画图

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title></title>
    <style type="text/css">
    .box {
    background: #f00;
    width: 0px;
    height: 0px;
    position: absolute;
    vertical-align:middle;
    opacity: 0.5;
    cursor: move;
    text-align:center;
    border-radius:50%;
    }
    </style>
    </head>
    <body>
    <div style="background-color:red;50px;height:50px;"></div>
    <script type="text/javascript">
    
    
    window.onload = function (e) {
    e = e || window.event;
    // startX, startY 为鼠标点击时初始坐标
    // diffX, diffY 为鼠标初始坐标与 box 左上角坐标之差,用于拖动
    var startX, startY, diffX, diffY;
    // 是否拖动,初始为 false
    var dragging = false;
    
    document.onmousedown = function (e) {
    console.log('onmousedownE', e);
    startX = e.pageX;
    startY = e.pageY;
    
    console.log('startx', startX);
    console.log('startY', startY);
    if (e.target.className.match(/box/)) {
    // 允许拖动
    dragging = true;
    
    // 设置当前 box 的 id 为 moving_box
    if (document.getElementById("moving_box") !== null) {
    document.getElementById("moving_box").removeAttribute("id");
    }
    e.target.id = "moving_box";
    
    // 计算坐标差值
    diffX = startX - e.target.offsetLeft;
    console.log('diffX', diffX);
    
    diffY = startY - e.target.offsetTop;
    console.log('diffY', diffY);
    }
    else {
    // 在页面创建 box
    var active_box = document.createElement("div");
    active_box.id = "active_box";
    active_box.className = "box";
    active_box.style.top = startY + 'px';
    active_box.style.left = startX + 'px';
    
    active_box.innerText = "x:" + startX + ",y:" + startY;
    document.body.appendChild(active_box);
    active_box = null;
    }
    };
    
    // 鼠标移动
    document.onmousemove = function (e) {
    // 更新 box 尺寸
    if (document.getElementById("active_box") !== null) {
    var ab = document.getElementById("active_box");
    ab.style.width = e.pageX - startX + 'px';
    ab.style.height = e.pageY - startY + 'px';
    active_box.style.lineHeight = e.pageY - startY + 'px';
    }
    
    // 移动,更新 box 坐标
    if (document.getElementById("moving_box") !== null && dragging) {
    var mb = document.getElementById("moving_box");
    mb.style.top = e.pageY - diffY + 'px';
    mb.style.left = e.pageX - diffX + 'px';
    mb.innerText = "x:" + mb.style.left + ",y:" + mb.style.top;
    }
    };
    
    // 鼠标抬起
    document.onmouseup = function (e) {
    // 禁止拖动
    dragging = false;
    if (document.getElementById("active_box") !== null) {
    var ab = document.getElementById("active_box");
    ab.removeAttribute("id");
    // 如果长宽均小于 3px,移除 box
    if (ab.offsetWidth < 3 || ab.offsetHeight < 3) {
    document.body.removeChild(ab);
    }
    }
    };
    }
    </script>
    </body>
    </html>
  • 相关阅读:
    win10前面板耳机没声音
    学计算机的值得一看的文章,跟帖也很有水平啊
    ubuntu下编译caffe
    pip卡住不动的解决方案
    数字图像处理处理中的数学怎么提高?
    安装vmall5:从ebak恢复数据,需要配置php.ini
    python入门(7)Python程序的风格
    python入门(6)输入和输出
    python入门(5)使用文件编辑器编写代码并保存执行
    python入门(4)第一个python程序
  • 原文地址:https://www.cnblogs.com/xybs/p/14333303.html
Copyright © 2011-2022 走看看