javascript - 滚动到视口(viewport)的中心

标签 javascript jquery scroll center scrollto

我想通过单击将 div 居中。因此,如果我单击 div,我希望它滚动到浏览器视口(viewport)的中心。我不想像我看到的指南和示例那样使用 anchor 。我怎样才能做到这一点?

最佳答案

在某种程度上,您必须识别可点击的元素。我构建了一个示例,它为此使用了 class 属性。

第一步

这是完成工作的脚本:

$('html,body').animate({
    scrollTop: $(this).offset().top - ( $(window).height() - $(this).outerHeight(true) ) / 2
}, 200);

您尝试的是将容器滚动到页面顶部。您还必须计算并减去容器高度和视口(viewport)高度之间的差值。将其除以二(因为您希望在顶部和底部有相同的空间并且您已准备就绪。

第二步

然后将点击处理程序添加到所有元素:

$(document).ready(function () {
    $('.image').click( function() {
        $('html,body').animate({ scrollTop: $(this).offset().top - ( $(window).height() - $(this).outerHeight(true) ) / 2  }, 200);
    });
});

第三步

设置一些 HTML/CSS:

<style>

    div.image {

        border:     1px solid red;
        height:     500px;
        width:      500px;
    }

</style>

<div class="image">1</div>
<div class="image">2</div>
<div class="image">3</div>
<div class="image">4</div>
<div class="image">5</div>

大功告成。

查看演示

自己试试http://jsfiddle.net/insertusernamehere/3T9Py/

关于javascript - 滚动到视口(viewport)的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529070/

相关文章:

javascript - 这怎么可能?访问对象变量

javascript - 这个错误 "Uncaught TypeError: Cannot read property ' style' of undefined” 是什么意思?

javascript - 向下滚动时图像向上移动

jquery - jScrollPane 向下拖动列表项时向下滚动

Python:在文本框中使用鼠标滚轮滚动,而鼠标光标不在文本框中(tkinter)

javascript - *ng如果模板中未检测到更改

javascript - 如何禁用带有定时循环的按钮?

javascript - 将 UTC 日期时间转换为本地日期时间

jquery - 我可以缩短这个 jQuery 吗?

javascript - 流体布局在 Internet Explorer 7 和 8 中不起作用