【问题标题】:How to move nav items off the screen when viewing on mobile在移动设备上查看时如何将导航项目移出屏幕
【发布时间】:2019-09-07 12:32:31
【问题描述】:

我正在学习如何为移动设备构建汉堡菜单。

我已经构建了一个包含三个孩子的导航。标志、导航项目和汉堡菜单。我使用 flexbox 将它们并排放置并在桌面上的汉堡菜单上显示:none 以最初将其隐藏。

我尝试过使用相对/绝对位置,但效果不佳。此外,将 flex-direction: row 更改为 column 也无济于事。

这是导航栏的标记

<nav class="nav">
  <div class="brand"><h4>The Brand</h4></div>

  <div class="navigation">
    <ul class="navigation__list">
      <li class="navigation__item">
        <a href="#">Home</a>
      </li>
      <li class="navigation__item">
        <a href="#">About</a>
      </li>
      <li class="navigation__item">
        <a href="#">Services</a>
      </li>
      <li class="navigation__item">
        <a href="#">Gallery</a>
      </li>
      <li class="navigation__item">
        <a href="#">Blog</a>
      </li>
      <li class="navigation__item">
        <a href="#">Contact</a>
      </li>
    </ul>
  </div>

  <button class="hamburger">
    <span class="hamburger__box">
      <span class="hamburger__inner"></span>
    </span>
  </button>
</nav>

我想要实现的是:在移动设备上,应该出现汉堡菜单。导航项目应从屏幕上消失,并应垂直放置。我希望它们在单击汉堡时从右侧滑入。

codepen:https://codepen.io/kowalik9412/pen/WNeMQrO

【问题讨论】:

    标签: javascript html css mobile responsive


    【解决方案1】:

    只需使用引导程序。

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" crossorigin="anonymous"></script>
    
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    
    
    
    <nav class="navbar navbar-expand-lg navbar-light bg-white">
      <a class="navbar-brand" href="#"><h4>The Brand</h4></a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
    
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">About</a>
          </li>
                <li class="nav-item">
            <a class="nav-link" href="#">Services</a>
          </li>
                <li class="nav-item">
            <a class="nav-link" href="#">Gallery</a>
          </li>
                <li class="nav-item">
            <a class="nav-link" href="#">Blog</a>
          </li>
                <li class="nav-item">
            <a class="nav-link" href="#">Contact</a>
          </li>
            </div>
          </li>
        </ul>
    
      </div>
    </nav>

    【讨论】:

      【解决方案2】:

      您必须在导航 div 类列表中切换一个类。您的 javascript 代码如下。

      const handleClick = () => {
        navigation.classList.toggle("show");
      };
      

      并且您必须为导航类添加媒体 css。媒体css代码如下。

      @media (max-width: 700px) {
        .navigation.show {
          display: none;
        }
        .navigation.show {
          display: block;
        }
      }
      

      然后您必须根据您的要求设置剩余的设计。此代码只是帮助您最初在移动设备中隐藏菜单并在您单击汉堡菜单按钮时打开它。

      谢谢。

      【讨论】:

        猜你喜欢
        • 2021-06-05
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-22
        • 1970-01-01
        • 2019-06-13
        相关资源
        最近更新 更多