javascript - 在页面滚动时更改 "selected"

标签 javascript jquery html css

我一直在尝试让我的导航栏自动更新,但我无法让它工作。 这是我的代码:http://pastebin.com/YTHaBD0i

<div id="header">
  <ul class="nav-list">
    <li class="download selected"><a href="#firstPage">Download</a></li>
    <li class="features"><a href="#secondPage">Features</a></li>
    <li class="method"><a href="#3rdPage">Method</a></li>
    <li class="purchase"><a href="#4thPage">Purchase</a></li>
  </ul>
</div>
<div id="footer">yey productions &copy; 2016</div>

<div id="fullpage">
  <div class="section " id="section0">
    <div class="intro">
      <h1>Download</h1>
      <p>Lorem Ipsum</p>
    </div>
  </div>
  <div class="section" id="section1">
    <div class="slide" id="slide1">
      <div class="intro">
        <h1>Features</h1>
        <p>Cheese.</p>
      </div>
    </div>
    <div class="slide" id="slide2">
      <h1>Cheese2</h1>
    </div>

  </div>
  <div class="section" id="section2">
    <div class="intro">
      <h1>Yey</h1>
    </div>
  </div>
  <div class="section" id="section3">
    <div class="intro">
      <h1>Yey2</h1>
    </div>
  </div>
</div>

帮助将不胜感激!

你好,

最佳答案

假设您正在使用 jQuery,您将需要一个函数 fires every time you scroll .

从那里,您需要检测哪些元素在 View 中。

一旦您知道哪些元素在 View 中,请使用 .selected 类清除所有当前事件的元素,然后选择您想要的元素 .selected 并添加.selected 类。

编辑更多细节:

下面是我找到的纯JavaScript方案here .这应该接近于直接解决方案!:

(function() {
  'use strict';

  var section = document.querySelectorAll(".section");
  var sections = {};
  var i = 0;

  Array.prototype.forEach.call(section, function(e) {
    sections[e.id] = e.offsetTop;
  });

  window.onscroll = function() {
    var scrollPosition = document.documentElement.scrollTop || document.body.scrollTop;

    for (i in sections) {
      if (sections[i] <= scrollPosition) {
        document.querySelector('.selected').setAttribute('class', ' ');
        document.querySelector('a[href*=' + i + ']').setAttribute('class', 'selected');
      }
    }
  };
})();

关于javascript - 在页面滚动时更改 "selected",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35366141/

相关文章:

javascript - 找到 anchor 并使用 jquery 设置为事件状态

javascript - 重新对齐 Highcharts 上条形图内部和外部的标签

javascript - 我该如何选择这个li项?

html - 如何避免水平 slider 布局中的垂直滚动条

javascript - 用户在网站中提交的内容

html - 带虚线或虚线边框的圆圈

javascript - Angular 复选框指令

javascript - ASP.NET MVC4 和 JQuery - Twitter Feed 脚本不起作用

javascript - 使用 JavaScript 设置 HTML 页面垂直位置

javascript - jquery固定位置 block ,切换到静态某个点