skip to Main Content

Whenever I’m scrolling my mouse, all the listed admin cards come over the navbar. This is a very irritating flaw and I can’t seem to understand where I went wrong. Any help would be appreciated. Thanks!

#mainsec {
  height: 100vh;
  width: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
#navv {
  background-color: #333; /* Black background color */
  position: fixed; /* Make it stick/fixed */
  top: 0; /* Stay on top */
  width: 100%; /* Full width */
  transition: top 0.3s; /* Transition effect when sliding down (and up) */
}

#navv a:hover {
  background-color: rgba(221, 221, 221, 0.568);
  color: black;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <!-- Required meta tags -->
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <!-- Bootstrap CSS -->
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous" />
  <link rel="stylesheet" type="text/css" href="../../css/admin_dash.css">

  <nav class="navbar navbar-expand-lg navbar-dark bg-dark" id="navv">
    <div class="container-fluid">
      <a class="navbar-brand" href="#">
        <img src="../../assets/logo.png" alt="" width="30" height="24" class="d-inline-block align-text-top"> Phemesoft
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
          </button>
      <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
        <div class="navbar-nav">
          <a class="nav-link active" aria-current="page" href="#sec1">Admins</a>
          <a class="nav-link" href="#sec2">Manage Admins</a>
          <a class="nav-link" href="#sec3">Course Content</a>
          <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
        </div>
      </div>
    </div>
  </nav>
  <div class="container">
    <div class="column">
      <div id="sec1">
        <div class="row" id="mainsec">
          <div class="col-sm-6">
            <h2>Admins</h2>
          </div>
          <div class="col-sm-6">
            <div class="row">
              <div class="col-sm-5 cards-wrapper"></div>
            </div>
          </div>
        </div>
      </div>
      <div id="sec2">
        <div class="row" id="mainsec">
          <div class="col-sm-6">
            <h1>User to Admin</h1>
          </div>
          <div class="col-sm-6">
            <form class="form" action="makeadmin" method="POST">
              Enter email:
              <input type="email" placeholder="Email" name="email">
              <button type="submit" class="btn btn-light">Check</button>
            </form>
          </div>
        </div>
      </div>
      <div id="sec3">
        <div class="col-sm-6" id="mainsec">
          <h1>Add course content</h1>
        </div>
      </div>
    </div>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  <script>
    $.ajax({
      url: "listadmins",
      type: "GET",
      success: function(response) {
        var $results = $(".cards-wrapper");
        for (var a = 0; a < response.length; a++) {
          // console.log(response[a].Name);
          $results.append(
            '<div class="card"><div class="card-body"><h6 class="card-title">' +
            response[a].Name +
            '</h6></div></div>'
          );
        }
      }
    });
  </script>
  <script>
    var prevScrollpos = window.pageYOffset;
    window.onscroll = function() {
      var currentScrollPos = window.pageYOffset;
      if (prevScrollpos > currentScrollPos) {
        document.getElementById("navv").style.top = "0";
      } else {
        document.getElementById("navv").style.top = "-50px";
      }
      prevScrollpos = currentScrollPos;
    };
  </script>
  </body>
</html>

Here’s an image of the issue:
The card appears over then nav bar

Ps: I haven’t posted the mapping of /listadmins because it;s just normal Database query

3

Answers


  1. Chosen as BEST ANSWER

    Thanks all of guys for responding. I found the answer in one the comments. It was to use a higher z-index value for the navbar.

    #navv {
      background-color: #333; /* Black background color */
      position: fixed; /* Make it stick/fixed */
      top: 0; /* Stay on top */
      width: 100%; /* Full width */
      transition: top 0.3s; /* Transition effect when sliding down (and up) */
      z-index: 2;
    }
    

  2. remove ‘position: relative’ from the card class

    enter image description here

    Login or Signup to reply.
  3. This has nothing to do with the ajax directly but more the rest of the page.

    Your html is invalid

    • head tag not closed
    • body tag not opened
    • duplicate id mainsec – not using them really so I made them a class and removed the id’s
    • some other invalid markup

    Hard to see the issue here so I adjusted the size slightly for this site

    Now that we got that strait, you can adjust the margins and padding on the tops with mt-5 pt-4 however you wish, toy around with this and see where you get things to move.

    .mainsec {
      height: 5em;
      width: 90%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    #navv {
      background-color: #333;
      position: fixed;
      top: 0;
      width: 100%;
      transition: top 0.3s;
    }
    
    #navv a:hover {
      background-color: rgba(221, 221, 221, 0.568);
      color: black;
    }
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1" />
      <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous" />
      <link rel="stylesheet" type="text/css" href="../../css/admin_dash.css">
    </head>
    
    <body>
      <nav class="navbar navbar-expand-lg navbar-dark bg-dark" id="navv">
        <div class="container-fluid">
          <a class="navbar-brand" href="#">
            <img src="../../assets/logo.png" width="30" height="24" class="d-inline-block align-text-top" alt="Phemesoft logo">
          </a>
          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
              </button>
          <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
            <div class="navbar-nav">
              <a class="nav-link active" aria-current="page" href="#sec1">Admins</a>
              <a class="nav-link" href="#sec2">Manage Admins</a>
              <a class="nav-link" href="#sec3">Course Content</a>
              <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
            </div>
          </div>
        </div>
      </nav>
      <div class="container mt-6">
        <div class="">
          <div id="sec1">
            <div class="mainsec mt-5">
              <div class="col-sm-3">
                <h2>Admins</h2>
              </div>
              <div class="col-sm-7 mt-5 pt-4">
                <div class="row">
                  <div class="col-sm-8 cards-wrapper">
                    <div class="cards-wrapper">
                      <div class="card">
                        <div class="card-body">
                          <h6 class="card-title">Pretend append
                          </h6>
                        </div>
                      </div>
                      <div class="card">
                        <div class="card-body">
                          <h6 class="card-title">Pretend append
                          </h6>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="row" id="sec2">
            <div class="row mainsec">
              <div class="col-sm-6">
                <h1>User to Admin</h1>
              </div>
              <div class="col-sm-6">
                <form class="form" action="makeadmin" method="POST">
                  Enter email:
                  <input type="email" placeholder="Email" name="email">
                  <button type="submit" class="btn btn-light">Check</button>
                </form>
              </div>
            </div>
          </div>
          <div class="row"  id="sec3">
            <div class="col-sm-6 mainsec">
              <h1>Add course content</h1>
            </div>
          </div>
        </div>
      </div>
      <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
      <script>
        $.ajax({
          url: "listadmins",
          type: "GET",
          success: function(response) {
            var $results = $(".cards-wrapper");
            for (var a = 0; a < response.length; a++) {
              $results.append(
                '<div class="card"><div class="card-body"><h6 class="card-title">' +
                response[a].Name +
                '</h6></div></div>'
              );
            }
          }
        });
    
        var prevScrollpos = window.pageYOffset;
        window.onscroll = function() {
          var currentScrollPos = window.pageYOffset;
          if (prevScrollpos > currentScrollPos) {
            document.getElementById("navv").style.top = "0";
          } else {
            document.getElementById("navv").style.top = "-50px";
          }
          prevScrollpos = currentScrollPos;
        };
      </script>
    </body>
    
    </html>
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search