协慌网

登录 贡献 社区

jQuery 滚动到元素

我有这个input元素:

<input type="text" class="textfield" value="" id="subject" name="subject">

然后我有一些其他元素,如其他文本输入,textareas 等。

当用户使用#subject单击该input时,页面应滚动到页面的最后一个元素并带有一个漂亮的动画。它应该是一个滚动到底部而不是顶部。

页面的最后一项是带#submitsubmit按钮:

<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()方法

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 元素。