在我的网站上,我有一个带有几个不同导航项的粘性标题,点击它时会向下滚动以在页面上找到该部分。我想知道如何设置它,以便当视图在它对应的部分时导航项改变颜色。换句话说,如果观看者在“x”部分,导航栏上的“x”将改变颜色。
更新:继承人使用
导航栏的代码<div class = 'nav-container'>
<nav>
<div id = 'nav-items-container'>
<ul class='nav-items'>
<li class='nav-item'><a href='#what'>what</a></li>
<li class='nav-item'><a href='#how'>how</a></li>
<li class='nav-item'><a href='#why'>why</a></li>
<li class='nav-item'><a href='#who'>who</a></li>
<li class='nav-item'><a href='#where'>where</a></li>
</ul>
</div>
</nav>
</div>
一些css
.nav-container{
background-color:black;
height:50px;
width:410px;
font-size: 120%;
position:absolute;
}
a:link{
color:white;
}
a:visited{
color:#58ACFA;
}
#nav-items-container ul li{
display:inline;
}
#nav-items-container ul li a{
padding: 20px;
text-decoration:none;
}
#nav-items-container ul{
margin:0;
padding:0;
list-style-type: none;
text-align: center;
padding-top:15px;
}
答案 0 :(得分:1)
如果您可以使用jquery,您可以执行以下操作:
<script type="text/javascript">
$(function() {
var sections = [],
anchors = $('#nav-items-container a[href^="#"]'), // anchor links with hash tags
docHeight = $(document).height(),
currentOffset,
setNavActive;
// handler to update the class
setNavActive = function(hash){
anchors.removeClass('current-section');
anchors.filter('a[href="' + hash + '"]').addClass('current-section');
};
// building our hash/start/end position map
$.each(anchors, function(i, item) {
currentOffset = $(item.hash).offset().top;
if (i > 0) {
sections[i-1].end = currentOffset;
}
sections[i] = {
hash: item.hash,
start: (i == 0 ? 0 : currentOffset),
end: docHeight
};
});
// on scroll event, check which map fits,
// find the hash and set the class
$(document).scroll(function() {
currentOffset = $(document).scrollTop();
for (var i = 0; i < sections.length; i++) {
if (sections[i].start <= currentOffset && sections[i].end > currentOffset) {
setNavActive(sections[i].hash);
}
}
});
});
</script>
我添加了一种新风格,但您可以将其嵌套或等等:
.current-section {background:pink; }
答案 1 :(得分:0)
这里没有足够的信息来提供最佳答案。我可以给一个有效的。
张你的标题看起来像这样:
<li class='nav-item' id = "nav_what"><a href='#what'>what</a></li>
<li class='nav-item' id = "nav_how"><a href='#how'>how</a></li>
<li class='nav-item' id = "nav_why"><a href='#why'>why</a></li>
<li class='nav-item' id = "nav_who"><a href='#who'>who</a></li>
<li class='nav-item' id = "nav_where"><a href='#where'>where</a></li>
然后在每个页面的正文中
<script>
document.getElementById('nav_what').style.backgroundColor = "gray";
</script>
您必须使用正确的ID在每个页面上将其切换出来。如果不在外部加载标题,则传统上使用内联样式手动完成。
答案 2 :(得分:0)
添加另一个CSS
声明,并将active
样式应用于当前页面。
#nav-items-container ul li.active a {
color:red;
}
像这样应用上面的风格......
<li class='nav-item active'><a href='#what'>what</a></li>