JavaScript基础(33)_鼠标滚轮滚动事件、键盘事件

鼠标滚轮滚动事件:onwheel

获取鼠标滚轮滚动的方向:wheelDelta
比如:向上滚动:109 (所有正值都是向上)
          向下滚动:-109(所有负值都是向下)

注意:当滚动滚动时,如果浏览器有滚动条,滚动条会随之滚动。这是浏览器的默认行为,如果不希望发生,则可以使用return false,取消默认行为。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>鼠标滚轮滚动事件</title>
    <style>
        #box1 {
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
    </style>
    <script>
        window.onload = function () {
            var box1 = document.getElementById("box1");
            box1.onwheel = function (event) {
                if (event.wheelDelta > 0) {
                    if (box1.clientHeight >= 100)
                        box1.style.height = box1.clientHeight - 20 + "px";
                    else
                        box1.style.height = 100;
                }
                else {
                    box1.style.height = box1.clientHeight + 20 + "px";
                }
                return false;
            }
        }
    </script>
</head>
<body style="height: 2000px;height: 1000px;">
    <button id="box1">用鼠标滚轮实现变大变小</button>
</body>
</html>

键盘事件

键盘事件一般都会绑定给可以获取到焦点的对象或者是document
onkeydown:某个键盘按键被按下。
onkeyup:某个键盘按键被松开。
注意:
1、对于onkeydown来说如果一直按着某个按键不松手,则事件会一直触发。
2、当onkeydown连续触发时,第一次和第二次之间会间隔稍微长一点,其他的会非常的快。这种设计是为了防止误操作的发生。

如何识别用户按下的按键:
可以通过keyCode来获取按键的编码。通过它可以判断哪个按键被按下。除了keyCode,事件对象中还提供了几个属性:altKey、ctrlKey、shiftKey这三个用来判断alt、ctrl、shift是否按下。 如果按下则返回true,否则返回false。

注意:在文本框中输入内容,属于onkeydown的默认行为,如果在onkeydown中取消默认行为(return false),则用键盘输入的内容,无法出现在文本框中。

案例1:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>键盘事件</title>
    <script>
        window.onload = function(){
            var input = document.getElementsByTagName("input");
            document.onkeydown = function(event){
                event = event || window.event;
                // 不许输入数字
                if(event.keyCode >= 48 && event.keyCode <= 57){
                    return false;
                }
            }
        }
    </script>
</head>
<body>
    <input type="text">
</body>
</html>

案例2:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>键盘移动div</title>
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background-color: aquamarine;
            position: absolute;
        }
    </style>
    <script>
        window.onload = function () {
            var box1 = document.getElementsByClassName("box1")[0];

            document.onkeydown = function (event) {
                switch (event.keyCode) {
                    // 向左
                    case 37:
                        if (box1.offsetLeft >= 18) {
                            box1.style.left = box1.offsetLeft - 10 + "px";
                        }
                        // 碰到左上边界禁止div变大或变小
                        else { box1.style.left = box1.offsetLeft + "px"; }
                        break;
                    // 向上
                    case 38:
                        if (box1.offsetTop >= 18) {
                            box1.style.top = box1.offsetTop - 10 + "px";
                        }
                        // 碰到左上边界禁止div变大或变小
                        else { box1.style.top = box1.offsetTop + "px"; }
                        break;
                    // 向右
                    case 39:
                        box1.style.left = box1.offsetLeft + 10 + "px"; break;
                    // 向下
                    case 40:
                        box1.style.top = box1.offsetTop + 10 + "px"; break;
                }
            }
        }
    </script>
</head>
<body>
    <div class="box1"></div>
</body>
</html>

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值