#13-消失吧!Navbar!让你的网页更多空间 (JS)

好的Nav bar的动态可以让网站不那麽呆板,
其实实作的技术也不难,就是侦测页面的滚动
向下滑的时候再出现

今天实作两个:

提案 Nav bar的消失 Nav bar的变色
目的 争取更多展示空间 → 往下滑时消失,往上滑时出现 更好的阅读体验,也常常看到缩小版本
JS实作 侦测scrollY位置 使用Intersection Observer
成果图

一个一个来看看吧~


Nav bar的消失

用JS侦测浏览器现在的位置 vs. 刚刚的位置,
Y比较大的话表示往下滑,那就让Nav bar消失,
反之就出现。

//JS
let lastPos = 0
const nav = document.querySelector('nav');

// 监听scroll事件
document.addEventListener('scroll',function(){
  let currentPos =  window.scrollY;
  //   往下滑
  if(currentPos > lastPos){
        nav.style.top = "-60px"; //让nav bar消失
  }else{
    nav.style.top = "0px"; //让nav bar出现
  }
  lastPos = currentPos;//再记住现在位置,跟未来的位置做比较
});

Nav bar的变色

利用之前提到的Intersection Observer API 传送门!
来侦测第一个区块消失了没,消失的话,就让Navbar变色。


//选观察对象, 我们观察对象是section1
//当section1要消失的时候,就让Nav bar换色好让他在section2颜色更显眼
const nav = document.querySelector('nav');
const section1 = document.querySelector('.section1');

//当section1离开的时候就加上新的样式
const changeColor = (entries, observer) =>{
  entries.forEach(entry=>{
    if(!entry.isIntersecting){
      nav.classList.add('scrolled');
    }else{
       nav.classList.remove('scrolled');
    }
  })
  
}

//做一个新的观察
let observer = new IntersectionObserver(changeColor, options);
//观察对象section1
observer.observe(section1);

以上!

今天的code:在这里

有任何问题想法欢迎留言~


<<:  初学者跪着学JavaScript Day14 : 创建Array 四种方式

>>:  [Day29] Template Driven Form

Cotex-M55 首篇

ARM技术听前辈说是包山包海,想了好久才尘埃落定,决定下笔来写写去年才发布、有Helium向量处理技...

食谱资料库架构图

MySQL 学习 由於Icebear在学习创建资料库时,FORGIEN KEY 後面都会有ON DE...

14 - Logs - 挖掘系统内部发生的状况 (2/4) - 使用 Filebeat 应该要了解的设计细节与原理

Logs - 挖掘系统内部发生的状况 系列文章 (1/4) - Logs 与 Filebeat 的基...

Day 6 jinja (1)

前言 今天要来看 jinja 这个模板引擎。简单来说,它的功能就是在 HTML 里面执行一般程序,等...

使用工具测试

这次我是要使用node.js来学习爬虫。为什麽会用node.js呢?一开始我看许多人是用python...