自动滚动到页面的底部
考虑一下我有一个问题清单。 当我点击第一个问题时,它会自动将我带到页面的底部。
事实上,我知道这可以使用jQuery来完成。
那么,你能给我提供一些文档或者一些链接,我可以find这个问题的答案吗?
编辑:需要滚动到页面底部的特定HTML 元素
jQuery是没有必要的。 我从谷歌search得到的最重要的结果给了我这个答案:
window.scrollTo(0,document.body.scrollHeight);
如果您有嵌套的元素,文档可能不会滚动。 在这种情况下,您需要定位滚动并使用滚动高度的元素。
window.scrollTo(0,document.querySelector(".scrollingContainer").scrollHeight);
你可以把它绑定到你的问题的onclick
事件(即<div onclick="ScrollToBottom()" ...
)。
一些额外的来源,你可以看看:
如果您想将整个页面滚动到底部:
document.body.scrollTop = document.body.scrollHeight;
请参阅JSFiddle上的示例
如果你想滚动一个元素到底部:
function gotoBottom(id){ var element = document.getElementById(id); element.scrollTop = element.scrollHeight - element.clientHeight; }
这就是它的工作原理:
参考: scrollTop , scrollHeight , clientHeight
香草JS执行:
element.scrollIntoView(false);
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollIntoView
你可以在需要调用的地方使用这个函数:
function scroll_to(div){ if (div.scrollTop < div.scrollHeight - div.clientHeight) div.scrollTop += 10; // move down }
jquery.com:滚动到
你也可以用animation来做到这一点,它非常简单
$('html, body').animate({ scrollTop: $('footer').offset().top //scrollTop: $('#your-id').offset().top //scrollTop: $('.your-class').offset().top }, 'slow');
希望有所帮助,谢谢
下面应该是跨浏览器的解决scheme。 已经在Chrome,Firefox,Safari和IE11上进行了testing
window.scrollTo(0, document.body.scrollHeight || document.documentElement.scrollHeight);
window.scrollTo(0,document.body.scrollHeight); 不适用于Firefox,至less适用于Firefox 37.0.2
你可以使用这个以animation格式下载页面。
$('html,body').animate({scrollTop: document.body.scrollHeight},"fast");
有时候,页面会滚动到buttom(例如在社交networking中),向下滚动到页面的最后(我最终使用这个脚本)我使用这个脚本:
var scrollInterval = setInterval(function() { document.body.scrollTop = document.body.scrollHeight; }, 50);
如果你在浏览器的JavaScript控制台,它可能是有用的,能够停止滚动,所以添加:
var stopScroll = function() { clearInterval(scrollInterval); };
然后使用stopScroll();
。
如果您需要滚动到特定元素,请使用:
var element = document.querySelector(".element-selector"); element.scrollIntoView();
或自动滚动到特定元素(或停止页面滚动间隔)的通用脚本:
var notChangedStepsCount = 0; var scrollInterval = setInterval(function() { var element = document.querySelector(".element-selector"); if (element) { // element found clearInterval(scrollInterval); element.scrollIntoView(); } else if((document.body.scrollTop + window.innerHeight) != document.body.scrollHeight) { // no element -> scrolling notChangedStepsCount = 0; document.body.scrollTop = document.body.scrollHeight; } else if (notChangedStepsCount > 20) { // no more space to scroll clearInterval(scrollInterval); } else { // waiting for possible extension (autoload) of the page notChangedStepsCount++; } }, 50);
你可以试试Gentle Anchors一个不错的javascript插件。
例:
function SomeFunction() { // your code // Pass an id attribute to scroll to. The # is required Gentle_Anchors.Setup('#destination'); // maybe some more code }
兼容性testing:
- Mac Firefox,Safari,Opera
- Windows Firefox,Opera,Safari,Internet Explorer 5.55以上
- Linux未经testing,但至less应该与Firefox的罚款
这是我的解决scheme:
//**** scroll to bottom if at bottom function scrollbottom() { if (typeof(scr1)!='undefined') clearTimeout(scr1) var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; var scrollHeight = (document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight; if((scrollTop + window.innerHeight) >= scrollHeight-50) window.scrollTo(0,scrollHeight+50) scr1=setTimeout(function(){scrollbottom()},200) } scr1=setTimeout(function(){scrollbottom()},200)
晚会,但这里有一些简单的JavaScript的代码来滚动任何元素的底部:
function scrollToBottom(e) { e.scrollTop = e.scrollHeight - e.getBoundingClientRect().height; }
你可以附加任何id
到链接元素的引用属性href
:
<a href="#myLink" id="myLink"> Click me </a>
在上面的例子中,当用户点击Click me
页面底部的Click me
,导航导航到Click me
自己。
要在Selenium中向下滚动,请使用以下代码:
直到底部下拉,滚动到页面的高度。 使用下面的JavaScript代码,在JavaScript和React中都可以正常工作。
JavascriptExecutor jse = (JavascriptExecutor) driver; // (driver is your browser webdriver object) jse.executeScript("window.scrollBy(0,document.body.scrollHeight || document.documentElement.scrollHeight)", "");