javascript - 为 Bootstrap Hover 菜单设置定时延迟

标签 javascript html css twitter-bootstrap

我有一些代码可以让我的 Bootstrap 菜单项在悬停时显示,而不是在单击时显示。 (我知道这有点离题,但这是客户的要求)。它工作正常,但我想要稍微延迟而不是自动显示,这样就不会太烦人。

这是我的CSS:

@media (min-width: 768px) {
.navbar-nav .caret {
display: none;
}
.navbar-nav .open ul {
display: none;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus,
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: white;
background: none;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus,
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
color: #969696;
background: none;
}
.navbar-default .navbar-nav > .hovernav > a {
color: white;
}
.navbar-inverse .navbar-nav > .hovernav > a {
color: #969696;
}
.navbar-default .navbar-nav > .hovernav:hover > a,
.navbar-default .navbar-nav > .hovernav:hover > a:hover,
.navbar-default .navbar-nav > .hovernav:hover > a:focus {
color: #333;
background: transparent;
}
.navbar-inverse .navbar-nav > .hovernav:hover > a,
.navbar-inverse .navbar-nav > .hovernav:hover > a:hover,
.navbar-inverse .navbar-nav > .hovernav:hover > a:focus {
color: #fff;
background: transparent;
}
.navbar-default .navbar-nav > li:hover {
background: #e7e7e7;
}
.navbar-inverse .navbar-nav > li:hover {
background: #080808;
}
.navbar-nav .hovernav:hover > .dropdown-menu {
display: block;
}
}

这是我的 javascript:

$(document).ready(function ($, window, delay) {

    var mq = window.matchMedia('(min-width: 768px)');
    if (mq.matches) {
        $('ul.navbar-nav li').addClass('hovernav');
    } else {
        $('ul.navbar-nav li').removeClass('hovernav');
    };

    if (matchMedia) {
        var mq = window.matchMedia('(min-width: 768px)');
        mq.addListener(WidthChange);
        WidthChange(mq);
    }
    function WidthChange(mq) {
        if (mq.matches) {
            $('ul.navbar-nav li').addClass('hovernav');
        } else {
            $('ul.navbar-nav li').removeClass('hovernav');
        }
    };
});

最佳答案

如果您使用 jQueryUI,您可以向 .addClass.removeClass ( doc here ) 添加更多参数。

它将为您的菜单设置动画,您可以指定动画的持续时间。

关于javascript - 为 Bootstrap Hover 菜单设置定时延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408842/

相关文章:

html - CSS:剪裁时删除整个元素

ios - 每当我旋转 iPhone(或 Safari 窗口大小越过断点)时,HTML 元素都会增长

javascript - 如何根据值而不是键迭代对象数组?

javascript - 循环数据对象并输出每个对象的对象文件名和消息

html - 使用CSS旋转从左到右依次显示信息

html - 使用 CSS 悬停偶数元素的子元素

javascript - 使用javascript显示基于两个html选择的输出

jquery - 使用 CSS 和 jQuery 将高度更改为奇数行

javascript - 通过在组件内部执行函数来响应 redux 状态变化

javascript - 如何检查我是否在浏览器中运行 JavaScript 代码?