css - Bootstrap CSS 过渡悬停

标签 css twitter-bootstrap drop-down-menu menu css-animations

您好,我正在尝试复制悬停在 devdojo.com (https://devdojo.com/ebook/laravelsurvivalguide) 上的精美 CSS 过渡下拉菜单,但无法复制。它是主菜单中 3 个点的悬停。也许我错过了什么?谢谢!

我的 CSS:

.dropdown-menu-animated {
    border: 0 none;
    box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.25);
    display: block;
    margin-top: 0;
    opacity: 0;
    transform: scale3d(0.95, 0.95, 1) translate3d(0px, -15px, 0px);
    transform-origin: 100% 0 0;
    transition-delay: 0s, 0s, 0.5s;
    transition-duration: 0.5s, 0.5s, 0s;
    transition-property: opacity, transform, visibility;
    transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
    visibility: hidden;
}

.dropdown-menu {
    background-clip: padding-box;
    background-color: #fff;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 4px;
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176);
    display: none;
    float: left;
    font-size: 14px;
    left: 0;
    list-style: outside none none;
    margin: 2px 0 0;
    min-width: 160px;
    padding: 5px 0;
    position: absolute;
    top: 100%;
    z-index: 1000;
}
.open > .dropdown-menu-animated {
    visibility: visible;
    opacity: 1;
    transition: opacity .5s, -webkit-transform .5s;
    transition: opacity .5s, transform .5s;
    transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
}

我的 HTML:

<div id="bs-example-navbar-collapse-1" class="collapse navbar-collapse right">
    <ul class="nav navbar-nav navbar-left">
        <li class="dropdown">
            <a class=" dropdown-toggle" href="#_" data-toggle="dropdown">
                            HOVER ME
            </a>
            <ul class="dropdown-menu dropdown-menu-animated" role="menu">
                <li>
                    <a href="/points">Sushi Points</a>
                </li>
                <li><a href="/points">Two</a></li>
            </ul>
        </li>
    </ul>
</div>

谢谢@chiller。

Updated and edited answer:

JS

$('.dropdown-toggle').hover(function() {
    $(this).parent().addClass("open");
});

$('.dropdown').mouseleave(function() {
    $(this).removeClass("open");
});

CSS

.dropdown-menu li a {
    color: white;
}
.dropdown-menu-animated {
    border: 0 none;
    box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.25);
    display: block;
    margin-top: 0;
    opacity: 0;
    transform: scale3d(0.95, 0.95, 1) translate3d(0px, -15px, 0px);
    transform-origin: 100% 0 0;
    transition-delay: 0s, 0s, 0.5s;
    transition-duration: 0.5s, 0.5s, 0s;
    transition-property: opacity, transform, visibility;
    transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
    visibility: hidden;
}
.dropdown-menu {
    background-clip: padding-box;
    background-color: #fff;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 4px;
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176);
    /*display: none;*/
    float: left;
    font-size: 14px;
    left: 0;
    list-style: outside none none;
    margin: 2px 0 0;
    min-width: 160px;
    padding: 5px 0;
    position: absolute;
    top: 100%;
    z-index: 1000;
}
.open > .dropdown-menu-animated {
    visibility: visible;
    opacity: 1;
    transition: opacity .5s, -webkit-transform .5s;
    transition: opacity .5s, transform .5s;
    transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
}

HTML

<div id="bs-example-navbar-collapse-1" class="collapse navbar-collapse right">
    <ul class="nav navbar-nav navbar-left">
        <li class="dropdown">
            <a class="dropdown-toggle" href="#_" data-toggle="dropdown">
                            HOVER ME
            </a>
          <ul class="dropdown-menu dropdown-menu-animated" role="menu" style="color:white;background:black;">
                <li><a href="#">Bulanching</a></li>
                <li><a href="#">Kuya Matmat</a></li>
                <li><a href="#">Baby</a></li>
                <li><a href="#">Wedding</a></li>
                <li><a href="#">Excited</a></li>
            </ul>
        </li>
    </ul>
</div>

最佳答案

这实际上是用 JavaScript 完成的,你所要做的就是在你的脚本中添加这个 jquery 代码

$('.dropdown-toggle').hover(function() {
  $(this).parent().addClass("open");
});

$('.dropdown').mouseleave(function() {
  $(this).removeClass("open");
});

并且你必须删除 display: none;从 .dropdown-menu 类开始动画工作

see your example here

您还可以通过添加以下代码使其仅与 CSS 一起工作:

.dropdown:hover>.dropdown-menu-animated{

    visibility: visible;
    opacity: 1;
    transition: opacity .5s, -webkit-transform .5s;
    transition: opacity .5s, transform .5s;
    transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);

} 

See your example with CSS only

关于css - Bootstrap CSS 过渡悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40704000/

相关文章:

html - 导航子菜单未出现

css - 如何与引导内联表单中的输入对齐?

javascript - 控制 HTML 溢出/可见性

css - 堆叠 Bootstrap 3 选项卡上的子导航

javascript - 带下拉菜单的响应式水平菜单

javascript - "click html/deep/#id"在 MeteorJS 模板事件处理程序中不工作

html - IE8继承父元素的宽度

javascript - fullCalendar - 禁用多选日

css - Superfish Css/Jquery 菜单位于 IE7 中的 Flash 内容下

css - Suckerfish 下拉菜单在 IE 8 中不起作用