0175 常用鼠标事件 之 鼠标事件对象、获取鼠标在页面的坐标、跟随鼠标的天使案例

event对象代表事件的状态,跟事件相关的一系列信息的集合。现阶段我们主要是用鼠标事件对象 MouseEvent 和键盘事件对象 KeyboardEvent。

clientX、clientY:相对于可视区的左上角的坐标。
pageX、pageY:相对于整个页面的的左上角的坐标,不管页面高度如何,不管页面如何滚动。【重点,用的多】
screenX、screenY:用得少,了解。


1.4.3 获取鼠标在页面的坐标

    <script>
        // 鼠标事件对象 MouseEvent
        document.addEventListener('click', function(e) {
            // 1. client 鼠标在可视区的x和y坐标
            console.log(e.clientX);
            console.log(e.clientY);
            console.log('---------------------');

            // 2. page 鼠标在页面文档的x和y坐标
            console.log(e.pageX);
            console.log(e.pageY);
            console.log('---------------------');

            // 3. screen 鼠标在电脑屏幕的x和y坐标
            console.log(e.screenX);
            console.log(e.screenY);

        })
    </script>

1.4.4 案例:跟随鼠标的天使

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img {
            position: absolute;
            top: 2px;
        }
    </style>
</head>

<body>
    <img src="images/angel.gif" alt="">
    <script>
        var pic = document.querySelector('img');
        document.addEventListener('mousemove', function(e) {
            // 1. mousemove只要我们鼠标移动1px 就会触发这个事件
            // console.log(1);
            // 2.核心原理: 每次鼠标移动,我们都会获得最新的鼠标坐标, 把这个x和y坐标做为图片的top和left 值就可以移动图片
            var x = e.pageX;
            var y = e.pageY;
            console.log('x坐标是' + x, 'y坐标是' + y);
            //3 . 千万不要忘记给left 和top 添加px 单位
            pic.style.left = x - 50 + 'px';
            pic.style.top = y - 40 + 'px';
        });
        
        
        // 优化:使用clientX、clientY、offsetWidth、offsetTop更好
        var pic = document.querySelector('img');
        document.addEventListener('mousemove', function(e) {
            let [x, y] = [e.clientX, e.clientY]
            console.log(x, y)
            pic.style.left = x - pic.offsetWidth / 2 + 'px'
            pic.style.top = y - pic.offsetTop / 2 + 'px'
        });
    </script>
</body>

</html>
原文地址:https://www.cnblogs.com/jianjie/p/12178173.html