我有这个input
元素:
<input type="text" class="textfield" value="" id="subject" name="subject">
然后我有一些其他元素,如其他文本输入,textareas 等。
当用户使用#subject
单击该input
时,页面应滚动到页面的最后一个元素并带有一个漂亮的动画。它应该是一个滚动到底部而不是顶部。
页面的最后一项是带#submit
的submit
按钮:
<input type="submit" class="submit" id="submit" name="submit" value="Ok, Done.">
动画不应该太快,应该是流畅的。
我正在运行最新的 jQuery 版本。我更喜欢不安装任何插件,而是使用默认的 jQuery 功能来实现这一点。
假设您有一个带有 id button
,请尝试以下示例:
$("#button").click(function() {
$([document.documentElement, document.body]).animate({
scrollTop: $("#elementtoScrollToID").offset().top
}, 2000);
});
我从文章Smoothly 滚动到没有 jQuery 插件的元素的代码。我在下面的例子中对它进行了测试。
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>
$(document).ready(function (){
$("#click").click(function (){
$('html, body').animate({
scrollTop: $("#div1").offset().top
}, 2000);
});
});
</script>
<div id="div1" style="height: 1000px; width 100px">
Test
</div>
<br/>
<div id="div2" style="height: 1000px; width 100px">
Test 2
</div>
<button id="click">Click me</button>
</html>
jQuery .scrollTo(): View - Demo,API,Source
我编写了这个轻量级插件,使页面 / 元素滚动更加容易。您可以灵活地传入目标元素或指定值。也许这可能是 jQuery 下一次正式发布的一部分,你怎么看?
示例用法:
$('body').scrollTo('#target'); // Scroll screen to target element
$('body').scrollTo(500); // Scroll screen 500 pixels down
$('#scrollable').scrollTo(100); // Scroll individual element 100 pixels down
选项:
scrollTarget :表示所需滚动位置的元素,字符串或数字。
offsetTop :一个数字,用于定义滚动目标上方的附加间距。
duration :确定动画运行时间的字符串或数字。
easing :一个字符串,指示要用于转换的缓动函数。
complete :动画完成后调用的函数。
如果你对平滑滚动效果不太感兴趣并且只想滚动到特定元素,那么你不需要一些 jQuery 函数。 Javascript 已涵盖您的案例:
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollIntoView
所以你需要做的就是: $("selector").get(0).scrollIntoView();
.get(0)
是因为我们想要检索 JavaScript 的 DOM 元素而不是 JQuery 的 DOM 元素。