JavaScript将长页面滚动到DIV
我在一个很长的HTML页面上有一个链接。当我单击它时,希望通过滚动到视图中,在窗口的另一部分上看到一个" div"。
有点像其他语言中的EnsureVisible
。
我已经检查了scrollTop
和scrollTo
,但它们看起来像是红色鲱鱼。
有人可以帮忙吗?
解决方案
回答
为什么不命名锚呢?
回答
<a href="#myAnchorALongWayDownThePage">Click here to scroll</a> <A name='myAnchorALongWayDownThePage"></a>
没有花哨的滚动,但它应该带你到那里。
回答
答案张贴在这里相同的解决方案,问题。
编辑:如果我们想要一个平滑的滚动,而我以前从未见过,那么JQuery的答案非常好。
回答
JQuery Scroll如何查看此示例代码
回答
我们需要的属性是location.hash。例如:
location.hash ='顶部'; //将跳转到命名锚点" top
不使用dojo或者类似的工具包,我不知道如何制作漂亮的滚动动画,但是如果我们只需要它跳到锚点,则location.hash应该可以做到。
回答
(在FF3和Safari 3.1.2上测试)
scrollTop(IIRC)是页面顶部滚动到文档中的位置。 scrollTo滚动页面,以使页面顶部位于我们指定的位置。
我们需要的是一些Javascript操纵的样式。假设我们要在屏幕外显示div并从右侧滚动,则可以将div的left属性设置为页面的宽度,然后每隔几秒钟将其div减小一定的数量,直到到达所需位置为止。
这应该为我们指明正确的方向。
回答
另外:很抱歉,我以为我们希望一个单独的div从某个地方"弹出"(有时像本网站那样),而不要将整个页面移到某个部分。正确使用锚点将达到这种效果。
滚动的困难在于,我们不仅需要滚动页面以显示div,而且还可能需要在任意数量的级别上滚动可滚动的div。
scrollTop属性在任何DOM元素(包括文档正文)上均可用。通过设置它,我们可以控制滚动的深度。我们还可以使用clientHeight和scrollHeight属性来查看需要进行多少滚动(当clientHeight(视口)小于scrollHeight(内容的高度)时可以滚动。
我们还可以使用offsetTop属性来确定元素在容器中的位置。
要从头开始构建真正通用的"滚动到视图"例程,我们需要从要公开的节点开始,确保它在其父级的可见部分,然后对父级重复相同的操作,等等,所有直到到达顶端的方式。
function scrollIntoView(node) { var parent = node.parent; var parentCHeight = parent.clientHeight; var parentSHeight = parent.scrollHeight; if (parentSHeight > parentCHeight) { var nodeHeight = node.clientHeight; var nodeOffset = node.offsetTop; var scrollOffset = nodeOffset + (nodeHeight / 2) - (parentCHeight / 2); parent.scrollTop = scrollOffset; } if (parent.parent) { scrollIntoView(parent); } }
回答
第一步看起来像这样(未经测试的代码,不检查边缘情况):
$('a[href=#target]'). click(function(){ var target = $('a[name=target]'); if (target.length) { var top = target.offset().top; $('html,body').animate({scrollTop: top}, 1000); return false; } });
回答
如果我们不想添加额外的扩展名,则以下代码应与jQuery一起使用。
如果我错了,请纠正我,但我一遍又一遍地阅读问题,但仍然认为Angus McCoteup在问如何将元素设置为位置:固定。
回答
Angus McCoteup,请访问http://www.cssplay.co.uk/layouts/fixed.html,如果我们希望DIV像菜单一样运行,请查看CSS
- 查找要滚动到的元素的位置。
- 滚动到该位置。
对于滚动到DOM元素的一般情况,有一个jQuery插件,但是如果性能是个问题(什么时候不行?),我建议我们手动进行。这涉及两个步骤:
function absoluteOffset(elem) { return elem.offsetParent && elem.offsetTop + absoluteOffset(elem.offsetParent); }
quirksmode很好地解释了前者背后的机制。这是我的首选解决方案:
function scrollToElement(elem) { window.scroll(absoluteOffset(elem)); }
它使用从null到0的转换,这在某些圈子中不是适当的礼节,但我喜欢它:)第二部分使用window.scroll
。因此,其余解决方案是:
回答
瞧!
document.getElementById('youridhere').scrollIntoView();
一个古老的问题,但是如果有人通过谷歌找到这个(就像我一样),又谁不想使用锚或者jQuery;有一个内置的javascript函数可以"跳转"到一个元素;
回答
还有更好的选择;根据quirksmode上的出色兼容性表,所有主流浏览器都支持此功能!
我个人发现上面提到的Josh基于jQuery的答案是我所见过的最好的答案,并且对我的应用程序非常有效……当然,我已经在使用jQuery……我当然不会包括整个jQ库一个目的。
干杯!
编辑:好的...发布此消息后仅几秒钟,我在我的下方看到了另一个答案(不确定是否在编辑后是否仍在我下方),说使用:
document.getElementById('your_element_ID_here')。scrollIntoView();
段落数量不匹配