一页网站-导航突出当前部分

One Page Website - Navigation Highlight Current Section

本文关键字:前部 网站 导航 一页      更新时间:2023-09-26

我在整合一个突出显示网站上当前部分的导航栏时遇到了问题。我只希望当前查看的部分在导航栏中显示为粗体。

代码:

  <nav id="nav-wrap">
    <ul>
      <li class="current"><a class="page" href="#home">Home</a></li>
      <li><a class="page" href="#about">About</a></li>
      <li><a class="page" href="#portfolio">Portfolio</a></li>
      <li><a class="page" href="#scrapbook">Scrapbook</a></li>
      <li><a class="page" href="#contact">Contact</a></li>
    </ul>
  </nav>
  <div class="header-content">
    <img id="logo" src="img/logo.png" alt="logo" height="200px" width="200px">
    <h3>Joseph Cooper</h3>
    <h3>Graphic Designer</h3>
    <p> 10.03.97 </p>
  </div>
<a href="#about"><img id ="down" src="img/down.png" height="42px" width="42px"></a>

我添加了两行代码,一行用于从导航中的所有href中删除粗体,另一行用于在单击的href中添加粗体。看看codepen: http://codepen.io/anon/pen/doaRjy

   function smoothScroll (duration) {
      $('a[href^="#"]').on('click', function(event) {        
          var target = $( $(this).attr('href') );
          $("#nav-wrap a").css('font-weight','normal')/*this line remove bold from all href*/
          $(this).css('font-weight','bold')/*this line add bold to clicked href*/
          if( target.length ) {
              event.preventDefault();
              $('html, body').animate({
                  scrollTop: target.offset().top
              }, duration);
          }
      });
    }

我试图通过使用jQuery的offset()来解决这个问题。top并对照窗口的scrollTop进行检查。

var $window = $(window),
  homeLink = $("a[href='#home']"),
  aboutLink = $("a[href='#about']"),
  portfolioLink = $("a[href='#portfolio']");
$window.on("scroll", function(e) {
  if ($window.scrollTop() < $("#about").offset().top) {
    $("#nav-wrap").find("a").css("font-weight", 400);
    homeLink.css("font-weight", 900);
  } else if ($window.scrollTop() > $("#about").offset().top && $window.scrollTop() < $("#portfolio").offset().top) {
    $("#nav-wrap").find("a").css("font-weight", 400);
    aboutLink.css("font-weight", 900);
  }
});