JavaScript 如何在不同的浏览器中配置鼠标滚轮速度

JavaScript 如何在不同的浏览器中配置鼠标滚轮速度

鼠标滚轮的滚动速度因为不同的web浏览器的选择而有所不同,即使更改滚动速度的DOM事件和方法也不相同。为了提供网页上的缩放和动画效果,通常需要配置鼠标速度。可以通过归一化鼠标滚轮移动的距离来控制滚轮的速度。有多种技术可用于在不同的web浏览器中更改鼠标滚轮的速度。

对于IE、Safari和Chrome

鼠标滚轮事件在鼠标滚轮或类似设备操作时触发。下面的函数可以用来控制鼠标滚轮的速度。规范化的距离可以在Web API的函数(例如 animate、translate )中使用,以提供不同的变换和动画效果。

示例:

JavaScript代码

var wheelDistance = function(evt) {
    // wheelDelta indicates how
    // Far the wheel is turned
    var w = evt.wheelDelta;
         
    // Returning normalized value
    return w / 120;
}
 
// Adding event listener for some element
somEl.addEventListener("mousewheel", wheelDistance);
JavaScript

Firefox

在Firefox中,当鼠标滚轮操作时,将触发 DOMMouseScroll 事件。与上述情况相同,下面的函数返回的规范化距离可以在 animate 函数中使用,以提供不同的转换。

示例:

var wheelDistance = function(evt) {
    // Detail describes the scroll precisely
    // Positive for downward scroll
    // Negative for upward scroll
    var d = evt.detail;
         
    // Returning normalized value
    return -d / 3;
}
 
// Adding event listener for some element
var speed = somEl.addEventListener(
    "DOMMouseScroll", wheelDistance);
JavaScript

示例: 我们还可以创建一个函数,用于规范不同网络浏览器的鼠标滚轮/触摸板滚动速度,并且同一个函数可以适用于各种浏览器。

function wheelDistance(e) {
if (!e) {
        e = window.event;
}
    let w = e.wheelDelta,
        d = e.detail;
    if (d) {
        return -d / 3; // Firefox;
    }
 
    // IE, Safari, Chrome & other browsers
    return w / 120;
}
 
// Adding event listeners for some element in DOM
someEl.addEventListener("mousewheel", handleScroll);
someEl.addEventListener("DOMMouseScroll", handleScroll);
JavaScript

示例: 让我们来看一个示例,在这个示例中,我们将使用上面规范化的函数来配置网页的滚动速度。在我们的情况下,我们将使用JavaScript库中提供的animate函数。 jQuery 。这个函数可以对一组数字CSS属性(如margin、scrollTop等)进行自定义动画。与我们之前定义的规范化函数一起使用,这个函数会在我们的HTML页面上提供平滑的滚动效果。

<!DOCTYPE html>
<html>
<head>
    <style>
        h1 {
            color: green;
        }
        div {
            text-align: center;
            height: 1200px;
        }
     
    </style>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
</head>
 
<body>
    <div id="my-div">
    <h1>GeeksforGeeks</h1>
    <b>A Computer Science Portal for Geeks</b>
    </div>
 
    <script type="text/javascript">
        window.addEventListener("DOMMouseScroll", handleScroll);
        window.addEventListener("mousewheel", handleScroll);
 
        function wheelDistance(e) {
            console.log(e);
            if (!e) {
                e = window.event;
            }
            var w = e.wheelDelta,
                d = e.detail;
            if (d) {
                return -d / 3; // Firefox;
            }
 
            // IE, Safari, Chrome & other browsers
            return w / 120;
        }
 
        function handleScroll(e) {
            var delta = wheelDistance(e);
            console.log(delta);
            var time = 1000;
            var distance = 200;
 
            ('html, body').stop().animate({
                scrollTop:(window).scrollTop()
                        - (distance * delta)
            }, time);
        }
    </script>
</body>
</html>
HTML

输出:

JavaScript 如何在不同的浏览器中配置鼠标滚轮速度

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册