【问题标题】:jquery takes away navigation barjquery 带走导航栏
【发布时间】:2018-10-24 14:38:53
【问题描述】:

当我的网站窗口很小(移动视图)并且用户点击汉堡菜单时,我使用 jquery 淡入导航菜单。当我在导航之外单击时,它会淡出导航菜单。

如果我将窗口大小调整为更大,我的导航栏应该自行调整大小,但它甚至不存在。我猜是因为我用 jquery 淡化了它。

我尝试让脚本仅在窗口大小小于特定大小时运行,但当我调整大小时导航菜单仍然消失。

我该如何解决这个问题?

jquery 脚本

//fades in
$("#mobileNav").click(function(){

  $(".nav").fadeIn("slow");
  event.stopPropagation();

})


// fade out on click outside of navigation menu
window.onclick = function(event) {
  if (!event.target.matches('.nav')) {
    isSmallWindow = $(window).width() < 600;
    if(isSmallWindow) {
      $(".nav").fadeOut("slow");
    }
  }

$(window).resize(function() {

        isBigWindow = $(window).width() > 600;
            if(isBigWindow) {
                            $(".nav").show();
            }
                    });

html

            <div id="mobileNav" class="mobileNavContainer floatLeft">
                <div class="bar1"></div>
                    <div class="bar2"></div>
                    <div class="bar3"></div>
                </div>

            <div id="para1" class="floatLeft"></div>

            </div>




        <!----------  NAVIGATION  ---------->
        <div class="nav">




                <!-- link icons have custom css - icon -->
                <a href="index.php?page=clients" title="Clients">
                    <span class="navIcon">
                        <i class="fa fa-users icon" aria-hidden="true"></i>
                    </span>
                    <span class="navText">
                        Clients
                    </span>
                </a>

                <a href="index.php?page=invoices" title="Invoices">
                    <span class="navIcon">
                        <i class="fas fa-file-invoice icon"></i>
                    </span>
                    <span class="navText">
                        Invoices
                    </span>
                </a>



        </div>

【问题讨论】:

  • 调整页面大小然后重新加载时是否也会出现这种情况?
  • 您需要在 windows resize 事件处理程序上添加相同的功能。点赞window.resize = funciton(event) { 也可以尝试分享你的代码的HTML,在这里加个sn-p,方便别人帮忙
  • 因此,要么在调整大小超过 X 大小时将其淡入,要么添加样式以强制其可见。
  • 你可以通过 CSS 媒体查询和过渡更可靠地做到这一点
  • @ADyson 问题是元素将通过样式隐藏,因此只有绕过它的方法很重要......

标签: javascript jquery


【解决方案1】:

您可能需要添加一个调整大小事件来检查窗口是否大于 600,否则它将永远不知道何时再次显示导航。

$(window).on('resize', function(e){
  if($(this).width() > 600 && $('.nav:visible').length == 0){
   $('.nav').fadeIn();
  }
});

【讨论】:

  • 我这样做了,它成功了,但是我开始遇到其他问题,最后只是创建了另一个类并切换了类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2013-06-13
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多