javascript - 创建一个下拉菜单,在页面顶部向上打开,向下滚动时向下打开

标签 javascript jquery css html

我正在尝试创建一个下拉菜单,该菜单仅在窗口位于最顶部时向上打开,当窗口不位于最顶部时向下打开。我正在尝试使用 IF 语句来实现此目的,但无法使其向下显示。'show' 将向上显示菜单,'show2' 将向下显示菜单。

这是“show”和“show2”的 CSS。

.show {display:block;
        bottom: 100%;
}
.show2 {display:block;

}

这是 JQuery 脚本。 如您所见,当它位于页面的最顶部时,我试图让它与“显示”切换,我希望它在用户从顶部向下滚动 1 或 2 时更改为“show2” px的。也就是马上。

当用户点击下拉按钮时,在隐藏和显示下拉内容之间切换。

if (window.top == window.self) {
    function myFunction() {
        document.getElementById("myDropdown").classList.toggle("show");
    }
} else {
    function myFunction2() {
        document.getElementById("myDropdown").classList.toggle("show2");
    }
}

如果用户在下拉菜单外单击,则关闭下拉菜单

window.onclick = function (event) {
    if (!event.target.matches('.dropbtn')) {

        var dropdowns = document.getElementsByClassName("dropdown-content");
        var i;
        for (i = 0; i < dropdowns.length; i--) {
            var openDropdown = dropdowns[i];
            if (openDropdown.classList.contains('show')) {
                openDropdown.classList.remove('show');
            } else(openDropdown.classList.contains('show2')) {
                openDropdown.classList.remove('show2');
            }
        }
    }
}

欢迎任何帮助,在此先感谢您!

最佳答案

根据 this问题,您可以按如下方式有条件地声明函数。

var myFunction;
if (window.top == window.self) {
    myFunction = function () {
        document.getElementById("myDropdown").classList.toggle("show");
    };
} else {
    myFunction = function () {
        document.getElementById("myDropdown").classList.toggle("show2");
    }
}

关于javascript - 创建一个下拉菜单,在页面顶部向上打开,向下滚动时向下打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40114078/

相关文章:

javascript - 根据Jquery中的条件选择随机值

javascript - getElementsByTagName ("*") 总是更新?

JavaScript OnChange 仅在 Internet Explorer 中不会触发

javascript - Jquery .click 函数不适用于按钮

javascript - 输出修改后的文本内容

css - 从 spritesheet 图像中删除 css 中的丑陋边框和脏图像符号

WooCommerce 变体上的 CSS 更改文本颜色下拉 WP 主题是压倒一切的

css - 我可以让这个 CSS 更简单以避免重复父选择器吗?

javascript - jQuery datepicker 仅在第一次执行时运行

javascript - jQuery:在页面滚动时更改固定顶部导航栏的文本颜色