如何使用 JavaScript 配置跨浏览器的鼠标滚轮速度?
我们可以使用 JavaScript 来改变网页的行为。每个浏览器在用户使用鼠标滚轮滚动时都有一个默认的滚动速度。但是,我们可以使用 JavaScript 来控制它。
我们还可以使用鼠标滚轮来放大和缩小网页。在这种情况下,我们需要降低鼠标滚轮的速度。此外,开发人员有时需要滚动速度限制,例如在网站规则中,以便用户能够正确阅读。
在本教程中,我们将学习控制鼠标滚轮速度的不同方法。
语法
用户可以按照以下语法使用“wheel”事件来使用 JavaScript 配置跨浏览器的鼠标滚轮速度。
content.addEventListener("wheel", (event) => { let deltaY = event.deltaY; content.scrollTop += deltaY / n; });
我们在上述语法中使用 deltaY 属性获取当前的滚动速度。之后,我们将当前的滚动速度除以 n 来更改滚动速度。开发人员应增加 n 的值以降低滚动速度,并减少 n 的值以增加滚动速度。
示例 1(使用 Wheel 事件)
在下面的示例中,我们创建了内容 div 元素并添加了文本内容。在 CSS 中,我们设置了 div 元素的尺寸并设置了 overflow scroll 以使 div 可滚动。
在 JavaScript 中,我们使用 addEventListner() 方法触发“wheel”事件并获取当前的滚动速度。之后,我们将滚动速度降低了 50 倍。在输出中,用户可以尝试滚动 div 元素并观察缓慢的滚动速度。
<html> <head> <style> #content { height: 300px; width: 300px; overflow-y: scroll; padding: 10px; font-size: 20px; font-family: Arial, sans-serif; background-color: pink; } </style> </head> <body> <h3> Using the <i> wheel event listener </i> to change the mouse wheel scroll speed </h3> <div id = "content"> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> <h2> Scroll this div. </h2> </div> <script> const content = document.getElementById("content"); content.addEventListener("wheel", (event) => { event.preventDefault(); // getting the scrolling speed. let deltaY = event.deltaY; // decreasing the scrolling speed by 50 times let speed = deltaY / 50; // scrolling the content of the div element content.scrollTop += speed; }); </script> </body> </html>
示例 2(为 Chrome 浏览器使用 Mousewheel 事件)
在下面的示例中,我们使用了“mousewheel”事件。当用户在 Chrome 浏览器中使用鼠标滚轮滚动网页时,它会触发“mousewheel”事件。
在这里,我们将当前的滚动速度乘以 0.03 以将滚动速度降低 97%。但是,它与“wheel”事件非常相似。
<html> <head> <style> #content { height: 200px; width: 200px; overflow-y: scroll; padding: 10px; font-size: 60px; font-family: Arial, sans-serif; background-color: aqua; } </style> </head> <body> <h3> Using the <i> mousewheel event listener </i> to change the mouse wheel scroll speed in Chrome browser </h3> <div id = "content"> Scroll This div using the mouse wheel. </div> <script> const content = document.getElementById("content"); content.addEventListener("mousewheel", (event) => { event.preventDefault(); const deltaY = event.deltaY; content.scrollTop += deltaY * 0.03; }); </script> </body> </html>
示例 3(为 Firefox 浏览器使用 DomMouseScroll 事件)
在下面的示例中,我们使用了“DomMouseScroll”事件。Firefox 浏览器只支持它,而不支持其他浏览器,如 Chrome、Opera 等。
我们使用事件的“detail”属性获取当前的滚动速度,并将其乘以 0.5 以将滚动速度降低一半。用户可以在 Firefox 浏览器中打开以下网页,观察 div 元素滚动速度的变化。
<html> <head> <style> #content { height: 200px; width: 200px; overflow-y: scroll; padding: 10px; font-size: 40px; background-color: green; } </style> </head> <body> <h3> Using the <i> DOMMouseScroll event listener </i> to change the mouse wheel scroll speed in Chrome browser </h3> <div id = "content"> Scroll down or up with the mouse wheel inside the div to see the effect. </div> <script> const content = document.getElementById("content"); content.addEventListener("DOMMouseScroll", (event) => { event.preventDefault(); const deltaY = event.detail; content.scrollTop += deltaY * 0.5; }); </script> </body> </html>
示例 4(从网页自定义鼠标滚轮速度)
在下面的示例中,我们允许用户从 Web 浏览器更改鼠标滚轮滚动速度。我们创建了范围滑块,它接收 1 到 50 之间的输入。用户可以更改范围滑块的值。
之后,每当用户滚动 div 元素时,JavaScript 会根据范围滑块中选择的值设置滚动速度。
<html> <head> <style> #content { height: 200px; width: 200px; overflow-y: scroll; padding: 10px; font-size: 20px; font-family: Arial, sans-serif; background-color: aqua; } </style> </head> <body> <h3> Using the <i> wheel event listener </i> to change the mouse wheel scroll speed </h3> <div id = "content"> Git is a distributed version control system used to manage source code and other files. It allows developers to track changes to their codebase over time, collaborate with others, and easily revert to previous versions if necessary. Git is widely used in software development and has become an essential tool for modern programming teams. </div> <!-- adding input range for mouse scroll --> <input type = "range" min = "3" max = "50" value = "20" id = "myRange" /> <script> const content = document.getElementById("content"); content.addEventListener("wheel", (event) => { event.preventDefault(); let value = document.getElementById("myRange").value; let deltaY = event.deltaY; if (deltaY > 0) { deltaY = value; } else if (deltaY < 0) { deltaY = -value; } content.scrollTop += deltaY; }); </script> </body> </html>
用户学习了如何使用 JavaScript 控制跨浏览器的鼠标滚轮滚动速度。本教程使用了三个事件来配置鼠标滚轮速度。第一个事件是“wheel”事件,它与所有浏览器兼容。第二个事件是“mousewheel”,它与除 Firefox 之外的所有浏览器兼容。第三个事件是“DOMMouseScroll”,它仅与 Firefox 兼容。