【问题标题】:Navigation menu can't hide/show (Responsive Design)导航菜单无法隐藏/显示(响应式设计)
【发布时间】:2015-03-13 22:42:25
【问题描述】:

这是我提供的编码。这是为了响应式设计。当我点击徽标时,它不想隐藏或显示。

.toggle-nav {
  display: none;
}
.menu {
  float: right;
}
.menu ul {
  display: inline-block;
}
.menu li {
  float: left;
  list-style: none;
  font-size: 17px;
  text-align: right;
}
.menuLink a {
  font-size: 20px;
  color: #FFF;
  margin: 20px;
  padding: 10px;
  text-decoration: none;
  float: left;
  font-family: 'alegreya_sansregular';
  cursor: pointer;
}
.menuLink a:hover,
.menu .current-item a {
  border-bottom: 4px double #FFF;
}
.fixedPosition {
  position: fixed !important;
  top: 0;
  left: 0;
}
@media only screen and (max-width: 820px) {
  .menu {
    position: relative;
    display: inline-block;
  }
  .menu ul.active {
    display: none;
  }
  .menu ul {
    width: 100%;
    position: absolute;
    top: 90%;
    left: -55px;
    padding: 10px 18px;
    box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
    border-radius: 3px;
    background: #cecece;
  }
  .menu ul:after {
    width: 0px;
    height: 0px;
    position: absolute;
    top: 0%;
    left: 87px;
    content: '';
    transform: translate(0%, -100%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-bottom: 7px solid #cecece;
  }
  .menu li {
    margin: 5px 0px;
    float: none;
    display: inline-block;
  }
  .menuLink a {
    display: block;
    font-size: 15px;
    margin: 10px 0;
    padding: 5px 0;
    float: none;
  }
  .menuLink a:hover,
  .menu .current-item a {
    border-bottom: none;
    color: #666;
  }
  .toggle-nav {
    padding: 20px;
    float: left;
    display: inline-block;
    box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
    border-radius: 3px;
    background: #cecece;
    color: #777;
    font-size: 20px;
    transition: color linear 0.15s;
  }
  a.toggle-nav {
    padding: 10px;
    margin: 20px;
  }
  .toggle-nav:hover,
  .toggle-nav.active {
    color: #C3c3c3;
    border-bottom: none;
    position: relative;
  }
}
<nav class="menu">
  <ul class="menuLink">
    <li> <a class="link-nav" data-scroll-nav="0"> HOME </a> 
    </li>
    <li> <a href="works"> WORKS </a> 
    </li>
    <li> <a data-scroll-nav="2"> ABOUT </a> 
    </li>
    <li> <a data-scroll-nav="3"> CONTACT </a> 
    </li>
  </ul>
  <a class="toggle-nav" href="#">&#9776;</a>
</nav>

这里是JSFIDDLE

在我点击之前,菜单一直停留在那里并且不想隐藏。我想要的是菜单必须先隐藏,然后再单击徽标。并且菜单可以在显示时单击徽标后隐藏。有什么想法吗?

【问题讨论】:

    标签: html css


    【解决方案1】:

    只需使用这个 jquery

    $('.toggle-nav').click(function(){
        $(this).parent().find('.menuLink').toggle();
    });
    

    FIDDLE

    【讨论】:

    • 这真的很管用。无论如何,一开始如何隐藏菜单?我不希望在单击徽标菜单之前显示菜单。
    • 只需在菜单 css 中设置 display:none。 (.menuLink {display:none} )
    • 不,它不起作用。菜单仍在显示。我试过用.menu {display:none;} 还是不行。你能在你的 JSFiddle 上试试这个吗?谢谢。
    • .menu ul {display:none;} 这个正在工作。顺便谢谢。
    • 您可以尝试使用 slideToggle('slow') 而不是 toggle() 以获得更好的菜单打开/关闭操作效果。不客气。
    【解决方案2】:

    这是我的扩展和动画菜单示例。

    https://jsfiddle.net/9bn5t0kj/8/

    $('.menu-header').on('click', function() {
        $(this).next().toggleClass('menu-item-open');
        $('.menu-item').not($(this).next()).removeClass('menu-item-open');
    });
    
    $(document).on('click', function(e) {
        var clickedItem = $(e.target);
        
        if (clickedItem.is($('.menu-header')) || clickedItem.is($('.menu-item'))) {
            console.log(clickedItem);
            return;
        }
            
        $('.menu-item').removeClass('menu-item-open');
    });
    .menu-item-container {
        float: left;
    }
    
    .menu-header {
        -webkit-user-select: none;
        cursor: pointer;
    }
    
    .menu-item {
        height: 0;
        overflow: hidden;
        -webkit-transition: height .25s;
    }
    
    .menu-item-open {
        height: 200px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="menu">
        <div class="menu-item-container">
            <div class="menu-header">Open 1</div>
            <div class="menu-item">
                Hej hopp!<br>
                Hej hopp!<br>
                Hej hopp!<br>
                Hej hopp!<br>
                Hej hopp!<br>
            </div>
        </div>
        <div class="menu-item-container">
            <div class="menu-header">Open 2</div>
            <div class="menu-item">
                Hej hopp 2!<br>
                Hej hopp 2!<br>
                Hej hopp 2!<br>
                Hej hopp 2!<br>
                Hej hopp 2!<br>
            </div>
        </div>

    【讨论】:

      【解决方案3】:

      您可以默认使用jQuery .hide() 隐藏它,并在单击.toggle-nav 时显示它。这很简单。

      $(document).ready(function() {
        $('.menuLink').hide();
        $('.toggle-nav').click(function() {
          $('.menuLink').toggle();
        });
      });
      .toggle-nav {
        display: none;
      }
      .menu {
        float: right;
      }
      .menu ul {
        display: inline-block;
      }
      .menu li {
        float: left;
        list-style: none;
        font-size: 17px;
        text-align: right;
      }
      .menuLink a {
        font-size: 20px;
        color: #FFF;
        margin: 20px;
        padding: 10px;
        text-decoration: none;
        float: left;
        font-family: 'alegreya_sansregular';
        cursor: pointer;
      }
      .menuLink a:hover,
      .menu .current-item a {
        border-bottom: 4px double #FFF;
      }
      .fixedPosition {
        position: fixed !important;
        top: 0;
        left: 0;
      }
      @media only screen and (max-width: 820px) {
        .menu {
          position: relative;
          display: inline-block;
        }
        .menu ul.active {
          display: none;
        }
        .menu ul {
          width: 100%;
          position: absolute;
          top: 90%;
          left: -55px;
          padding: 10px 18px;
          box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
          border-radius: 3px;
          background: #cecece;
        }
        .menu ul:after {
          width: 0px;
          height: 0px;
          position: absolute;
          top: 0%;
          left: 87px;
          content: '';
          transform: translate(0%, -100%);
          border-left: 7px solid transparent;
          border-right: 7px solid transparent;
          border-bottom: 7px solid #cecece;
        }
        .menu li {
          margin: 5px 0px;
          float: none;
          display: inline-block;
        }
        .menuLink a {
          display: block;
          font-size: 15px;
          margin: 10px 0;
          padding: 5px 0;
          float: none;
        }
        .menuLink a:hover,
        .menu .current-item a {
          border-bottom: none;
          color: #666;
        }
        .toggle-nav {
          padding: 20px;
          float: left;
          display: inline-block;
          box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
          border-radius: 3px;
          background: #cecece;
          color: #777;
          font-size: 20px;
          transition: color linear 0.15s;
        }
        a.toggle-nav {
          padding: 10px;
          margin: 20px;
        }
        .toggle-nav:hover,
        .toggle-nav.active {
          color: #C3c3c3;
          border-bottom: none;
          position: relative;
        }
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <nav class="menu">
        <ul class="menuLink">
          <li> <a class="link-nav" data-scroll-nav="0"> HOME </a> 
          </li>
          <li> <a href="works"> WORKS </a> 
          </li>
          <li> <a data-scroll-nav="2"> ABOUT </a> 
          </li>
          <li> <a data-scroll-nav="3"> CONTACT </a> 
          </li>
        </ul>
        <a class="toggle-nav" href="#">&#9776;</a>
      </nav>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-17
        • 1970-01-01
        相关资源
        最近更新 更多