Bootstrap 3下拉过渡

cha*_*dan 6 html javascript css jquery twitter-bootstrap

首先,这是小提琴

只是一个常规的bootstrap下拉列表,我对css进行了一些更改,以便在悬停时显示下拉列表(而不是单击),但我如何想要一个非常简单的淡入淡出动画.我尝试过css过渡,但它没有用,因为.dropdown-menu元素有一个'display:none'应用于它,在悬停时它变为'display:block'.如何为从'diplay:none'更改为'display:block'的元素设置动画,还是有其他方法可以实现此目的?

我已经用谷歌搜索了这个并找到了答案,但他们没有帮助.

HTML代码:

<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
    <li role="presentation" class="divider"></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS代码:

.dropdown .dropdown-menu{
opacity: 0;
transition:         all 400ms ease;
-moz-transition:    all 400ms ease;
-webkit-transition: all 400ms ease;
-o-transition:      all 400ms ease;
-ms-transition:     all 400ms ease;
}
.dropdown:hover .dropdown-menu {
    display: block;
    opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

Ilk*_*Cat 11

.dropdown .dropdown-menu {
  display: block;
  visibility: hidden;
  opacity: 0;
  transition:         all 0.2s  ease;
  -moz-transition:    all 0.2s  ease;
  -webkit-transition: all 0.2s  ease;
  -o-transition:      all 0.2s  ease;
  -ms-transition:     all 0.2s  ease;
}
.dropdown:hover .dropdown-menu {
  visibility: visible;
  opacity: 1;
}
.dropdown {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

只需添加display:blockvisibility:hidden;.dropdown .dropdown-menu {.然后加入visibility: visible.dropdown:hover .dropdown-menu {和你做.

您需要更改可见性,因为下拉菜单的不透明度为0但它仍然存在.您可以将鼠标悬停在按钮下进行检查.通过更改可见性,您的下拉菜单将仅在您的按钮悬停时才会出现.


Wil*_*ill 10

您可以使用display:block覆盖display:none的默认样式,因为您还使用opacity:0来隐藏菜单.尝试下面的CSS,看看它是否能满足您的需求.我已经更新了转换速度,使效果更加明显.

.dropdown .dropdown-menu{
    display: block;
    opacity: 0;

    -moz-transition:    all 1000ms ease;
    -webkit-transition: all 1000ms ease;
    -o-transition:      all 1000ms ease;
    -ms-transition:     all 1000ms ease;
    transition:         all 1000ms ease;
}
.dropdown:hover .dropdown-menu {
    display: block;
    opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

您的小提琴的更新版本:http: //jsfiddle.net/pjej7o2m/1/

这是一个jQuery脚本,可以作为将鼠标悬停在div上的替代方法(仍然使用不透明度的css过渡属性)

$(function(){
  var $menu = $('.dropdown-menu');

  $('.dropdown-toggle').hover(
    function() {
      $menu.css('opacity',1);
    },
    function() {
      $menu.css('opacity',0);
    });
})();
Run Code Online (Sandbox Code Playgroud)

更新小提琴:http: //jsfiddle.net/pjej7o2m/2/