【问题标题】:How to change section link (using the id attribute) in a HTML page?如何更改 HTML 页面中的部分链接(使用 id 属性)?
【发布时间】:2016-10-05 23:05:48
【问题描述】:

我有一个带有this bootstrap navbar 的页面,我的页面上有一些内容标题和段落,如下所示:

<h1>Links</h1>
<a href="#para1">P1</a>
<a href="#para2">P2</a>
<a href="#para3">P3</a>

<div id="para1">
    <h1>Paragraph 1</h1>
    <p>Here is come text...</p>
</div>
<div id="para2">
    <h1>Paragraph 2</h1>
    <p>Here is come text...</p>
</div>
<div id="para3">
    <h1>Paragraph 3</h1>
    <p>Here is come text...</p>
</div>

当我单击链接时,标题将转到页面顶部。这意味着它将位于导航栏的后面。

当点击链接时,如何让标题显示在导航栏的下方而不是在它的后面?

这应该适用于页面上的所有链接。

【问题讨论】:

  • 我考虑过这一点,但它会使页面以错误的方式移动 - 因此在我的示例中,当您单击 P1 链接时,您会看到 Paragraph 2 标题。

标签: html css twitter-bootstrap hyperlink


【解决方案1】:

如您所见,当您单击链接时,浏览器将滚动到该元素的开头。所以为了解决这个问题,我们需要将元素的 contents 向下推,以便它们显示在导航栏下方。

执行此操作的明显方法是将padding 添加到每个paraX 的顶部设置为导航栏的高度。这将起作用,但随后您将在每个部分上方出现不需要的大间隙。然后这里的技巧是使用相同大小的负margin 将整个元素拉回到原来的位置。这具有将页面导航到50px 上方h1 的效果,因此它会清除导航栏。

对于纯 CSS 解决方案,你必须假设导航栏有一定的高度,所以默认为50px。您还可以使用 JavaScript 根据计算出的高度动态创建 CSS 规则 - 有关详细信息,请参阅 this question

添加这个应该可以解决问题(我也会给 para1,para2,para3 一个共享的 css 类,例如 para,以简化事情):

#para1, #para2, #para3, .para {
  padding-top:50px;
  margin-top:-50px;
}

示例 sn-p

.para {
  padding-top:50px;
  margin-top:-50px;
}

/* for testing - to force a scroll and mark end of p */
p {
  padding-bottom:400px;
  border-bottom:1px solid #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="../navbar/">Default</a></li>
            <li><a href="../navbar-static-top/">Static top</a></li>
            <li class="active"><a href="./">Fixed top <span class="sr-only">(current)</span></a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    
    <div class="container">
      
      <h1>Links</h1>
      <a href="#para1">P1</a>
      <a href="#para2">P2</a>
      <a href="#para3">P3</a>

      <div id="para1" class="para">
          <h1>Paragraph 1</h1>
          <p>Here is come text...</p>
      </div>
      <div id="para2" class="para">
          <h1>Paragraph 2</h1>
          <p>Here is come text...</p>
      </div>
      <div id="para3" class="para">
          <h1>Paragraph 3</h1>
          <p>Here is come text...</p>
      </div>
      
    </div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2013-04-18
    • 2021-04-23
    • 2016-04-07
    • 1970-01-01
    • 2014-08-12
    • 2020-03-08
    相关资源
    最近更新 更多