我正在通过AJAX加载元素.只有向下滚动页面时,其中一些才可见.
有什么方法我可以知道一个元素现在是否在页面的可见部分?
我需要在可滚动区域内检索div的可见高度.我认为自己与jQuery相当不错,但这完全让我失望.
假设我在黑色包装中有一个红色div:

在上图中,jQuery函数将返回248,即div的可见部分.

一旦用户滚过div的顶部,如上图所示,它将报告296.

现在,一旦用户滚过div,它将再次报告248.
显然,我的数字不会像在这个演示中那样一致和清晰,或者我只是对这些数字进行硬编码.
我有一点理论:
看起来很简单,但我无法绕过它.明天早上我会再接受一次破解; 我只想你们中的一些天才可能会有所帮助.
谢谢!
更新:我自己想出来,但看起来下面的答案之一更优雅,所以我将使用它.对于好奇,这是我想出的:
$(document).ready(function() {
var windowHeight = $(window).height();
var overviewHeight = $("#overview").height();
var overviewStaticTop = $("#overview").offset().top;
var overviewScrollTop = overviewStaticTop - $(window).scrollTop();
var overviewStaticBottom = overviewStaticTop + $("#overview").height();
var overviewScrollBottom = windowHeight - (overviewStaticBottom - $(window).scrollTop());
var visibleArea;
if ((overviewHeight + overviewScrollTop) < windowHeight) {
// alert("bottom is showing!");
visibleArea = windowHeight - overviewScrollBottom;
// alert(visibleArea);
} else {
if (overviewScrollTop < 0) { …Run Code Online (Sandbox Code Playgroud) 我有这种情况需要将元素滚动到视口中.问题是我不知道哪个元素是可滚动的.例如,在Portrait中,body是可滚动的,而在Landscape中它是另一个元素(并且有更多情况可以改变可滚动元素)
现在的问题是,给定一个需要滚动到视口中的元素,找到第一个可滚动父级的最佳方法是什么?
我在这里设置了一个演示.使用按钮,您可以在两种不同的情况之间切换
<div class="outer">
<div class="inner">
<div class="content">
...
<span>Scroll me into view</span>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
身体是可滚动的或 .outer
有什么建议 ?
我需要页面滚动才能看到元素.
我试过的选项:
jQuery scrollTo:问题是页面滚动使元素位于顶部(或者至少它试图这样做,就像它的工作原理一样:<a name="xyz">/ <a href="#xyz">).我想要的是最小滚动量,以便整个元素可见(并且,如果元素太高,就像那里的锚一样工作).
scrollIntoView:太糟糕了,我想让它顺利滚动(比如$.scrollTo($('#id1'), 'fast');).此外,它似乎也没有做我想要的.
我似乎无法找到如何实现这一目标的答案,但这是我多次见过的一个功能.基本上我正在回显列表,我想创建使用箭头键/输入突出显示和选择这些项目的功能.有人可以帮助我了解如何实现这一目标吗?我知道如何使用密钥代码(当然),而不是如何将其转换为功能代码以选择列表中的项目...
我想也许我必须有一些隐藏的单选按钮来将其标记为选中或不...但即使这样我也不知道如何从一个单选按钮跳到另一个上下列表.所以如果有人能帮我一把,我真的很感激.谢谢.
我在iOS 10.3.1中注意到,在使用safari并激活虚拟键盘时,您可以一直向上滚动页面并在html元素和虚拟键盘之间留下空白区域(与主体颜色相同).
您可以看到蓝色区域是检查员认为的html元素,并且在虚拟键盘和html之间存在白色间隙(如果我将体背景设置为黑色则为黑色).
请注意,此间隙不会自动显示.键盘出现时必须向上滚动.我注意到了这一点,因为我使用javascript向上滚动来修复中文9键盘键盘的错误(它将覆盖屏幕的底部,恰好是textarea).
我有一长串嵌套的div.我在查询字符串上传递一个特定元素的ID(实际上是一个段落元素)并打开它的div和父onload.但是,列表太长,有时打开的元素隐藏在窗口底部下方.
如何自动滚动用户的浏览器窗口以使显示的元素位于屏幕顶部?
你可能不需要这个,但是为了记录...我的列表看起来像这样:
<div id="div1">
<p id="1"></p>
<div>stuff</div>
<p id="2"></p>
<div>stuff</div>
<p id="3"></p>
<div>stuff</div>
</div>
...
<div id="divN">
<p id="997"></p>
<div>stuff</div>
<p id="998"></p>
<div>stuff</div>
<p id="999"></p>
<div>stuff</div>
</div>
Run Code Online (Sandbox Code Playgroud) javascript ×6
jquery ×5
html ×3
arrow-keys ×1
css ×1
css3 ×1
height ×1
html5 ×1
ios ×1
navigation ×1
scroll ×1
visible ×1