在页面中滚动时更改“已选择”
Change "selected" on scroll in page
我一直在尝试在我的导航栏上获取自动更新,但我无法让它工作。这是我的代码: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 © 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,你将需要一个每次滚动时触发的函数。
从那里,您需要检测哪些元素在视图中。
知道视图中的元素后,使用 .selected
类清除任何当前活动的元素,然后选择要.selected
的元素并添加.selected
类。
编辑以获取更多详细信息:
下面是一个纯粹的JavaScript解决方案,我在这里找到的。这应该接近于即插即用的解决方案!
(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');
}
}
};
})();
相关文章:
- Angular2 ngFor—已选择集
- 任何不选择已在令牌输入中选择的名称的想法
- 防止已选择的选项 Jquery 使用 MYSQL 自动完成
- jquery插件 - 已选择 - 多项选择不在一行中列出,而是列在一列中
- 多个<选择>使用选择,选项删除(已选择)
- 已选择backgrid.js删除
- 如何重新选择已选择的选项
- Angular ng通过ng选项重复多个选择字段,而不显示已选择的数据
- 检测是否已选择所有三个下拉菜单
- JavaScript 更改已选择文本的颜色
- 已选择角度空白选项
- 选择已更改时更改输入
- 如何从jsp中的选择框(已选择和未选择)中获取所有值
- 已选择挖空JS选项未显示
- AngularJS Bootstrap UI,将数据传递到模态的问题.已选择卡未定义
- 已选择:已更新触发器阻止文本在输入中呈现
- JSrender使用已选择的选项填充多个选择框
- 如何验证用户是否已选择要上传的文件
- Jquery 将选项标记设置为“已选择”
- 在下拉菜单/选择 - 列表中选择已选择的项目