滚动页面到 div

Posted

技术标签:

【中文标题】滚动页面到 div【英文标题】:scroll page to div 【发布时间】:2016-03-30 08:54:03 【问题描述】:

我需要滚动到 div,但滚动后我不需要 div 位于页面顶部

我需要它在页面中我如何做到这一点 页面的中心

我看到许多问题使滚动正确,但到页面顶部我需要它滚动但使 div 位于页面的 center

我已经尝试过了,但是这会将它滚动到页面顶部

$('html,body').animate(
    scrollTop: $("#"+div).offset().top,
'slow');

谢谢

How to scroll to specific item using jQuery? 滚动到 div 但使其位于页面顶部而不是中心

【问题讨论】:

我不认为它是重复的。他知道如何滚动到一个项目,他想修改确切的滚动量,以便项目位于窗口的中心(“滚动到视图”)而不是窗口的顶部(“滚动到顶部”)跨度> 正是我需要它将 div 滚动到页面中心而不是顶部 那你需要加上一半的窗口高度,减去一半的div高度。 【参考方案1】:

为了使 div 在滚动后在窗口中居中,您需要:

    查询浏览器的窗口高度(这个可行) 查询 div 的高度(这是可行的,但需要小心:高度并不总是准确计算的) 从第 1 行减去第 2 行,然后除以 2 将第 3 行的结果添加到您的 top 值中

注意:当你的 div 比浏览器窗口高时,它仍然会居中,但 div 的顶部会离开屏幕!

【讨论】:

我认为这在逻辑上是正确的 :) 感谢您的时间我的朋友 实际上在逻辑上是完美的。刚刚看到我们发布了相同的答案。 +1。英雄所见略同。 =] 5 小时与 jQuery UI 的搏斗让我筋疲力尽,不想编写任何 代码 来做到这一点。【参考方案2】:

这是一个以div2为中心的示例:https://jsfiddle.net/2mb44kfa/

HTML:

<div id="div1">
</div>
<div id="div2">
</div>
<div id="div3">
</div>

CSS:

#div1,
#div3 
    height: 1000px;


#div2 
    height: 100px;
    background: red;

JS:

var winHeight = $(window).height();
var divHeight = $("#div2").height();
var height = (divHeight - winHeight) / 2
$('html, body').animate(
    
        scrollTop: ($("#div2").offset().top + height) + 'px'
    , 'slow'
);

【讨论】:

以上是关于滚动页面到 div的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript实现页面滚动到div区域div以动画方式出现

通过平滑滚动重定向到不同页面上的 div?

JavaScript 将长页面滚动到 DIV

Ajax 调用 div 替换并滚动到页面顶部

动态页面的操作(滚动屏幕到指定元素位置)和DIV滚动条滚动

如何判断滚动条滚到页面底部并执行事件