保持CSS悬停状态直到取消悬停

4

如何让悬停状态保持至少1秒钟?目前子菜单项的悬停状态消失得太快,很难选择它们。

这是 jsFiddle 代码。

我的HTML:

<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div>
                <span>Logo+Text</span>
            </div>
            <div class="btn-group has_dropdown" style="margin-left: 200px">
                <a href="#" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Lists</a>
                <ul class="dropdown-menu" role="menu">
                    <li>
                        <a href="#">Sub List 1</a>
                    </li>
                    <li>
                        <a href="#">Sub List 2</a>
                    </li>
                    <li>
                        <a href="#">Sub List 3</a>
                    </li>
                    <li>
                        <a href="#">Sub List 4</a>
                    </li>
                    <li>
                        <a href="#">Sub List 5</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>

并且CSS:

#headerDropdown .dropdown:hover .dropdown-menu,
.btn-group:hover .dropdown-menu {
    display: inline-flex !important;
}

这个回答可能会对你有所帮助。使用CSS过渡延迟。 - Martin
如果您在选择器中添加“, .dropdown-menu:hover”,您可能会避免出现问题。 - miguel-svq
2个回答

8

您可以使用CSS transitiondelay,但是您不能在display属性上使用它,因此请改用visibility

.btn-group .dropdown-menu {
  display: inline-flex;
  transition: all 0s ease 1s; /*delay 1s*/
  visibility: hidden;
}
.btn-group:hover .dropdown-menu {
  transition-delay: 0s;
  visibility: visible;
}

Updated jsFiddle


0

如果您的浏览器支持CSS3,过渡延迟是一个不错的选择。否则,一个简单的jQuery解决方案就足够了。

$(".dropdown-toggle").hover(function() {
    $(this).addClass("active");
}, 
function() {
    var dropdown = $(this);
    window.setTimeout(function(){
        $(dropdown).removeClass("active");
    }, 1000);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接