我正在尝试设置一个巨大的页面,它将慢慢向下滚动到页面的末尾,然后返回到页面的顶部,依此类推......无休止地。 我正在使用函数scrollBy()和setTimeOut(),它们正在完成这项工作,但我只能管理一个循环,然后停止!你可以帮我添加代码,然后无休止地重复向下滚动 - >向上 - >向下 - >向上 - > ...?
这是脚本定义:
<script language="JavaScript">
function scrollAuto()
{
window.scrollBy(0,1)
setTimeout('scrollAuto()',1);
}
if (document.layers || document.all)
{
scrollAuto()
}
</script>
以及我的称呼方式 - &gt;
<body onLoad="scrollAuto();">
感谢您的帮助。
答案 0 :(得分:1)
这就是我想出来的。由于代码段,HTML有点受限,因此您可以修改它以附加到正文,文档或窗口,并根据需要使用“scrollBy”方法。
请记住添加“resize”事件,以便在窗口调整大小时调整滚动限制,否则可能会遇到问题。
希望这有帮助。
var scrollInfo = {
speed: 2,
timeout: 15
};
function initScroll() {
//attachScroll(document.getElementById("scrolling-content"));
attachScroll();
}
function attachScroll(el) {
if (el && el.scrollHeight) {
scrollInfo.element = el;
scrollInfo.max = el.scrollHeight - el.clientHeight;
} else {
var h = window.innerHeight || document.documentElement.clientHeight;
scrollInfo.element = window;
scrollInfo.max = document.documentElement.offsetHeight - h;
}
}
function doScroll() {
if (scrollInfo.element) {
if (scrollInfo.element.scrollTop !== undefined) {
var st = scrollInfo.element.scrollTop - scrollInfo.speed;
if (st > 0 && st < scrollInfo.max) {
scrollInfo.element.scrollTop = st;
} else {
scrollInfo.speed *= -1;
}
} else if (scrollInfo.element.scrollBy) {
var st;
if (scrollInfo.element.pageYOffset !== undefined) {
st = scrollInfo.element.pageYOffset;
} else if (scrollInfo.element.scrollY !== undefined) {
st = scrollInfo.element.scrollY;
} else {
st = document.documentElement.scrollTop;
}
st += scrollInfo.speed;
if (st > 0 && st < scrollInfo.max) {
scrollInfo.element.scrollBy(0, scrollInfo.speed);
} else {
scrollInfo.speed *= -1;
}
}
}
};
function stopScroll() {
window.clearInterval(scrollInfo.interval);
}
window.addEventListener("load", initScroll, false);
window.addEventListener("resize", initScroll, false);
scrollInfo.interval = window.setInterval(doScroll, scrollInfo.timeout);
<div id="scrolling-content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. <b>Lorem ipsum dolor sit amet, consectetur adipiscing elit</b>.
Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla.</p>
<p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis.
Sed convallis tristique sem. <b>Vestibulum lacinia arcu eget nulla</b>. Proin ut ligula vel nunc egestas porttitor. <b>Curabitur tortor</b>. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet.</p>
<p>Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. <i>Curabitur tortor</i>.
Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices.</p>
<p>Suspendisse in justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus
et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et,
augue. <i>Mauris ipsum</i>. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim.</p>
<p>Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. <i>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos</i>. Cras metus. Sed aliquet risus
a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. Aenean laoreet. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede.
Ut orci risus, accumsan porttitor, cursus quis, aliquet eget, justo.</p>
<p>Sed pretium blandit orci. <i>Sed non quam</i>. Ut eu diam at pede suscipit sodales. Aenean lectus elit, fermentum non, convallis id, sagittis at, neque. Nullam mauris orci, aliquet et, iaculis et, viverra vitae, ligula. Nulla ut felis in purus aliquam
imperdiet. Maecenas aliquet mollis lectus. <i>Integer lacinia sollicitudin massa</i>. Vivamus consectetuer risus et tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. <b>Aenean lectus elit, fermentum non, convallis id, sagittis at, neque</b>.
Sed cursus ante dapibus diam.</p>
<p>Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam.</p>
<p>In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. <i>Mauris massa</i>. Fusce ac turpis quis ligula lacinia aliquet.
Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non
tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi.</p>
<p>Ut fringilla. <i>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos</i>. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. <i>Fusce ac turpis quis ligula lacinia aliquet</i>.
Etiam ultrices. <b>Nulla facilisi</b>. Suspendisse in justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante
ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum.</p>
<p>Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. <i>Mauris ipsum</i>. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar
ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante.</p>
</div>
编辑:已更新以接受元素并在未提供的情况下回退到窗口。
注意:如果需要浏览器兼容旧版本的IE,您可能需要找到其他方法来计算窗口的innerHeight和窗口的滚动位置。
Find the exact height and width of the viewport in a cross-browser way (no Prototype/jQuery)
Cross-browser method for detecting the scrollTop of the browser window