当从其他页面导航时,jquery滚动到命名锚点

时间:2010-06-22 14:12:30

标签: jquery scroll anchor scrollto

我有一个在我网站的所有页面上展开的子菜单。子菜单包含指向父菜单项链接到的一个页面中的命名锚点的链接。我正在使用jquery scrollTO和localScroll成功地使用named-anchors在页面内滚动动画,但是如果我从站点内的不同页面导航到命名锚点,则它不会保留动画滚动或从顶部指定的偏移量。有没有办法做到这一点?

我非常感谢任何反馈!! 塞西莉亚

以下是我正在使用的html示例。我在左侧有一个固定的菜单和一个固定的标题。现在,当您单击子菜单中的锚点链接并使用窗口顶部的活动命名锚点150px停止时,此动画会生成动画,以使其不会在固定标题下方消失。

如果可能的话,我希望在从其他页面导航时让窗口滚动到命名锚点,但最重要的是我必须保留从顶部开始的偏移量150px。现在它从顶部停止0px并在点击另一个页面的锚链接时消失在标题下面。

<head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.scrollTo-min.js"></script>
<script type="text/javascript" src="js/jquery.localscroll-min.js"></script>
<script type="text/javascript" > 
$.localScroll({offset:-150});
</script>
</head>

<body>
<div id="page">
    <div id="header-bg"><!-- fixed header -->
    <div id="header">
    <div id="logo"><a href="/" title="Home" rel="home"><img src="logo.jpg" alt="Home" id="logo-image" /></a></div>
    </div>
    </div> 
<div id="main">

<div id="sidebar-left"><!-- fixed menu -->
<ul class="menu">
<li class="expanded"><a href="/page1" title="Page 1" class="active">Page 1</a><!-- parent -->
        <ul class="menu"><!-- sub-menu linking to named anchors -->
        <li><a href="/page1#anchor1">Anchor-link 1</a></li>
        <li><a href="/page1#anchor2">Anchor-link 2</a></li>
        <li><a href="/page1#anchor3">Anchor-link 3</a></li>
        <li><a href="/page1#anchor4">Anchor-link 4</a></li>
        <li><a href="/page1#anchor5">Anchor-link 5</a></li>
    </ul>
</li>
<li><a href="/page2">Page 2</a></li>
<li><a href="/page3">Page 3</a></li>
<li><a href="/page4">Page 4</a></li>
</ul>  
</div> <!-- /#sidebar-left --> 

<div id="content">
<div class="chapter">
<a name="anchor1" id="anchor1"></a><!-- named-anchor -->
<h3>Sub-heading</h3>
<p>Lots of text</p>
</div>

<div class="chapter">
<a name="anchor2" id="anchor2"></a><!-- named-anchor -->
<h3>Sub-heading</h3>
<p>Lots of text</p>
</div>

<div class="chapter">
<a name="anchor3" id="anchor3"></a><!-- named-anchor -->
<h3>Sub-heading</h3>
<p>Lots of text</p>
</div>

<div class="chapter">
<a name="anchor4" id="anchor4"></a><!-- named-anchor -->
<h3>Sub-heading</h3>
<p>Lots of text</p>
</div>

<div class="chapter">
<a name="anchor5" id="anchor5"></a><!-- named-anchor -->
<h3>Sub-heading</h3>
<p>Lots of text</p>
</div>

</div> <!-- /#content --> 
</div> <!-- /#main --> 
</div> <!-- /#page --></body>

1 个答案:

答案 0 :(得分:-1)

如果你只是在onclick上应用它,它绝对不会保持动画onload。

至于维护指定锚点的实际偏移量,默认情况下应该默认执行此操作。如果您在滚动的标准页面上转到someurl.com#someNamedLink,默认情况下会将您带到该命名锚点的顶部,不需要JS。

现在,在没有看到任何代码的情况下,我们无法确定您是如何实现这一点的。框架,溢出的div?谁知道?

请提供您的示例代码,以便我们确定发生了什么。

乍一看,听起来您希望在页面内保持状态并进行上传。查看jquery.bbq状态控制。它允许您轻松捕获名为href(#someNamedLink)onload并将动画执行到正确的锚点。还为您提供了后退按钮支持的额外好处,因此您可以在整个地方制作动画(我个人觉得这种行为令人讨厌但这是您的特权)