javascript - 使用 CSS 创建平滑的粘性标题过渡

标签 javascript jquery html css sticky

我为我的页面创建了一个粘性 header :

$(document).ready(() => {
  initNavbarScroll();
});

function initNavbarScroll() {
  const navbar = $("#navbar");
  const navbarTopOffset = navbar.offset().top;
  const stickedCls = "navbarSticked";

  $(window).scroll(() => {
    const isSticked = navbar.hasClass(stickedCls);
    const windowScrolledDown = $(window).scrollTop() > navbarTopOffset;

    if (windowScrolledDown) {
      if (!isSticked) {
        navbar.addClass(stickedCls);
      }
    } else {
      if (isSticked) {
        navbar.removeClass(stickedCls);
      }
    }
  });
}
body {
  margin: 0;
}

#navbar {
  height: 60px;
  width: 100%;
  background: blue;
}

.navbarSticked {
  position: fixed;
  top: 0;
}

.box {
  height: 100px;
  border-bottom: 1px solid;
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="navbar"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>

header 应与 this page 上的相同.

正如您在上面的代码示例中看到的,标题的转换并不平滑,有点笨拙。

怎样才能让它粘的顺滑?

最佳答案

您可以尝试使用 css position:sticky; 而不是 position:fixed

https://css-tricks.com/position-sticky-2/

关于javascript - 使用 CSS 创建平滑的粘性标题过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121634/

相关文章:

jQuery 方法在 Owl Carousel 中不起作用

javascript - 如何在 jQuery 中编辑一个表的所有 TR 的值

html - 根据屏幕宽度在 CSS 工作表之间切换在 IE7 中不起作用

javascript - Chartjs - 两个 Y 轴刻度问题

javascript创建的模板元素不起作用

javascript - 获取表格行元素的每个子td的输入html标签的id、Name、Type、Value和文本

javascript - d3.js 中的函数,用于从不同大小的 JSON 源创建开始和结束节点以及节点和链接文本

javascript - 选择列表禁用出错

javascript - Glassbox.js javascript 插件在 JQuery 中不起作用

javascript - 使用 jquery 实时更新 css 属性