Scroll to the top of the page using JavaScript/jQuery?
我在页面上有一个
如何使用该函数中的javascript/jquery命令滚动到页面顶部?即使滚动条立即跳到顶部也是可取的。我不是在找一个平滑的滚动。
如果您不需要更改动画,那么您不需要使用任何特殊的插件-我只使用本机的javascript window.scroll to方法-传入0,0将立即将页面滚动到左上角。
1 | window.scrollTo(x-coord, y-coord); |
参数
- X坐标是沿水平轴的像素。
- Y坐标是沿垂直轴的像素。
如果要平滑滚动,请尝试如下操作:
1 2 3 4 | $("a[href='#top']").click(function() { $("html, body").animate({ scrollTop: 0 },"slow"); return false; }); |
这将获取其
尝试在顶部滚动
1 2 3 | $(document).ready(function(){ $(window).scrollTop(0); }); |
这样做不需要jquery。一个标准的HTML标记就足够了…
1 2 3 4 | blah blah blah Click Here To Destroy The World! |
所有这些建议都适用于各种情况。对于那些通过搜索找到这个页面的人,也可以尝试一下。jquery,没有插件,滚动到element。
1 2 3 | $('html, body').animate({ scrollTop: $("#elementID").offset().top }, 2000); |
平滑动画的更好解决方案:
1 2 | // this changes the scrolling behavior to"smooth" window.scrollTo({ top: 0, behavior: 'smooth' }); |
参考:https://developer.mozilla.org/en-us/docs/web/api/window/scrollto示例
平滑滚动,纯javascript:
1 2 3 4 5 6 7 | (function smoothscroll(){ var currentScroll = document.documentElement.scrollTop || document.body.scrollTop; if (currentScroll > 0) { window.requestAnimationFrame(smoothscroll); window.scrollTo (0,currentScroll - (currentScroll/5)); } })(); |
如果要进行平滑滚动,请尝试以下操作:
1 2 3 4 | $("a").click(function() { $("html, body").animate({ scrollTop: 0 },"slow"); return false; }); |
另一个解决方案是javascript window.scrollto方法:
1 | window.scrollTo(x-value, y-value); |
参数:
- x值是沿水平轴的像素。
- Y值是沿垂直轴的像素。
1 2 3 4 | $("a[href='#top']").click(function() { $("html, body").animate({ scrollTop: 0 },"slow"); return false; }); |
在HTML中
1 | go top |
用
1 2 3 4 5 6 7 8 | $('.showPeriodMsgPopup').click(function(){ //window.scrollTo(0, 0); $('html').animate({scrollTop:0}, 'slow');//IE, FF $('body').animate({scrollTop:0}, 'slow');//chrome, don't know if Safari works $('.popupPeriod').fadeIn(1000, function(){ setTimeout(function(){$('.popupPeriod').fadeOut(2000);}, 3000); }); }); |
测试了所有3种浏览器,它都能正常工作我正在使用蓝图CSS这是当客户单击"立即预订"按钮而没有选择租赁期时,慢慢移动到日历所在的顶部,并打开一个指向2个字段的对话框DIV,在3秒钟后,该对话框将淡出。
真的很奇怪:这个问题已经活跃了五年了,现在还没有普通的javascript来解决滚动的动画问题……所以现在开始:
1 2 3 4 5 6 7 8 | var scrollToTop = window.setInterval(function() { var pos = window.pageYOffset; if ( pos > 0 ) { window.scrollTo( 0, pos - 20 ); // how far to scroll on each step } else { window.clearInterval( scrollToTop ); } }, 16); // how fast to scroll (this equals roughly 60 fps) |
如果愿意,可以将其包装在函数中,并通过
注意:这是一个非常基本的解决方案,可能不是最有效的解决方案。这里有一个非常详细的例子:https://github.com/cferdinandi/smooth-scroll
许多用户建议选择HTML和body标签以实现跨浏览器兼容性,例如:
1 | $('html, body').animate({ scrollTop: 0 }, callback); |
不过,如果你指望回调只运行一次,这可能会让你很困惑。它实际上会运行两次,因为您选择了两个元素。
如果这对您来说是个问题,您可以这样做:
1 2 3 4 5 6 7 8 | function scrollToTop(callback) { if ($('html').scrollTop()) { $('html').animate({ scrollTop: 0 }, callback); return; } $('body').animate({ scrollTop: 0 }, callback); } |
这是因为chrome
如果不希望在滚动条已位于顶部的情况下等待动画完成,请尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function scrollToTop(callback) { if ($('html').scrollTop()) { $('html').animate({ scrollTop: 0 }, callback); return; } if ($('body').scrollTop()) { $('body').animate({ scrollTop: 0 }, callback); return; } callback(); } |
1 2 3 4 | $(function(){ var scroll_pos=(0); $('html, body').animate({scrollTop:(scroll_pos)}, '2000'); }); |
编辑:
1 | $('html, body').animate({scrollTop:(scroll_pos)}, 2000); |
老江户一〔6〕能耍花招。
1 | document.location.href="#top"; |
在FF、IE和Chrome中工作正常
试试这个
1 | $(window).scrollTop(100); |
非jquery解决方案/纯javascript:
1 | document.body.scrollTop = document.documentElement.scrollTop = 0; |
1 2 3 4 | $(".scrolltop").click(function() { $("html, body").animate({ scrollTop: 0 },"slow"); return false; }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | .section{ height:400px; } .section1{ background-color: #333; } .section2{ background-color: red; } .section3{ background-color: yellow; } .section4{ background-color: green; } .scrolltop{ position:fixed; right:10px; bottom:10px; color:#fff; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <html> <head> Scroll top demo <script src="https://code.jquery.com/jquery-3.3.1.js"> </head> <body> Scroll top </body> </html> |
这将起作用:
试试这个代码:
1 2 3 | $('html, body').animate({ scrollTop: $("div").offset().top }, time); |
DIV=>DOM元素,用于移动滚动条。
时间=>毫秒,定义滚动的速度。
为什么不使用jquery内置函数scrolltop:
1 2 3 | $('html, body').scrollTop(0);//For scrolling to top $("body").scrollTop($("body")[0].scrollHeight);//For scrolling to bottom |
简短而简单!
只需使用这个脚本就可以直接滚动到顶部。
1 2 3 4 5 | $(document).ready(function(){ $("button").click(function(){ ($('body').scrollTop(0)); }); }); |
你不需要jquery。你只需调用脚本
1 | window.location = '#' |
单击"转到顶部"按钮
样例演示:
输出jsbin.com/fakumo#
附言:当你使用像AngularJS这样的现代库时,不要使用这种方法。这可能会破坏URL哈希邦。
动机
这个简单的解决方案在本地工作,并实现到任何位置的平滑滚动。
它避免使用锚链接(那些带有
在要滚动到的标记上放置一个ID,例如第一节,它回答了这个问题,但是该ID可以放在页面的任何地方。
1 2 3 4 5 | <body> <section id="top"> <!-- your content --> </section> <!-- more content --> |
然后,作为一个按钮,您可以使用一个链接,只需使用这样的代码编辑onclick属性。
1 | Click me |
其中EDOCX1[4]的参数是要在单击后滚动到的标记的ID。
如果你不想平滑滚动,你可以欺骗和停止平滑滚动动画几乎只要你启动它…像这样:
1 2 3 4 5 6 7 8 9 10 | $(document).ready(function() { $("a[href='#top']").click(function() { $("html, body").animate({ scrollTop: 0 },"1"); $('html, body').stop(true, true); //Anything else you want to do in the same action goes here return false; }); }); |
我不知道它是否被推荐/允许,但它起作用了:)
你什么时候用这个?我不确定,但当您想用一次单击来用jquery对一件事情进行动画处理,但不使用动画对另一件事情进行动画处理时?在页面顶部的管理登录面板中打开一张幻灯片,然后立即跳到顶部查看。
您可以简单地使用链接中的目标,例如someid,其中someid是DIV的ID。
或者,您可以使用任何数量的滚动插件,使这个更优雅。
例如http://plugins.jquery.com/project/scrollto。
上述答案在SharePoint 2016中都不起作用。
必须这样做:https://sharepoint.stackexchange.com/questions/195870/
1 2 | var w = document.getElementById("s4-workspace"); w.scrollTop = 0; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function scrolltop() { var offset = 220; var duration = 500; jQuery(window).scroll(function() { if (jQuery(this).scrollTop() > offset) { jQuery('#back-to-top').fadeIn(duration); } else { jQuery('#back-to-top').fadeOut(duration); } }); jQuery('#back-to-top').click(function(event) { event.preventDefault(); jQuery('html, body').animate({scrollTop: 0}, duration); return false; }); } |
您可以尝试像在这个小提琴中那样使用JS http://js fiddle.net/5bnmh/1/
在页脚中添加"转到顶部"按钮:
1 2 3 4 5 6 7 8 | <footer> <hr /> <p> Just some basic footer text. </p> <!-- Go to top Button --> Go Top </footer> |
试试这个
1 2 3 4 5 6 7 8 9 | $(function(){ $('a').click(function(){ var href =$(this).attr("href"); $('body, html').animate({ scrollTop: $(href).offset().top }, 1000) }); }); ? |
激活所有浏览器。祝你好运
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | var process; var delay = 50; //milisecond scroll top var scrollPixel = 20; //pixel U want to change after milisecond //Fix Undefine pageofset when using IE 8 below; function getPapeYOfSet() { var yOfSet = (typeof (window.pageYOffset) ==="number") ? window.pageYOffset : document.documentElement.scrollTop; return yOfSet; } function backToTop() { process = setInterval(function () { var yOfSet = getPapeYOfSet(); if (yOfSet === 0) { clearInterval(process); } else { window.scrollBy(0, -scrollPixel); } }, delay); } |
如果要滚动到任何具有ID的元素,请尝试以下操作:
1 2 3 4 5 6 7 8 9 10 | $('a[href^="#"]').bind('click.smoothscroll',function (e) { e.preventDefault(); var target = this.hash; $target = $(target); $('html, body').stop().animate({ 'scrollTop': $target.offset().top }, 700, 'swing', function () { window.location.hash = target; }); });`` |
当顶部滚动小于限制底部和底部到顶部滚动标题时,标题是粘性的。下面是小提琴的例子。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | var lastScroll = 0; $(document).ready(function($) { $(window).scroll(function(){ setTimeout(function() { var scroll = $(window).scrollTop(); if (scroll > lastScroll) { $("header").removeClass("menu-sticky"); } if (scroll == 0) { $("header").removeClass("menu-sticky"); } else if (scroll < lastScroll - 5) { $("header").addClass("menu-sticky"); } lastScroll = scroll; },0); }); }); |
https://jsfiddle.net/memdumusaib/d52xclm3/
用于滚动到元素,元素位于页面顶部
1 2 3 | WebElement tempElement=driver.findElement(By.cssSelector("input[value='Excel']")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", tempElement); |
试试看,不需要其他插件/框架
1 2 3 4 5 6 7 8 | document.getElementById("jarscroolbtn").addEventListener("click", jarscrollfunction); function jarscrollfunction() { var body = document.body; // For Safari var html = document.documentElement; // Chrome, Firefox, IE and Opera body.scrollTop = 0; html.scrollTop = 0; } |
1 | <button id="jarscroolbtn">Scroll contents</button> |
1 2 3 | html, body { scroll-behavior: smooth; } |
有趣的是,大多数这些对我来说根本不起作用,所以我使用jquery-scrollto.js来实现以下功能:
1 2 3 4 5 6 | wrapper.find(".jumpToTop").click(function() { $('#wrapper').ScrollTo({ duration: 0, offsetTop: -1*$('#container').offset().top }); }); |
它奏效了。