#18. Fixed Navbar(原生JS版)

Navbar是每个前端心手都会练习到的部分,本日任务另外添加一个小小的效果:下拉网页时改变Navbar样式。实作请参考CodePen

实作逻辑 & 程序码

JS部分其实很简单:就是在window挂上监听器,监听scroll行为。
如果scroll在Y轴的长度达到预期的数字,就改变nav的属性。

const nav = document.querySelector('.nav')
window.addEventListener('scroll', fixNav)

function fixNav() {
    // 若视窗在Y轴的移动长度大於nav高度+150px时,就为nav加上.active选择器
    if(window.scrollY > nav.offsetHeight + 150) {
        nav.classList.add('active')
    } else {
        nav.classList.remove('active')
    }
}

您可以在codepen当中console.log window.scrollY和nav.offsetHeight,查看实际的触发点是否符合程序码:
https://ithelp.ithome.com.tw/upload/images/20210920/201305347QzlKmsm8E.png


SCSS部分(节录)
这里有运用伪元素和z-index属性,做出一个滤镜效果,让文字从背景跳出来。

.mainTitle {
  background-image: url('https://images.pexels.com/photos/450035/pexels-photo-450035.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260');
  background-repeat: no-repeat;
  background-size: cover;
  background-position: bottom center;
  height: 100vh;
  color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  position: relative;
  margin-bottom: 20px;
  z-index: -2;

  h1 {
    font-size: 46px;
    margin: -20px 0 20px;
  }

  p {
    font-size: 20px;
    letter-spacing: 1px;
  }

  &::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: -1;
  }
}

<<:  第4砍 - 蓄势待发

>>:  【DAY 6】沟通 0 距离 - Micorsoft Teams 的应用技巧

DAY19 - 在win10家用版上安装Docker Desktop

前言 铁人赛进入第十九天,今天要来讲讲如何用Docker 打造程序开发环境 Docker 的维基百科...

D24 - 走!去浏览器偷听 Capturing & Bubbling

前言 这篇介绍 DOM Event Listener - 事件监听 (总觉得监听这个翻译很有抓奸的画...

DAY30: 最後一天

今天是第三十天!!首先先给我一个拥抱!! 很感谢我自己这麽有毅力的连续发文三十天,其实学习的时间不只...

[Day 26] LIFF InitPlugins

前言 [Day 24] LIFF ScanCode曾提过liff.scanCode()因技术问题,功...

Day 10:Gson 资料解析

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...