我有2个功能相同的网站。它可以在其中一个网站上使用,而不能在另一个网站上使用。
script.js
:
function scrollToTop(){
var timerHandle = setInterval(function() {
if (document.body.scrollTop != 0 || document.documentElement.scrollTop != 0)
window.scrollBy(0,-50); else clearInterval(timerHandle); },10);
}
HTML
<ul class="footer-navigation">
<li><a class="back" id="backtoTop" onclick="scrollToTop();return false;"href="#">↑Back to Top</a></li>
<li><a class="home" href="#home">Home</a></li>
<li><a class="about" href="#about">About</a></li>
<li><a class="contact" href="#contact">Contact</a></li>
</ul>
它没有遇到任何错误,但似乎是在“计数”。当我console.log
出现时,控制台中已记录的counting
旁边有一个数字,但是功能永远不会执行。
谢谢
答案 0 :(得分:1)
我要说的是,您不应通过setInterval
进行滚动,而应通过requestAnimationFrame
进行滚动,以避免滚动时出现混乱。一个简单的解决方案就是使用CSS来平滑滚动。但是,这会影响所有滚动。
function scrollToTop(){
window.scrollTo(0, 0);
}
html {
scroll-behavior: smooth;
}
<div style="height: 150vh">
scroll down
</div>
<ul class="footer-navigation">
<li><a class="back" id="backtoTop" onclick="scrollToTop()"href="#">↑Back to Top</a></li>
<li><a class="home" href="#home">Home</a></li>
<li><a class="about" href="#about">About</a></li>
<li><a class="contact" href="#contact">Contact</a></li>
</ul>
有关请求动画帧的更多信息:
答案 1 :(得分:1)
为了完成前面的回答,我们可以在 CSS 中使用以下代码,以免忘记辅助功能;
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
}
确实,有些人拥有 disorders of the vestibular systems 并且已将浏览器配置为减少动画和动作
答案 2 :(得分:0)
尝试一下:
function scrollToTop(){
window.scrollTo({top: 0, behavior: 'smooth'});
}
<div style="height: 150vh">
scroll down
</div>
<ul class="footer-navigation">
<li><a class="back" id="backtoTop" onclick="scrollToTop();return false;"href="#">↑Back to Top</a></li>
<li><a class="home" href="#home">Home</a></li>
<li><a class="about" href="#about">About</a></li>
<li><a class="contact" href="#contact">Contact</a></li>
</ul>
答案 3 :(得分:0)
(function($){
'use strcit';
$.ScrollUpToTop = function(options){
// Default options
options = $.extend({}, options);
// Variables
var $btnScroll = $("<button id=\"ScrollUpToTop\">^</button>").hide();
var $body = $(document.body);
// insert scroll up to top button
$($body).append($btnScroll);
// attach click event on button
$($btnScroll).click(function(e){
e.preventDefault();
$($body).animate(
{scrollTop:0},
800
);
});
$(window).scroll(function(){
if( $(window).scrollTop() > 0) {
$($btnScroll).fadeIn();
} else {
$($btnScroll).fadeOut();
}
});
};
$.ScrollUpToTop();
})(jQuery);
请点击此链接。
https://www.jqueryscript.net/demo/Super-Simple-Scroll-Up-To-Top-Plugin-with-jQuery/
,您还可以从使用源中获取参考。
查看源:https://www.jqueryscript.net/demo/Super-Simple-Scroll-Up-To-Top-Plugin-with-jQuery/
答案 4 :(得分:-2)
在纯 javascript 中使用这个兄弟,不需要 css : window.scrollTo({ top: 0, behavior: "smooth" })