html - 使用位置 : fixed; 时导航栏不在原地

标签 html css navbar

我试图阻止我的导航栏与页面的其余部分一起滚动。

html代码的相关部分是:

     <body>
                    <?php include("includes/navbar.php"); ?>

                    <div class="container">
                        <div class="placeholder">
                        <img class="img1" src="images/logo.gif" alt="BCIC Logo">
<h1>Text Here</h1> 
    <p>More paragraphs here</p>
                        </div>
                    </div>
            <script>
            function myFunction() {
                var x = document.getElementById("myTopnav");
                if (x.className === "topnav") {
                    x.className += " responsive";
                } else {
                    x.className = "topnav";
                }
            }
            </script>
        </body>

navbar.php 的 html 代码:

<div class="topnav" id="myTopnav">
    <!-- show menu icon on small screen-->
      <a href="javascript:void(0);" style="font-size:15px;" class="icon" onclick="myFunction()">&#9776;</a>
        <?php
        if ($page == 6){
        echo '<a href="contact.php" class="active">Contact us</a>';
      }
      else{
      echo '<a href="contact.php">Contact</a>';
      }
          if ($page == 5){
        echo '<a href="join.php" class="active">Get Involved</a>';
      }
      else{
      echo '<a href="join.php">Get Involved</a>';
      }
        if ($page == 4){
        echo '<a href="forms.php" class="active">Forms</a>';
      }
      else{
      echo ' <a href="forms.php">Forms</a>';
      }
      if ($page == 3){
        echo '<a href="documents.php" class="active">Documents</a>';
      }
      else{
      echo ' <a href="documents.php">Documents</a>';
      }
       if ($page == 2){
        echo ' <a href="about.php" class="active">About</a>';
      }
      else{
      echo ' <a href="about.php">About</a>';
      }
       if ($page == 1){
            echo ' <a href="index.php" class="active">Home</a>';
      }
      else{
      echo ' <a href="index.php">Home</a>';
      }
      ?>
 </div>

CSS 是:

    .container{
        /* Main content */
         width: 100%;
        margin-top: 5px; /* Add a top margin to avoid content overlay */
    }
    .placeholder{
        display: block;
        width: 100%;
        padding: 20px 0px;
        background-color: #846da2;
        text-align: center;
        }

        .topnav {
           background-color: #ffffff;
           opacity: 0.8;
            overflow: hidden;
              }
        .topnav a {
            float: right;
            display: block;
            color: #846da2;
            text-align: center;
            padding: 14px 16px 10px 16px;
            text-decoration: none;
            font-weight: bold;
            font-size: 11pt;
           }
        .topnav a:hover {
            border-width: 0px 0px 3px 0px;
            border-style: solid;
            border-color: #846da2;
            background-color: #d4c0ed;
            color: #9754ef;
        }
.active {
    border-width: 0px 0px 3px 0px;
    border-style: solid;
    border-color: #846da2;
     background: url('transparent.png');
    color: #000000;
 }

所有这些都将导航栏放在页面的右上角和占位符 div 的上方,但它会与页面的其余部分一起向上滚动。

经过大量搜索和实验,CSS 似乎应该更改为:

    .topnav {
       background-color: #ffffff;
       opacity: 0.8;
        overflow: hidden;
        position: fixed;
        z-index: 20;
}

但这不能正常工作。发生了三件事,其中两件是错误的导航栏固定(正确),但它移动到页面的左上角(错误)并在占位符 div 内向下移动(错误)。

我在 CSS 中尝试了很多组合,但无法让导航栏保持固定并位于占位符 div 上方页面的右上角。

我完全被难住了,花了几个小时试图解决这个问题。有人可以帮忙吗?

祝福

最佳答案

如果你想让导航栏在右边,只需添加:

.topnav {
   right: 0;
}

因为你有 position: fixed,你可以添加 top,left,right,bottom 来改变元素的定位。

我还要补充:

.topnav {
    top: 0;
    width: 100%;
}

让它看起来更漂亮。

为了将它放在页面的最顶部,在 div 之上,更改:

.container{
   margin-top: 50px;
}

在这里你可以找到一个有效的 codepen .

希望这能解决您所有的问题。

关于html - 使用位置 : fixed; 时导航栏不在原地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973540/

相关文章:

html - png图像路径后这些数字是什么意思?

javascript - Jquery - BBC +/- 按钮

html - 在响应式网页中对齐 div 时出错

php - 选择框选项以写入数据库中的新行 - MySQL 和 PHP

javascript - 如何让 slider 长度变短并出现在页面中央?

HTML:如何删除这条虚线?

javascript - 添加新元素时使子元素调整大小

jquery - 调整屏幕大小时如何禁用下拉菜单 jQuery 悬停功能

jQuery 位置 :Fixed 'NAVBAR' by scrolling the page

css - 将背景图像放在导航栏上并允许溢出到下一部分