用户手动滚动时突出显示锚点链接?

时间:2013-12-31 22:45:11

标签: javascript jquery

我为这篇长篇大论道歉。我希望包含一些可能有帮助的内容。

我有一个单页网站,其中包含几个垂直堆叠的div。我正在使用浮动导航栏和softscroll.js,以便在点击时将锚链接移动到div。

我是一名前端设计师,但通过这个网站以及数小时的试用/错误和谷歌搜索,我已经能够使所有元素都正常工作。 (窗口调整大小时自动调整div高度,突出显示单击的锚点链接,滚动等。)

我已将其设置为单击锚点链接将其类更改为“活动”。这非常有效。但是如果用户也手动滚动到div,我想触发相同的事情。

我已经查看过使用in this post的代码了,因为我已经看过几次了。但它取代了我已经开始工作的一些代码,但仍然没有突出显示。

以下是我用于活动锚点的代码:

// JS for highlight selected button
$(function() {
    $("a").click(function() {
      // remove classes from all
      $("a").removeClass("active");
      // add class to the one we clicked
      $(this).addClass("active");
   });
});

我正在使用这个根据窗口大小调整div的大小。不确定它是否相关,但在这里:

// JS for Div Height Auto Resize 
$(document).ready(function(){
  resizeDiv();
});

window.onresize = function(event) {
  resizeDiv();
}

function resizeDiv() {
  vpw = $(window).width();
  vph = $(window).height();
  $('.layoutblock').css({'height': vph + 'px'});
}

这是菜单HTML:

<div id="navigation">
<ul>
<li><a href="#composition" ><img src="images/icons/compicon.png" alt="composition" width="32" height="36" border="0" align="middle" />Composition</a></li>
<li><a href="#creative"><img src="images/icons/designicon.png" alt="Large Format" width="36" height="33" border="0" align="middle" /> Creative</a></li>
[...]
</ul>
</div>

...和菜单CSS:

  #navigation {
    background-color: #F60;
    position: fixed;
    height: 100%;
    width: 60px;
     -moz-transition:width .5s;
    -webkit-transition:width .5s;
    -o-transition:width .5s;
    transition:width .5s;
    overflow: hidden;
    left: 0px;
    top: 0px;
    z-index: 99;
    padding-top: 30px;
    margin-left: 0px;
}

#navigation:hover {
    margin-left: 0px;
    width: 190px;
}

#navigation li {
    list-style: none;
    margin-left: -40px;

}

#navigation img {
    padding-left: 5px;
    padding-right: 20px;
}
#navigation li a {
    font-family: "Proxima N W01 Smbd", Arial, Helvetica;
    font-size: 14px;
    display: block;
    color: white;
    font-weight:bold;
    text-decoration: none;
    text-transform:uppercase;
    line-height:26px;
    padding-left:5px;
    padding-right: 5px;
    padding-top: 10px;
    height: 50px;
    white-space: nowrap;
}

a.active{
    background-color: #333;
}

最后,这是测试页面的URL:[为安全起见,现在该网站已启动]

2 个答案:

答案 0 :(得分:6)

嗯,我在这里找到了答案:Change Active Menu Item on Page Scroll?这导致了一个像魅力一样的小提琴。

我最终使用代码来监视锚标记并根据这些标记更改菜单。它甚至包括软滚动和点击高亮,所以我能够摆脱我正在使用的其他片段。

同样重要的是要注意:即使它在小提琴中起作用,我也有一段时间让它在我的网站上工作。事实证明我需要将片段放在身体的末端,以便在注册锚点之前加载所有内容。如果其他人遇到同样的问题,请给我一个提示。

答案 1 :(得分:0)

您可以使用Jquery的on方法并监听scroll事件。