【问题标题】:Responsive menu not working on WordPress响应式菜单不适用于 WordPress
【发布时间】:2017-06-07 18:18:20
【问题描述】:

当我将我的网站转换为 WordPress 时,我意识到我的响应式菜单无法正常工作。 ul 不是隐藏菜单并显示应该切换菜单的汉堡按钮,而是始终可见,并且似乎不受任何 jquery 代码的影响。有人会碰巧对如何纠正这个问题有任何想法吗? 提前感谢大家的关注。

HTML:

<nav>
  <a href="#" id="burger_menu"><i class="fa fa-bars"></i></a>
  <?php
    wp_nav_menu(array(
      'theme_location'  => 'primary',
      'container'       => 'div'
    ));
  ?>
</nav>

CSS:

header nav #burger_menu {
  padding-right: 20px;
  font-size: 40px;
  display: none;
  color: #fff;
}

header nav .menu ul {
  display: block;
  line-height: 0;
}

header nav .menu ul li {
  padding: 10px;
  display: inline-block !important;
  float: left;
}

@media screen and (max-width: 1023px) {
  /* NAV */
  header nav #burger_menu {
    display: inline-block;
  }

  header nav ul {
    background: rgba(98,194,210,0.85) !important;
    line-height: 10px !important;
  }

  header nav ul,
  nav:active ul {
    display: none !important;
    position: absolute;
    padding: 20px 40px;
    background: #62c2d2;
    right: 0;
    top: 80px;
    width: 30%;
  }
}

jQuery:

//RESPONSIVE NAV
$('#burger_menu').on('click', function(e) {
  e.preventDefault();
  $('header ul').toggle();
  $('header ul').mouseleave(function() {
    $('header ul').css('display', 'none !important');
  });
});

【问题讨论】:

    标签: jquery html css wordpress


    【解决方案1】:

    您绑定click event 两次,其中第一次用于显示,第二次用于隐藏菜单,因此当您单击链接时,它将立即显示然后立即隐藏,因此请尝试使用toggle() 之类的,

    //RESPONSIVE MENU
    $('#burger_menu').on('click', function(e) {
        e.preventDefault();
        $('header nav .menu ul').toggle();
    }
    

    【讨论】:

    • 亲爱的 Rohan,非常感谢您的帮助。我采用了您的解决方案并对其进行了调整,但是它似乎仍然没有做任何事情。当调整到较小的屏幕时,菜单似乎正在显示(而不是隐藏),当我单击汉堡按钮或鼠标离开 ul 时,没有任何反应。注意:我已经更新了 jQuery 代码
    • 我建议您尝试使用 Bootstrap Framework 来实现响应性,请参阅 getbootstrap.com/getting-started/#examples-navbars 上的导航栏
    • 我使用 Foundation 6,它也有一个响应式菜单选项,但决定自己编写代码以用于样式偏好,所以希望我能解决这个问题,但感谢 Rohan 的提示。
    • 好的,窗口大小调整需要在$(window).width()的基础上添加事件$(window).on('resize',function(){/**code to show/hide menu*/});
    • 是的,我试过了,但必须删除它,因为我希望它适用于较小的设备,而无需手动触发窗口调整大小事件。但再次感谢您对 Rohan 的宝贵建议。
    【解决方案2】:

    您似乎使用了错误的媒体查询。查找较小屏幕的媒体查询,还是只使用一个?

    @media screen and (max-width: 1023px)
    

    在适用的情况下,还将 px 更改为 %。

    如果你能发布一个 url 或 dev url,我会更有帮助。

    【讨论】:

    • 嗨,大卫,非常感谢您抽出宝贵时间帮助我。我确实有几个屏幕查询,例如@media screen and (max-width: 639px)@media screen and (min-width: 1281px),但我不明白的是在将其转换为wordpress 菜单之前它工作得很好,所以如果有一些我无法使用的wp 规则,我就会徘徊覆盖。
    • 我不知道看不到东西,也许您正在使用 css,现在您正在使用 scss - 尝试将 .css 文件更改为 .scss 您需要更改 639px 中的代码让它在> 639px的屏幕上响应。我唯一能盲目想到的另一件事是您可能已经编辑了一段时间并且它保存在您的缓存中 - 它在您的浏览器上看起来是正确的。
    • 最后我终于找到了问题所在,就是玩nav ul显示值,而不是在.menu上使用。但再次感谢您的时间和关注,大卫,非常感谢。
    猜你喜欢
    • 2017-11-21
    • 2014-07-30
    • 2023-03-09
    • 2015-07-05
    • 2014-01-13
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多