【问题标题】:How can I highlight position in nav bar for single-page website?如何突出显示单页网站导航栏中的位置?
【发布时间】:2015-02-08 11:34:57
【问题描述】:

我使用本教程在我的单页网站上创建“滚动缓动”效果:http://designshack.net/articles/html/how-to-link-to-specific-points-in-a-page-and-animate-the-scroll/

所以我基本上只是使用了 jQuery scrollTo.js 和 localScroll 并在页面上执行它:

$(document).ready(function() {
$('.fixed_nav').localScroll({duration:700});
});

但是,现在我想更进一步,让它在我的导航栏上突出显示当前位置。

有没有办法通过我正在使用的当前教程完成此操作,还是我需要尝试其他方法?

这是我当前用于导航的 HTML 和 CSS:

HTML:

  <div class="fixed_nav_wrapper">
    <nav class="fixed_nav">
            <ul>
                <li><a title="go home" href="#home_link">home</a></li>
                <li><a title="about me" href="#profile_link">me</a></li>
                <li><a title="services" href="#services_link">services</a></li>
                <li><a title="samples" href="#samples_link">work</a></li>
                <li><a title="contact me" href="#contact_link">contact</a></li>
            </ul>
    </nav>
</div>

CSS:

.fixed_nav_wrapper {
  width:710px; 
  margin:0 auto; 
}

.fixed_nav { 
  width:100%; 
  height:50px; 
  margin: -5px auto 0 auto; 
  background-color:transparent;
  z-index:1000;
}

.fixed_nav ul { 
  display:block; 
  margin:0 auto; 
  padding:15px 5px 5px 5px;
  list-style:none;  
}

.fixed_nav ul li { 
  display:inline;
  margin:0 auto; 
  padding:0;
}

.fixed_nav ul li a { 
  display:block; 
  float:left; 
  margin:0 25px; 
  padding:0 5px 0 4px; 
  font-size: 2rem;
  color:rgba(235,235,235,1);
  font-family: Inversionz, sans-serif;
  letter-spacing:-0.25rem;
  text-decoration:none;
 }

.fixed_nav ul li a:hover { 
  color:rgba(255,255,255,1) !important;
 -webkit-box-shadow: 0px 0px 13px 0px rgba(255, 255, 255, 1), 0px 0px  13px 0px rgba(255, 255, 255, 1);
 -moz-box-shadow:    0px 0px 13px 0px rgba(255, 255, 255, 1), 0px 0px 13px 0px rgba(255, 255, 255, 1);
box-shadow:         0px 0px 13px 0px rgba(255, 255, 255, 1), 0px 0px 13px 0px rgba(255, 255, 255, 1); 
}

实际上还有更多,因为当用户向下滚动到某个点时,我有一个“粘性”导航效果,但这是基础。

【问题讨论】:

    标签: javascript jquery css position highlight


    【解决方案1】:

    可以调用jQueryscrollTop()函数返回元素的垂直滚动条位置。

    例如:alert(window.scrollTop());alert(document.scrollTop());,适合您的情况。

    它适合您的需求。

    编辑:根据要求:

    <script>
    

    body.addEventListener("scroll", scrollfunc());

    函数滚动函数(){

    if(scrollTop() > 100){ 
    
    document.getElementByClassName("menuitem")[0].style.borderBottom="2px solid #2cafe4";
    
    }
    
    if(scrollTop() > 200){ 
    
    document.getElementByClassName("menuitem")[1].style.borderBottom="2px solid #2cafe4";
    
    document.getElementByClassName("menuitem")[0].style.borderBottom="0px";
    
    }
    
    if(scrollTop() > 300){ 
    
    document.getElementByClassName("menuitem")[2].style.borderBottom="2px solid #2cafe4";
    
    document.getElementByClassName("menuitem")[0].style.borderBottom="0px";
    
    document.getElementByClassName("menuitem")[1].style.borderBottom="0px";
    
    }
    

    }

    </script>
    

    HTML 标记示例:

    <a class="menuitem">1</a> <a class="menuitem">2</a> <a class="menuitem">3</a> 
    

    此示例通过触发onscroll 的函数为页面所在的菜单项添加边框,但您可以对其进行调整以执行您喜欢的任何操作并满足您的特定需求。只是一个快速演示。

    【讨论】:

    • 谢谢。唯一的事情是我是 Javascript 的初学者。我知道我需要添加一个脚本来“在位置为 X 位置时调用 ID 或类”,但我不知道如何写出来。如果您能再提示我一点,那就太好了!
    • 您能否详细说明一下您到底需要什么? :) @lark 我很乐意提供帮助。
    • 当然!所以我希望我的网站能够做到这一点:jsfiddle.net/mekwall/up4nu 或这个 callmenick.com/lab-demos/7-single-page-smooth-scroll 。这正是我想要的,除了滚动后我有一个粘性导航。我的网站在导航方面看起来和这个完全一样:davidhardydesign.com。在用户向下滚动到介绍之后,看看它是如何停留在顶部的,然后在单击/滚动时突出显示链接?出于某种原因,我无法让它与我的页面一起工作,哈哈。我一定做错了什么!非常感谢!
    • 哦,当然!我以前在网页设计中做过很多次相同类型的事情。因此,您希望标题在滚动点后保持粘性,请执行以下操作:&lt;body onscroll="functionhere();"&gt;,然后按如下方式创建函数functionhere():(将number 替换为您尝试过的其他内容)&lt;script&gt;if(scrollTop() &gt; number){ document.getElementById("header").style.position="fixed";}&lt;/script&gt;跨度>
    • 谢谢!我实际上已经通过了“粘性”部分。剩下的唯一部分是突出显示位置。这就是我所需要的。我用这个方法把它粘起来:stackoverflow.com/questions/14496240/….
    【解决方案2】:

    Bootstrap 的“scrollspy”功能中正好有这个功能。如果你想自己动手,你可以下载他们的源代码,看看他们是如何实现的:

    http://getbootstrap.com/javascript/#scrollspy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多