javascript - CSS Webkit 转换不起作用

标签 javascript css bootstrap-4 transform transition

我是 Web 编程的新手,但遇到了一个问题。我想在我的下拉菜单中添加一个过渡,以便菜单本身从底部弹出并消失到底部。我添加了此代码,其中 translateY 为 50px 和缓入缓出过渡,但下拉列表似乎是静态的...

HTML:

    <div class="right-menu list-inline no-margin-bottom">
    <div class="list-inline-item dropdown">
      <a id="settings" rel="nofollow" data-target="#" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="nav-link setting dropdown-toggle"><span class="d-none d-sm-inline-block"><i class="fa fa-user-circle-o"></i> Jean Dupont</span></a>
      <div aria-labelledby="settings" class="dropdown-menu">
        <a rel="nofollow" href="#" class="dropdown-item"> <span>Option 1</span></a>
        <a rel="nofollow" href="#" class="dropdown-item"> <span>Option 2</span></a>
        <a rel="nofollow" href="#" class="dropdown-item"> <span>Option 3</span></a>
        <a rel="nofollow" id="logout" href="#" class="dropdown-item nav-link">Logout <i class="icon-logout"></i></a>
      </div>
    </div>
    <div class="list-inline-item logout">
      <a href="#" id="logout" class="nav-link">Logout <i class="icon-logout"></i></a>
    </div>
  </div>

CSS:

   nav.navbar .dropdown .dropdown-menu {

 -webkit-transform: translateY(50px);
 transform: translateY(50px);
 -webkit-transition: all 0.3s ease-in-out;
 transition: all 0.3s ease-in-out; 

}

  nav.navbar .dropdown .dropdown-menu.active {

-webkit-transform: translateY(0);
transform: translateY(0);

}

 nav.navbar .dropdown-item {

padding: 1rem !important;
border-bottom: 1px solid #393c43;

}

这里似乎有错误,但我不确定:

     -webkit-transform: translateY(50px);
     transform: translateY(50px);
     -webkit-transition: all 0.3s ease-in-out;
     transition: all 0.3s ease-in-out; 

我应该修复什么?谢谢!

最佳答案

问题不在于 -webkit-transform-webkit-transition ,您的动画开始工作然后停止工作,因为 bootstrap 正在修改 style 属性在 html 中,它比 class 中的 css 具有更高的优先级,因此要覆盖样式和动画 bootstrap 提供您需要在 dropdownstyle 属性中应用样式,

仅修改 trabslateY 是行不通的,因为您需要覆盖 translate3D,这些更改需要在 show 上进行,并且dropdownbootstraphide 事件在隐藏 dropdwon 时使用 display:none所以你也需要覆盖它并使用 opacity

$('.dropdown').on('show.bs.dropdown', function() {
    $(this).find('.dropdown-menu').first().css({ 
        'transform' : 'translate3d(5px, 40px , 0px)',
        'visibility' : 'visible',
        'opacity' : 1
    });
});

$('.dropdown').on('hide.bs.dropdown', function() {      
    $(this).find('.dropdown-menu').first().css({ 
        'transform' : 'translate3d(5px, 100px , 0px)',
        'display' : 'block',
        'visibility' : 'hidden',
        'opacity' : 0
    }, function(){ console.log('ended'); });
});

这是一个 fiddle :https://jsfiddle.net/xpvt214o/19338/

关于javascript - CSS Webkit 转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49599155/

相关文章:

javascript - 有没有办法在打开页面之前更改页面的元素

html - Bootstrap v.4.1 - 输入中断中的图标

javascript - 将 UTM 值从 URL 推送到隐藏字段的脚本 (Webflow)

javascript - d3.js 带标签的强制定向树

css - Bootstrap "form-horizontal"和标签

css - 具有边框的元素的背景图像应覆盖边框

javascript - 单击上一个/下一个按钮,我想突出显示下一个或上一个图像

Javascript sleep() 函数提前执行

javascript - 如何在javascript下划线模板中转义<>?

javascript - 工具提示中的 HTML 表格未使用 Bootstrap 4.3.1 显示