首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS-3转换错误,菜单出现卡住。

CSS-3转换错误,菜单出现卡住。
EN

Stack Overflow用户
提问于 2016-04-17 13:31:05
回答 4查看 1.7K关注 0票数 15

我正在使用这个名为transit.js的插件来创建一个简单的菜单动画,基本上我有以下菜单:

菜单打开和关闭的代码如下:

代码语言:javascript
复制
$('.main-header .nav-toggle-button').on('click' , function() {

    // $('.main-header .navigation').toggleClass('show');

    if ($('.main-header .navigation').hasClass('show'))  {
        $('.main-header .navigation').stop().removeClass('show');
        return false;
    }

    $('.main-header .navigation').stop().transition({
          perspective: '1000px',
          rotateY: '180deg',
          duration : 0
        }, function() {
          $(this).addClass('show').stop().transition({ rotateY: '0' });
        });

    return false;

}); 

这里的演示,(对不起,小提琴只是没有重现这个问题。)

bug :正如您在关闭时看到没有动画,菜单就会消失,现在这个bug发生在页面滚动超过200px+992px宽度以下时,所以基本上当您单击汉堡包时,菜单会以旋转动画打开,但是当您再次单击汉堡包时,菜单有时不会关闭,即使“显示”类已从菜单中删除。

这是我无法理解的错误之一,在控制台中检查并检查JS代码只是没有真正的帮助。

如果有人能指出我在这里做错了什么,我会非常感激的,因为JS和CSS看起来真的很完美,但是使用临时转换的css转换并不像预期的那样工作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-20 12:34:07

正如前面提到的,似乎是Chrome错误,我试着在您的演示中编辑CSS,这个解决方案似乎有效.在这里尝试将“z索引”添加到-1:

代码语言:javascript
复制
@media (max-width: 992px)
.navigation {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    background: rgba(255,255,255,.95);
    z-index: -1; // ADD THIS
}
票数 9
EN

Stack Overflow用户

发布于 2016-04-24 05:55:42

解决你的问题的另一种方法。

我发现的问题是,在较小的屏幕上,你的迷你菜单出现在点击汉堡包图标。但当再次点击汉堡包图标时,它不会消失。

但是,如果滚动窗口,它将立即消失。因此,我在if语句中添加了两行代码,它们实际上将窗口1px向下滚动,然后1px向上滚动(以保持文档的位置不变)。在if语句中添加以下代码(在return false;行之前)。

代码语言:javascript
复制
window.scrollBy(0, 1);
window.scrollBy(0, -1);
票数 3
EN

Stack Overflow用户

发布于 2016-04-20 11:54:40

我认为您的错误在于您使用hover事件来添加和删除动画,他只是在您的鼠标在元素之上时触发了一次:

代码语言:javascript
复制
/* dropdown */

    $('.navigation .dropdown-menu-item').hover(function() {

      $('.navigation .dropdown-menu-item').find('.dropdown-menu-list').removeClass('opened');

      $(this).find('.dropdown-menu-list').stop().transition({ 'y' : '20px' , duration: 0 } , function() {
        $(this).addClass('opened').stop().transition({ 'y': 0 });
      });

      return false;

    }, function() {

      $(this).find('.dropdown-menu-list').removeClass('opened');

    });

使用mouseentermouseleave事件添加和删除下拉列表动画,这样就可以触发事件结束并离开:

代码语言:javascript
复制
$(document).on('.navigation .dropdown-menu-item', 'mouseenter', function(){
  $('.navigation .dropdown-menu-item').find('.dropdown-menu-list').removeClass('opened');
  $(this).find('.dropdown-menu-list').stop().transition({ 'y' : '20px' , duration: 0 } , function() {
    $(this).addClass('opened').stop().transition({ 'y': 0 });
  });
  return false;
})

$(document).on('.navigation .dropdown-menu-item', 'mouseleave', function(){
  $(this).find('.dropdown-menu-list').removeClass('opened');
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36677209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档