如何使用js创建全屏覆盖导航菜单

叠加导航是网页设计中广泛使用的导航样式。
它使导航覆盖整个屏幕上的菜单。
在这个片段中,我们将展示如何使用 JavaScript 创建、设计和触发全屏覆盖导航菜单。

我们只需要 openNav() 和 closeNav() 函数。
当我们单击 <span> 元素时,叠加层将打开:

function openNav() {
document.getElementById("nav").style.width = "100%";
}

当我们单击关闭符号时,叠加层将关闭:

function closeNav() {
document.getElementById("nav").style.width = "0%";
}

以下是全屏覆盖导航菜单的几个示例:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      body {
        font-family: 'Veranda', sans-serif;
      }
      span {
        font-size: 22px;
        cursor: pointer
      }
      .overlay {
        height: 100%;
        width: 0;
        position: fixed;
        z-index: 1;
        top: 0;
        left: 0;
        background-color: #001536;
        overflow-x: hidden;
        transition: 0.5s;
      }
      .overlay-content {
        position: relative;
        top: 30%;
        width: 100%;
        text-align: center;
        margin-top: 30px;
      }
      .overlay a {
        padding: 10px;
        text-decoration: none;
        font-size: 32px;
        color: #7792a3;
        display: block;
        transition: 0.4s;
      }
      .overlay a:hover,
      .overlay a:focus {
        color: #eeeeee;
      }
      .overlay .close {
        position: absolute;
        top: 10px;
        right: 35px;
        font-size: 50px;
      }
      @media screen and (max-height: 450px) {
        .overlay a {
          font-size: 20px
        }
        .overlay .closed {
          font-size: 40px;
          top: 15px;
          right: 35px;
        }
      }
    </style>
  </head>
  <body>
    <div id="nav" class="overlay">
      <a href="javascript:void(0)" class="closed" onclick="closeNav()">&times;</a>
      <div class="overlay-content">
        <a href="#">Books</a>
        <a href="#">Quizzes</a>
        <a href="#">Snippets</a>
        <a href="#">Tools</a>
      </div>
    </div>
    <span onclick="openNav()">&#9776; Click Here</span>
    <script>
      function openNav() {
        document.getElementById("nav").style.width = "100%";
      }
      function closeNav() {
        document.getElementById("nav").style.width = "0%";
      }
    </script>
  </body>
</html>

让我们看另一个漂亮的全屏覆盖导航菜单示例:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      body {
        background-image: url("bg.png");
        height: 500px;
        background-position: center;
        background-repeat: no-repeat;
        background-size: cover;
        position: relative;
      }
      .lower {
        width: 340px;
        margin: 30% auto;
        padding: 35px;
        background: #fcd8c2;
        opacity: 0.8;
        color: black;
        box-shadow: inset 0 0 0 1px black;
        border: 30px solid #fcd8c2;
      }
      .lower:hover {
        background: #000000;
        color: white;
        box-shadow: inset 0 0 0 1px #ffffff;
        border: 30px solid #000000;
      }
      input {
        display: none;
      }
      .lower label {
        text-transform: uppercase;
        font-size: 40px;
        text-align: center;
      }
      .lower label:hover {
        cursor: pointer;
      }
      .overlay {
        position: fixed;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        background: rgba(0, 0, 0, 0.9);
      }
      .overlay label {
        width: 58px;
        height: 58px;
        position: absolute;
        right: 30px;
        top: 40px;
        background: url('cross.png');
        z-index: 100;
        cursor: pointer;
      }
      .overlay nav {
        text-align: center;
        position: relative;
        top: 50%;
        height: 60%;
        font-size: 34px;
        -webkit-transform: translateY(-50%);
        transform: translateY(-50%);
      }
      .overlay ul {
        list-style: none;
        padding: 0;
        margin: 0 auto;
        display: inline-block;
        height: 100%;
        position: relative;
      }
      .overlay ul li {
        display: block;
        height: 20%;
        height: calc(100%/5);
        min-height: 54px;
      }
      .overlay ul li a {
        font-weight: 300;
        display: block;
        color: white;
        text-decoration: none;
        -webkit-transition: color 0.2s;
        transition: color 0.2s;
        font-family: 'NotCourierSans';
        text-transform: uppercase;
      }
      .overlay ul li a:hover,
      .overlay ul li a:focus {
        color: #f7bb97;
      }
      .lower~.overlay-hugeinc {
        opacity: 0;
        visibility: hidden;
        -webkit-transition: opacity 0.5s, visibility 0s 0.5s;
        transition: opacity 0.5s, visibility 0s 0.5s;
      }
      #op:checked~.overlay-hugeinc {
        opacity: 1;
        visibility: visible;
        -webkit-transition: opacity 0.5s;
        transition: opacity 0.5s;
      }
      .overlay-hugeinc nav {
        -moz-perspective: 300px;
      }
      .overlay-hugeinc nav ul {
        opacity: 0.4;
        -webkit-transform: translateY(-25%) rotateX(35deg);
        transform: translateY(-25%) rotateX(35deg);
        -webkit-transition: -webkit-transform 0.5s, opacity 0.5s;
        transition: transform 0.5s, opacity 0.5s;
      }
      #op:checked~.overlay-hugeinc nav ul {
        opacity: 1;
        -webkit-transform: rotateX(0deg);
        transform: rotateX(0deg);
      }
      #op:not(:checked)~.overlay-hugeinc nav ul {
        -webkit-transform: translateY(25%) rotateX(-35deg);
        transform: translateY(25%) rotateX(-35deg);
      }
    </style>
  </head>
  <body>
    <input type="checkbox" id="op"></input>
    <div class="lower">
      <label for="op">click the text</label>
    </div>
    <div class="overlay overlay-hugeinc">
      <label for="op"></label>
      <nav>
        <ul>
          <li><a href="#">Books</a></li>
          <li><a href="#">Quizzes</a></li>
          <li><a href="#">Snippets</a></li>
          <li><a href="#">Tools</a></li>
          <li><a href="#">String Functions</a></li>
        </ul>
      </nav>
    </div>
  </body>
</html>
日期:2020-06-02 22:16:15 来源:oir作者:oir