【问题标题】:Trying to make nav bar hidden when in mobile view尝试在移动视图中隐藏导航栏
【发布时间】:2019-12-14 13:40:04
【问题描述】:

当我检查并将其放到 iPhone X 等移动设备上时,我的导航栏当前显示如下:

但是,我希望它在移动设备中显示为:

... 并让栏像单击按钮时一样打开。

为了让它看起来像我想要的那样,我在 CSS 中使用 display:none 但这意味着当您单击按钮显示它时,什么都不会出现。我的 HTML 和 CSS 如下:

const navSlide = () => {
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
const navLinks = document.querySelectorAll('.nav-links li');

  //Toggles the nav bar
burger.addEventListener('click', () => {
  nav.classList.toggle('nav-active');

  //animates the links
   navLinks.forEach((link, index) => {
      if (link.getElementsByClassName.animation) {
          link.style.animation = ``;
      } else {
           link.style.animation = `navLinkFade 0.5s ease forwards ${index /7 + 0.5}s`;
      }
   });
   //burger animation
   burger.classList.toggle('toggle');

  });


}

navSlide();
@media screen and (max-width:640px){
    body{
        overflow-x: hidden;
    }
    .nav-links{
        position: absolute;
        right: 0px;
        height: 92vh;
        top: 8vh;
        background-color: #5d4954;
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 50%;
        transform: translateX(100%);
        display: none;
    }        
    .nav-links li{
        opacity: 0;
    }

    .burger{
        display: block;
    }
}
.nav-active{
    transform: translateX(0%);
    transition: transform 0.5s ease-in;
}
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <meta name="author" content="Lewis Haddon">
        <title>Business website</title>
        <link rel="stylesheet" href="./css/test2.css" type="text/css">
   </head>

   <body>
       <nav>
           <div class="logo">
               <h4>The Nav</h4>
           </div>
           <ul class="nav-links">
               <li><a href="">Home</a></li>
               <li><a href="">S3</a></li>
               <li><a href="">RS6</a></li>
           </ul>
           <div class="burger">
               <div class="line1"></div>
               <div class="line2"></div>
               <div class="line3"></div>
           </div>
       </nav>

       <script src="app.js"></script>
   </body>

</html>
   

【问题讨论】:

    标签: javascript html css navbar nav


    【解决方案1】:

    使用visibility: hidden; 作为 CSS。

    您可以使用@media 查询来检测客户端是否在移动环境中使用。

    @media screen and (max-width: 500px) {
        #navID { visibility: hidden; }
    }
    

    【讨论】:

    • 让所有东西都消失在顶行
    【解决方案2】:

    将此代码添加到您的 css 中,您可以将像素从 320 更改为 350 或 300 以用于移动视图

    @media(max-width: 320px) {
        nav{
            display: none;
        }
    }
    

    【讨论】:

    • 当我在 chrome 上检查页面并将设备更改为所有不同的 iphone、google 像素等时看起来仍然相同,该栏仍然位于右侧,上方有一个间隙
    • 清除缓存后尝试,同时在&lt;nav&gt; 中添加一个ID,如&lt;nav id="navbar"&gt;,然后使用css中的ID隐藏它
    • gyazo.com/c0e831df3eb6227a81d37283b58d0065 我已将 nav-active 更改为显示并且正常导航没有打开,因此在我按下按钮之前它不会出现然后看起来像屏幕截图但是当它在你点击之前没有显示时它看起来像这样gyazo.com/51a3304cec91abaad7c999525399b125
    • 当我手动调整桌面上的窗口大小时,它会正常工作,就在我检查和设备出现问题时
    【解决方案3】:

    将这个用于右侧的切换器:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css">
    <link rel="stylesheet" href="style.css">
    <title>Title</title>
    </head>
    <body>
      <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <a class="navbar-brand" href="#">Navbar</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
      
        <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
          <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
            <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="#">Link</a>
            </li>
            <li class="nav-item">
              <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
            </li>
          </ul>
         
        </div>
      </nav>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.15.0/umd/popper.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
    </body>
    </html>

    尝试在上面的代码中插入你的 html 和 jQuery 而不是 css。

    这会容易得多:-)

    【讨论】:

    • 引导程序??我在哪里放什么我没有使用引导程序
    • @tester54321 立即尝试
    • 这与我希望我的来自右侧不一样
    • @tester54321通过正文部分和youo html中的脚本标签与您的jqery协作使用它
    • 我是 html 和 css 的新手,如果这有意义的话,我真的不知道如何解决我的问题/跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多