javascript - 如何将 2 个 JavaScript 代码合并为一个?

标签 javascript jquery scroll combinations visibility

我以某种方式组装了 2 个单独的代码(绝对初学者),并尝试将这两个代码块合并为一个。

我尝试了以下操作:向下滚动时,导航应隐藏,向上滚动时,导航应再次出现。

附加:一旦您将鼠标移到其上(.nav-visibility),导航应该再次出现,并在鼠标移开时再次消失。 -> 但前提是您向下滚动!

问题:当您向下滚动时,导航消失=这很棒。但当你再次向上滚动时,它就不再出现了。

var zero = 0;
$(document).ready(function() {
  $(window).on('scroll', function() {
    $('.nav-visibility').css("opacity", "0", $(window).scrollTop() >
      zero);
    zero = $(window).scrollTop();
  })
})
$('nav').mouseover(function() {
  $('.nav-visibility').css("opacity", "1");
  $('.nav-visibility').css("visibility", "visible");
});

$('nav').mouseout(function() {
  $('.nav-visibility').css("opacity", "0");
  $('.nav-visibility').css("visibility", "hidden");
});

最佳答案

Problem 1: When you're scrolling down, the navigation disappears = which is great. But as soon as you scroll up again, it doesn't appear anymore.

这是因为每次滚动时都会重置点:

zero = $(window).scrollTop();

由于您只想将其设置在顶部,因此无需重置零点。

调用 .css 也存在一个问题,在这种用法下,它只需要 2 个参数 - 因此第二个参数需要根据滚动位置为“0”或“1”,给予:

$(document).ready(function() {
  $(window).on('scroll', function() {
    $('.nav-visibility').css("opacity", $(window).scrollTop() > 0 ? "0" : "1");
  })
})

Problem 2: the nav disappears forever, when I hover once on the nav

在这种情况下,悬停代码不仅会更改不透明度,还会更改可见性 - 因此滚动会更改不透明度,但不会更改可见性,从而使它是看不见的。

根据您的要求,您可以删除可见性部分,以便滚动和悬停进行相同的更改:

$('nav').mouseover(function() {
  $('.nav-visibility').css("opacity", "1");
});

$('nav').mouseout(function() {
  $('.nav-visibility').css("opacity", "0");
});

当然,如果您在顶部时取消悬停,它也会消失,因此您可以添加该检查:

$('nav').mouseout(function() {
  if ($(window).scrollTop() > 0) {
    $('.nav-visibility').css("opacity", "0");
  }
});

关于javascript - 如何将 2 个 JavaScript 代码合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55826975/

相关文章:

Javascript-向数组字符串添加换行符

php - 如何使用 jquery 获取文本字段的值?

jquery - android 滚动问题锁定浏览器

html - 在 css 中页面变宽

c# - 启用 SSL 网站时阻止加载混合事件内容 "http://connect.facebook.net/en_US/all.js"

jquery - 带有 jQ​​uery Parallax 的 Buggy 滚动

javascript - 在运行单元测试时如何将 React 添加为全局变量?

javascript - 一个按钮提交 AJAX,另一个按钮查询该 AJAX 结果

javascript - 是否可以在浏览器中运行跳过事件循环队列的代码 - 在调度后立即运行

javascript - jQuery SubmitHandler 提示加载微调器