jQuery scroll 使粘性标题跳了一点

标签 jquery html css scroll header

我对粘性标题和导航链接有疑问,因为它们都使用 scrollTop 功能。

第一个用于标题 - 当页面滚动到 50 像素后它会缩小。 第二个与导航链接一起使用 - 它使用滚动功能转到特定页面。

问题是当我单击任何导航链接时,我的 Logo 会跳动/闪烁一下,我不确定为什么会这样?我在 JSFiddle 中重现了这个问题(链接如下),这是代码:

HTML:

<nav>
  <a class="pg1 btn" href="#">Page1</a>
  <a class="pg2 btn" href="#">Page2</a>
</nav>
<article class="home">
  <img class="logoHomePage" src="http://via.placeholder.com/350x150.jpg">
</article>
<article class="page1"></article>
<article class="page2"></article>

jQuery:

// Shrink logo
$(document).scroll(function() {
  if ($(this).scrollTop() >= 50) {
    $(".logoHomePage").addClass("smallLogo");
  } else {
    $(".logoHomePage").removeClass("smallLogo");
  }
});

//nav
$(".pg1.btn").click(function() {
  $("body").animate(
    {
      scrollTop: $(".page1").offset().top
    },
    1200
  );
});

$(".pg2.btn").click(function() {
  $("body").animate(
    {
      scrollTop: $(".page2").offset().top
    },
    1200
  );
});

CSS:

body {
  background-color: red;
  margin: 0px;
  padding: 0px;
}

article {
  width: 100%;
  height: 100vh;
  margin: auto;
}

.logoHomePage {
  margin-left: auto;
  margin-right: auto;
  margin-top: 25%;
}

.smallLogo {
  width: 100%;
  max-width: 260px;
  margin: 10px !important;
  position: fixed;
  display: block;
}
nav {
  z-index: 20;
  position: fixed;
  background-color: white;
}

.page1 {
  background: green;
}

.page2 {
  background: yellow;
}

fiddle 引用:JSFiddle

编辑:点击 page1 链接,然后点击 page2 以查看其运行情况。

最佳答案

出现故障是因为页面想要跳转到页面顶部,这是将空 anchor # 作为 href 时的预期行为。它指向页面的顶部。

使用 .preventDefault() 来防止链接的默认行为 (documentation)。像这样:

$(".pg1.btn").click(function(e) {
  e.preventDefault();

  $("body").animate({
    scrollTop: $(".page1").offset().top
  }, 1200);
});

Updated fiddle

关于jQuery scroll 使粘性标题跳了一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45968836/

相关文章:

html - 在表格 HTML 的列中平均拆分 3 行

html - 打包和最小化 HTML 和 CSS

jquery - 如何防止在 jQuery 动画期间跳到屏幕顶部

html - 具有视频高度的div容器

javascript - 仅当在 block 外单击时关闭悬停 div

jquery - 从jquery中的类名获取元素id

html - 如何从包含在另一个 div 中的 div 中删除背景

javascript - Material-UI TableCell-root 中 padding-right 40px 是什么原因

javascript - 如何获取动态生成的按钮的ID

javascript - 如何将第二个脚本的行为绑定(bind)到第一个 "on click"?