javascript - 当用户到达页面底部时关闭弹出菜单

标签 javascript html jquery css menu

我有一个简单的菜单,点击即可打开。

我需要的是:

  1. 点击左上角打开菜单/汉堡
  2. 用户阅读了所有文本并且 向下滚动 3.3 第 3 步 - 当用户到达页面末尾时关闭/隐藏弹出菜单

我恳请您在我的 js 代码中添加一段代码

$(document).ready(function() {
    $(".toggle-nav").click(function(e) {
        e.stopPropagation();
        e.preventDefault();
        $(this).toggleClass("active");
        $(".menu ul").toggleClass("active");
    });
    $(document).click(function(e){
      if(!e.target.closest("ul") && $(".menu a").hasClass("active")){
         $(".menu ul").toggleClass("active");
         $(".toggle-nav").toggleClass("active");
      }
    })
    
});

Here是我的codepen来测试该功能

很好的解决方案吗?

附:显然,每次用户切换汉堡按钮时,该操作都需要起作用

最佳答案

用这个替换你的 jQuery

$(document).ready(function () {

    $(".toggle-nav").click(function (e) {
        e.stopPropagation();
        e.preventDefault();
        $(this).toggleClass("active");
        $(".menu ul").toggleClass("active");
    });

    $(document).click(function (e) {
        if (!e.target.closest("ul") && $(".menu a").hasClass("active")) {
            $(".menu ul").toggleClass("active");
            $(".toggle-nav").toggleClass("active");
        }
    });


    $(window).scroll(function () {
        var scrollPos = $(document).scrollTop();
        var hgt = $('.menu').height();
        var win = $(window).height();

        if (hgt - win === scrollPos) {
            $(".menu ul").toggleClass("active");
            $(".toggle-nav").toggleClass("active");
        }
    });

});

版本 2:带淡出

要使此选项起作用,您需要将 id="fadeout" 添加到 ul 元素。

$(document).ready(function () {

    $(".toggle-nav").click(function (e) {
        e.stopPropagation();
        e.preventDefault();
        $(this).toggleClass("active");
        $(".menu ul").toggleClass("active");
    });

    $(document).click(function (e) {
        if (!e.target.closest("ul") && $(".menu a").hasClass("active")) {
            $(".menu ul").toggleClass("active");
            $(".toggle-nav").toggleClass("active");
        }
    });


    $(window).scroll(function () {
        var scrollPos = $(document).scrollTop();
        var hgt = $('.menu').height();
        var win = $(window).height();

        if (hgt - win === scrollPos) {
            $('#fadeout').fadeOut("slow", function () {
                $(".menu ul").toggleClass("active");
                $(".toggle-nav").toggleClass("active");
                $('#fadeout').removeAttr("style");
            });
        }
    });

});

关于javascript - 当用户到达页面底部时关闭弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64820796/

相关文章:

javascript - jQuery 验证插件 : validate decimal number with comma as decimal separator

javascript - socket.io 向每个客户端发出/广播

html - 自定义 Facebook 发送按钮的文本/外观

javascript - 内联 block 元素的纯 javascript 水平选取框

javascript - jQuery vs jQuery Mobile vs jQuery UI?

javascript - 如何在React功能组件中的onClick上传递参数

javascript - 用于提取字符串中分散数字的正则表达式

html - 自动拉伸(stretch)表格单元格 div css

javascript - 使用 jQuery 和 php 加载更多内容以无限滚动

jquery - 如何在条件查询中的类之间淡入淡出