zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    DataGridView编辑后立即更新到数据库的两种方法
    Azure 意外重启, 丢失sql server master表和 filezilla
    欧洲美食精选-德国篇
    Azure 负载均衡和可用性集
    windows Azure 域名绑定
    Azure billing 分析(2)
    Azure billing 分析
    试用windows Azure
    Excel公式无法重算,暂无法解决
    iphone 语音备忘录 同步问题
  • 原文地址:https://www.cnblogs.com/jianjie/p/12178173.html
Copyright © 2011-2022 走看看