jQuery滚动到元素
我有这个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() {
$('html, body').animate({
scrollTop: $("#elementtoScrollToID").offset().top
}, 2000);
});
我从文章中得到了代码顺利滚动到没有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():查看 - 演示,API,来源
我写了这个轻量级的插件,使页面/元素滚动更容易。 它可以灵活地传递目标元素或指定值。 也许这可能是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:定义滚动目标上方的附加间距的数字。
持续时间:决定动画运行时间的字符串或数字。
easing:一个字符串,指示用于转换的缓动函数。
完成:动画完成后调用的函数。
如果您对平滑滚动效果不太感兴趣,并且只想滚动到特定元素,则不需要使用某种jQuery函数。 Javascript已涵盖您的案例:
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollIntoView
所以你需要做的是: $("selector").get(0).scrollIntoView();
.get(0)
是因为我们想要检索JavaScript的DOM元素而不是JQuery的DOM元素。