顶部菜单中的活动指示器要保持与用户手动滚动同步。我们可以使用jQuery来实现这一点。
HTML代码:
Section 1 Content
Section 2 Content
Section 3 Content
Section 4 Content
CSS代码:
nav ul {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
nav li {
margin: 0 10px;
}
nav a {
color: #000;
text-decoration: none;
font-weight: bold;
}
#indicator {
position: fixed;
top: 0;
left: 0;
height: 5px;
background-color: #007aff;
transition: width 0.3s ease;
}
JavaScript代码:
$(document).ready(function() {
// 获取菜单和活动指示器元素
var menu = $('nav ul');
var indicator = $('#indicator');
// 菜单项点击事件
$('nav a').click(function(e) {
e.preventDefault();
var target = $(this).attr('href');
var scrollTop = $(target).offset().top - 80;
$('html, body').animate({
scrollTop: scrollTop
}, 1000);
});
// 滚动事件
$(window).scroll(function() {
// 找到当前活动的菜单项
var activeItem = null;
$('div').each(function() {
if ($(window).scrollTop() >= $(this).offset().top - 100) {
activeItem = $(this).attr('id');
}
});
// 更新活动指示器位置
var activeWidth = $('#' + activeItem).width();
var activeLeft = $('#' + activeItem).offset().left - menu.offset().left;
indicator.css({
width: activeWidth,
left: activeLeft