【问题标题】:how to create a sticky navbar css and javascript如何创建粘性导航栏 css 和 javascript
【发布时间】:2019-02-14 00:04:48
【问题描述】:

我正在尝试使用 CSS 和 JavaScript 在滚动时制作一个粘性导航栏,但它显示为正常的导航栏,并且在滚动时它不会粘贴。滚动时如何使其粘住?我在代码中添加了标题

window.onscroll = function() {
  myFunction()
};

var navbar = document.getElementById("navbar");
var sticky = navbar.offsetTop;

function myFunction() {
  if (window.pageYOffset >= sticky) {
    navbar.classList.add("sticky")
  } else {
    navbar.classList.remove("sticky");
  }
}
#navbar {
  overflow: hidden;
  background-color: #333;
}


/* Navbar links */

#navbar a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px;
  text-decoration: none;
}

.sticky {
  position: fixed;
  top: 0;
  width: 100%;
}

.sticky+.content {
  padding-top: 60px;
}
<div class="header">
	<h2>S I U</h2>
	<p>T h e  f u t u r e  &  B e y o n d</p>
</div>

<div id="navbar">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
</div>

【问题讨论】:

  • 正如你所提到的,你尝试了一些 JavaScript 吗?
  • 您的 CSS 中有 .sticky 作为选择器,但您的 HTML 中没有该类。
  • Sticky NavBar onScroll?的可能重复
  • 嗯,有点不清楚你到底想要完成什么。请提供一些具体细节吗?
  • 也许只是在导航上方插入一些内容?或者您可能没有正确设置文档?很难说!

标签: javascript css


【解决方案1】:

快到了!您需要将 .sticky 类应用到您的导航以使其保持不变。

window.onscroll = function() { myFunction() };
var navbar = document.getElementById("navbar");
var sticky = navbar.offsetTop;

function myFunction() {
    if (window.pageYOffset >= sticky) {
        navbar.classList.add("sticky")
    } else {
        navbar.classList.remove("sticky");
    }
}
body {
   height: 10000px;
}

#navbar {
  overflow: hidden;
  background-color: #333;
}


/* Navbar links */

#navbar a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px;
  text-decoration: none;
}

.sticky {
  position: fixed;
  top: 0;
  width: 100%;
}

.sticky+.content {
  padding-top: 60px;
}
<div class="header">
  <h2>Scroll Down</h2>
  <p>Scroll down to see the sticky effect.</p>
</div>

<div id="navbar">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
</div>

【讨论】:

  • 它有效,但现在它停留在页面顶部而不是滚动。
  • @Josephizz 如果是这样的话,完整的代码在这里:w3schools.com/howto/tryit.asp?filename=tryhow_js_navbar_sticky
  • 在这种情况下,您在 HTML 中不应用 sticky 类是正确的。我已经编辑了我的答案以反映这一点(直接来自 w3 资源的代码)
  • 您是否在使用 Opera Mini? caniuse.com/#search=position%3A%20fixed
  • 只是不在您的文档中,我猜?你确定你的所有语法都正确吗?正文底部&lt;script&gt; 标记中的Javascript,以及所有这些?
【解决方案2】:

你没有应用你的.stickyclass。将它添加到您的导航栏(我添加了一堆 div 来强制滚动)

#navbar {
  overflow: hidden;
  background-color: #333;
}


/* Navbar links */

#navbar a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px;
  text-decoration: none;
}

.sticky {
  position: fixed;
  top: 0;
  width: 100%;
}

.sticky+.content {
  padding-top: 60px;
}
<div id="navbar" class="sticky">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>
<div>Test to cause some stroll</div>

【讨论】:

  • 我希望它仅在“滚动后”停留在页面顶部。
  • 我明白了。在这种情况下,创建一个 javascript 函数以在用户滚动时应用 .sticky。如果它们位于页面顶部,您可以分离该类。
猜你喜欢
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多