zoukankan      html  css  js  c++  java
  • 鼠标拖拽事件

    鼠标拖拽事件:

      • 鼠标按下事件;
      • 鼠标移动事件;
      • 鼠标抬起事件。
      • 移动前移动后鼠标在元素上的相对位置不发生改变,所以要记录鼠标在元素上的位置。
        在移动的时候需要记录元素的偏移数
        最后需要判断边界,当元素到达边界时就不能再移动了
        最后需要 把属性重新设置一下,否则元素不能被拖拽。
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                *{
                    margin:0;
                    padding:0;
                    
                }
                div{
                    width:100px;
                    height:100px;
                    background:red;
                    position:absolute;  /* 对元素进行定位*/
                    left:0;
                    top:0;
                }
            </style>
        </head>
        
        <body>
            <div></div>
        </body>
        <script>
            var oDiv = document.getElementsByTagName('div')[0]
            var body = document.getElementsByTagName('body')[0]
            
            // 计算最大偏移距离(后期判断边界时要用到)  oDiv.offsetWidth:表示div的宽度
            var maxLeft = window.innerWidth - oDiv.offsetWidth
            var maxTop = window.innerHeight - oDiv.offsetHeight
            
            // 鼠标按下事件
            oDiv.onmousedown = function (e) {
                var ev = e || event
                //记录鼠标在元素上的位置
                var posX = ev.clientX-oDiv.offsetLeft
                var posY = ev.clientY-oDiv.offsetTop
                //鼠标移动事件
                body.onmousemove = function(e){
                    var ev = e || event
                    //计算元素的偏移
                    var left = ev.clientX-posX
                    var top = ev.clientY-posY
                    //判断边界
                    if (left<0){
                        left=0
                    }else if (left>maxLeft){
                        left=maxLeft
                    }
                    if (top<0){
                        top=0
                    }else if(top>maxTop){
                        top=maxTop
                    }
                    
                    //重新设置属性
                    oDiv.style.left = left + "px"
                    oDiv.style.top = top + "px"
                }    
                //鼠标抬起事件
                body.onmouseup = function(){
                    body.onmousemove = null
                    body.onmouseup = null
                }
            }
            
        </script>
    </html>
  • 相关阅读:
    IDEA中代码无故报红解决方法
    CAP原则的基本理论知识
    Java IO 拷贝MP3文件,包括递归子文件夹下的文件
    maven 配置阿里云镜像 settings.xml内容
    Restful API 级别及意义
    日常巡检(脚本)
    使用Matplotlib画图系列(一)
    Python 阶乘factorial
    交叉验证思想
    FeatureSelectors
  • 原文地址:https://www.cnblogs.com/jiangtao159/p/9839256.html
Copyright © 2011-2022 走看看