黄色箭头指向 滚动条
黑色箭头指向 导航栏
没有滚动 之前 导航栏没有固定在顶部
任务是:随着滚动条滚动到一定位置 导航栏固定 顶部 dispaly:fixed
以下代码的 display 样式 已经配置,只需要添加一个类名就行 .fixed
window.addEventListener('load', function() {
// 获取元素navBar,后期需要获取它离页面顶部的距离,同时满足条件之后还要为其设置fixed样式
let navBar = document.querySelector('#navBar')
// 获取导航条的高度,因为后期内容面板的margin-top需要以这个值做为参照
let navBarH = navBar.offsetHeight
// mainPart:内容,后期需要为内容添加样式
let mainPart = document.querySelector('#mainPart')
// 获取navBar离页面顶部的距离
let navBarTop = navBar.offsetTop
// 添加页面滚动的监听:因为我们要获取当前页面垂直方向卷出屏幕的距离,用这个距离和之前获取的导航条离顶部的距离进行比较,如果大于等于应该添加fiexed样式
window.addEventListener('scroll', function() {
// 获取当前滚动出屏幕的距离
let offset = document.documentElement.scrollTop
// 判断卷出屏幕的距离是否大于导航条离顶部的距离
if (offset >= navBarTop) {
navBar.classList.add('fixed')
// 为navBar添加定位样式之后,会造成元素脱标,从而导致内容往上移从而重叠,我们可以内容添加一个margin-top样式:样式的值就是导航条的高度
mainPart.style.marginTop = navBarH + 10 + 'px'
} else {
navBar.classList.remove('fixed')
// 如果没有定位样式,则将外边距还原
mainPart.style.marginTop = 10 + 'px'
}
})
})