【发布时间】:2020-04-22 12:09:43
【问题描述】:
我在 Firefox 75 中遇到了一个奇怪的行为,代码如下:
HTML:
<html>
<body>
<div>
Lorem ipsum dolor sit amet consectetur adipiscing elit sociis vivamus euismod, netus arcu pulvinar egestas cras commodo fames dui nostra tortor quam, class duis sagittis fusce pellentesque conubia ornare venenatis hac. Quis pretium nulla ad nisi aliquam euismod nunc, consequat fermentum sociis eros felis tempus, tortor a risus dignissim fusce facilisis. Fermentum erat eget libero tellus semper gravida enim rhoncus, placerat natoque mauris sollicitudin class eros tincidunt augue volutpat, penatibus vel interdum nunc cubilia taciti dictumst.
...
(the rest is omitted for brevity)
</div>
<a rel="nofollow" href="#" class="scroll-to-top-link">
Go to top link
</a>
<button class="scroll-to-top-button">
Go to top button
</button>
</body>
</html>
JS:
( function() {
'use strict';
// Feature Test
if ( 'querySelector' in document && 'addEventListener' in window ) {
var goTopBtnLink = document.querySelector( '.scroll-to-top-link' );
var goTopBtnButton = document.querySelector( '.scroll-to-top-button' );
var nativeSmoothScroll = function () {
window.scroll({
top: 0,
left: 0,
behavior: 'smooth'
});
};
goTopBtnLink.addEventListener( 'click', function( e ) {
e.preventDefault();
nativeSmoothScroll();
});
goTopBtnButton.addEventListener( 'click', function( e ) {
nativeSmoothScroll();
});
}
} )();
页面有一个滚动到顶部的链接,底部有一个滚动到顶部的按钮。如果我单击链接,页面会平滑滚动到顶部。当我也单击按钮时,但只是第一次。在随后的时间里,页面滚动得太快,忽略了behavior: 'smooth' 选项。
我已经把整个代码放在了小提琴上:
https://jsfiddle.net/mf4rz8hj/9/
Chrome 未显示此行为。 有什么想法吗?
【问题讨论】:
标签: javascript css scroll dom-events smooth-scrolling