尝试在移动视图中隐藏导航栏 [英] Trying to make nav bar hidden when in mobile view

查看:74
本文介绍了尝试在移动视图中隐藏导航栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我检查并将其放到 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');//切换导航栏burger.addEventListener('click', () => {nav.classList.toggle('nav-active');//动画链接navLinks.forEach((link, index) => {如果(link.getElementsByClassName.animation){link.style.animation = ``;} 别的 {link.style.animation = `navLinkFade 0.5s 缓动前进 ${index/7 + 0.5}s`;}});//汉堡动画burger.classList.toggle('toggle');});}navSlide();

@media screen and (max-width:640px){身体{溢出-x:隐藏;}.导航链接{位置:绝对;右:0px;高度:92vh;顶部:8vh;背景颜色:#5d4954;显示:弹性;弹性方向:列;对齐项目:居中;宽度:50%;变换:translateX(100%);显示:无;}.nav-links li{不透明度:0;}.汉堡包{显示:块;}}.nav-active{变换:translateX(0%);过渡:转换 0.5 秒的缓入;}

<头><meta charset="utf-8"><meta name="viewport" content="width=device-width"><meta name="author" content="刘易斯·哈登"><title>商业网站</title><link rel="stylesheet" href="./css/test2.css" type="text/css"><身体><导航><div class="logo"><h4>导航</h4>

<ul class="nav-links"><li><a href="">首页</a></li><li><a href="">S3</a></li><li><a href="">RS6</a></li><div class="汉堡"><div class="line1"></div><div class="line2"></div><div class="line3"></div>

</nav><script src="app.js"></script></html>

解决方案

将此用于右侧的切换器:

<html lang="zh-cn"><头><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><身体><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导航"><span class="navbar-toggler-icon"></span><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="#">首页 <span class="sr-only">(当前)</span></a><li class="nav-item"><a class="nav-link" href="#">Link</a><li class="nav-item"><a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>

</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></html>

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

这会容易得多:-)

My navbar currently appears like this when I inspect and put it to a mobile device such as iPhone X:

However, I want it to appear like this when in mobile:

... and for the bar to open up as it does when the button is clicked.

To get it looking like I want, I use display:none in CSS however this then means when you click the button to display it nothing appears. My HTML and CSS is as follows:

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>
   

解决方案

Use this for toggler on the right:

<!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>

Try to insert your html and jQuery and not css in the above code.

This would be much easier :-)

这篇关于尝试在移动视图中隐藏导航栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆