• 事件对象的属性 div点击移动事件


       // 事件对象的相关属性
            // e.target   触发事件的标签对象
            //            e.target支持所有标签对象的操作
            // e.target.parentElement   直接父级标签对象
            // e.target.parentNode      直接父级标签对象
            // e.target.tagName         触发事件的标签对象名称  全大写英文字母

            // 点击事件中,e事件对象中存储的坐标信息
            // 键盘事件中,e事件对象中存储的按键信息

            // 点击事件和键盘事件,e事件对象中存储的信息内容是不同的

            // 只能获取鼠标点击的位置坐标,不能设定鼠标位置的坐标

            // offsetX  offsetY
            //     触发事件的标签对象,左上角为坐标原点
            // 在鼠标拖拽时,会有大问题
            //     获取鼠标坐标时,原点,会改变
            //     例如,在整个页面中拖拽div
            //          起始时,坐标原点是 document 文档的左上角
            //          当鼠标经过div时,坐标原点是 div 的左上角
            //          获取的坐标数值不同,会造成 div 闪来闪去  

            // clientX  clientY
            //     视窗窗口,左上角为坐标原点  

            // pageX  pageY
            //     HTML文档,左上角为坐标原点  

            // 当页面没有滚动时,两个坐标数据相同
            // 当页面发生滚动时,两个坐标数据不同


            var oDiv = document.querySelector('div');
            oDiv.addEventListener('click' , function(e){
                e = e || window.event;
                console.log(e);
            })
     
     <style>
            *{
                margin: 0;
                padding: 0;
            }

            body{
                height: 5000px;
            }

            div{
                 100px;
                height: 100px;
                background: pink;
                position: fixed;
                top:0;
                left:0;
            }
        </style>
    </head>
    <body>
        <div></div>
        <script src="./tools.js"></script>
        <script>
            // 通过点击鼠标,控制div的位置
            // 让div位置与鼠标点击位置相同
            // 获取鼠标点击时的坐标,设定为div标签定位的坐标数据

            // 默认执行效果,定位之后,div的左上角与鼠标重合
            
            // 如果需要其他位置与鼠标重合,就需要调整定位的数值
            // 例如: 需要div中心位置与鼠标重合 : 定位数值 - div宽度高度的一半 

            var oDiv = document.querySelector('div');

            // 给 document 整个文档添加点击事件
            document.addEventListener('click' , function(e){
                e = e || window.event;

                // 如果需要div中心与鼠标位置重合
                // 需要获取div的宽度,高度
                // 注意:宽度高度,有px单位,要去掉
                // var h = parseInt(myGetStyle(oDiv , 'height'));
                // var w = parseInt(myGetStyle(oDiv , 'width'));

                // 也可以通过标签占位,获取标签的宽度高度占位
                // offsetHeight   offsetWidth
                // 直接获取数据数值,没有px单位的
                var h = oDiv.offsetHeight;
                var w = oDiv.offsetWidth;

                console.log(h,w);


                // 因为有页面滚动的问题
                // 使用:clientX   和   clientY
                // div中心与鼠标位置重合,需要再减去div宽度高度的一半
                var top = e.clientY - h/2;
                var left = e.clientX - w/2;

                // 设定为 div 的定位数据 , 并且拼接px单位
                oDiv.style.top = top + 'px';
                oDiv.style.left = left + 'px';
            })
        </script>
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    关于CTeX的几个大坑
    latex与word之间的各种转化方法
    事件的三种绑定方式
    实例操作JSONP原理
    Content Security Policy 入门教程
    video.js
    Javascript面向对象类文章目录
    javaScript的原型继承与多态性
    javaScript的变量
    document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)
  • 原文地址:https://www.cnblogs.com/ht955/p/14083738.html
Copyright © 2020-2023  润新知