固定顶部导航栏

时间:2017-10-15 05:23:54

标签: javascript jquery html css twitter-bootstrap

我有一个锚标记<a href="#target">jump</a>,可以重定向到target面板。此面板在重定向后隐藏在我的固定顶部导航栏后面。我在CSS中尝试了两种不同的方法来偏移面板,但它们无法正常工作。

有没有办法从导航栏中偏移面板,但是仍然保持其边框位于正确的位置?最好只使用CSS和HTML。

body {
  padding-top: 50px;
}

#mytarget {
  border-color: red
}

/* This doesn't work */
/*#mytarget:before { 
  display: block; 
  content: " "; 
  margin-top: -50px; 
  height: 50px; 
  visibility: hidden; 
}*/


/* This works but border overlaps */
#mytarget:target {
  padding-top: 50px;
  margin-top: -50px;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>My page</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>

<body>
  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container">Fixed Top Navbar</div>
  </nav>

  <div>Click on panel headers to open all panels, then <a href="#mytarget">jump to target</a></div>
  <div class="panel-group">
    <div class="panel panel-default">
      <div class="panel-heading" data-toggle="collapse" href="#panel1">
        <h3 class="panel-title">Panel Header 1</h3>
      </div>
      <div id="panel1" class="panel-collapse collapse">
        <div class="panel-body">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
          in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        </div>
      </div>
    </div>

    <div class="panel panel-default" id="mytarget">
      <div class="panel-heading" data-toggle="collapse" href="#targetpanel">
        <h3 class="panel-title">Target Panel Header</h3>
      </div>
      <div id="targetpanel" class="panel-collapse collapse">
        <div class="panel-body">Target Panel Body Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
          Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        </div>
      </div>
    </div>

    <div class="panel panel-default">
      <div class="panel-heading" data-toggle="collapse" href="#panel3">
        <h3 class="panel-title">Panel Header 3</h3>
      </div>
      <div id="panel3" class="panel-collapse collapse">
        <div class="panel-body">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
          in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        </div>
      </div>
    </div>
  </div>

  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
</body>

</html>

1 个答案:

答案 0 :(得分:1)

防止锚填充/边距影响面板样式的唯一方法是将它们分开。你可以:

  1. 将id移动到<h3>元素而不是面板元素,因为它设置为没有填充,边距或边框,因此不会影响其显示,或
  2. 创建单独的锚元素,您可以单独设置样式。
  3. 如果要创建单独的锚元素,请将锚点添加为面板中的第一个元素:

    <div class="panel panel-default">
       <a id="mytarget"></a>
       <div class="panel-heading" data-toggle="collapse" href="#targetpanel">
           [...]
    

    让你的主播CSS成为:

    #mytarget:target {
      padding-top: 50px;
      margin-top: -50px;
      display:block;
    }
    


    工作示例

    &#13;
    &#13;
    body {
      padding-top: 50px;
    }
    
    #mytarget {
      border-color: red
    }
    
    #mytarget:target {
      padding-top: 50px;
      margin-top: -50px;
      display:block;
    }
    &#13;
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>My page</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    </head>
    
    <body>
      <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container">Fixed Top Navbar</div>
      </nav>
    
      <div>Click on panel headers to open all panels, then <a href="#mytarget">jump to target</a></div>
      <div class="panel-group">
        <div class="panel panel-default">
          <div class="panel-heading" data-toggle="collapse" href="#panel1">
            <h3 class="panel-title">Panel Header 1</h3>
          </div>
          <div id="panel1" class="panel-collapse collapse">
            <div class="panel-body">
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
              in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
            </div>
          </div>
        </div>
    
        <div class="panel panel-default">
           <a id="mytarget"></a>
           <div class="panel-heading" data-toggle="collapse" href="#targetpanel">
            <h3 class="panel-title">Target Panel Header</h3>
          </div>
          <div id="targetpanel" class="panel-collapse collapse">
            <div class="panel-body">Target Panel Body Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    
            </div>
          </div>
        </div>
    
        <div class="panel panel-default">
          <div class="panel-heading" data-toggle="collapse" href="#panel3">
            <h3 class="panel-title">Panel Header 3</h3>
          </div>
          <div id="panel3" class="panel-collapse collapse">
            <div class="panel-body">
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
              in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    
            </div>
          </div>
        </div>
      </div>
    
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
    </body>
    
    </html>
    &#13;
    &#13;
    &#13;