鼠标事件、UI事件简易即可懂

本文介绍了HTML中的鼠标事件,包括单击、双击、右键菜单等,并通过示例展示了如何使用JavaScript实现鼠标拖拽图片的效果。同时,讲解了UI事件,如页面加载、窗口大小变化和滚动事件,并提供了回到顶部的小火箭动画效果的实现代码。这些交互技术在网页动态效果和用户体验中起着关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鼠标事件 

一、事件类型

onclick(单击)、ondblclick(双击)、oncontextmenu(右键菜单)、onmouseover(移入)、onmouseout(移出)、onmouseenter(移入)、onmouseleave(移出)、onmousedown(按下)、onmouseup(抬起)、onmousemove(移动)

二、坐标位置

1.screenX在屏幕中的X坐标

screenY在屏幕中的Y坐标

2.相对于body

  (1)clientX事件发生时鼠标指针在视口中的水平坐标(不包含滚动距离)

(2clientY在视口中的垂直坐标

案例:鼠标拖拽图片实现随意移动

拖拽-CSDN直播

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>拖拽</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        .drag {
            width: 200px;
            height: 200px;
            background-color: tomato;
            position: absolute;
            background-image: url(https://img2.baidu.com/it/u=692058912,2585748925&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=889);
            background-size: cover;
            background-position: center center;
        }
    </style>
    </title>
</head>

<body>
    <div class="drag"></div>
</body>
<script>
    var drag = document.querySelector(".drag");
    // 鼠标按下事件,获取起点位置信息
    drag.onmousedown = function (e1) {
        var x1 = e1.clientX;
        var y1 = e1.clientY;
        var l1 = this.offsetLeft;
        var t1 = this.offsetTop;
        // 鼠标移动事件,计算差值,drag重新定位
        window.onmousemove = function (e2) {
            var x2 = e2.clientX;
            var y2 = e2.clientY;
            var l2 = l1 + (x2 - x1);
            var t2 = t1 + (y2 - y1);
            // 边界处理
            l2 = l2 < 0 ? 0 : (l2 > window.innerWidth - drag.offsetWidth ? window.innerWidth - drag.offsetWidth : l2);
            drag.style.left = l2 + 'px';
            drag.style.top = t2 + 'px';
        }
    }
    // 当鼠标抬起时,去掉mousemove事件
    drag.onmouseup = function () {
        window.onmousemove = null;
    }
</script>

</html>

UI事件

1、load 当页面完全加载后再window上触发,图片也可以触发load事件

2、resize当窗口大小变化时再window上触发

3、scroll当用户滚动带滚动条的元素的内容时,在该元素上触发

案例:实现类小火箭回到顶部效果

说明:在鼠标向下移动50像素时小火箭才出现,之后再点击小火箭动画效果回到顶部

效果图展示:回到顶部-CSDN直播

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>回到顶部</title>
    <style>
        .nr {
            width: 500px;
            height: 2000px;
            background-color: pink;
        }

        .hj {
            width: 0px;
            height: 0px;
            /* background-color:red; */
            border-right: 20px solid transparent;
            border-left: 20px solid transparent;
            border-top: 20px solid transparent;
            border-bottom: 20px solid brown;
            position: absolute;
            right: 0;
            bottom: 50px;
            position: fixed;
            display: none;
        }
        .hj:hover{
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div class="nr"></div>
    <div class="hj"></div>
</body>
<script>
    var hj = document.querySelector(".hj");
    window.onscroll = function () {
        if (document.documentElement.scrollTop > 50) {
            hj.style.display = "block";
        } else {
            hj.style.display = "none";
        }
    }
    hj.onclick = function () {
        move();
    }
    var timer = null;
    function move() {
        clearInterval(timer);
        var t = 20;
        var s = document.documentElement.scrollTop;
        var v = s / t;
        var count = 0;
        timer = setInterval(function () {
            count++;
            s -= v;
            if (t === count) {
                clearInterval(timer);
                s = 0;
            }
            document.documentElement.scrollTop = s;
        }, 30)

    }
</script>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值