我有一个页面 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>
当我点击链接时,页眉将转到页面顶部。这意味着它将在导航栏后面。
当单击链接而不是在它后面时,如何使标题显示在导航栏下方?
这应该适用于页面上的所有链接。
最佳答案
如您所见,当您单击链接时,浏览器将滚动到该元素的开头。因此,为了解决这个问题,我们需要将元素的内容下推,以便它们显示在导航栏下方。
这样做的明显方法是将 padding
添加到每个设置为导航栏高度的 paraX
的顶部。这会起作用,但随后您会在每个部分上方出现不需要的大间隙。这里的技巧是使用相同大小的负 margin
将整个元素拉回到原来的位置。这具有将页面导航到 h1
上方的 50px
的效果,因此它清除了导航栏。
对于纯 CSS 解决方案,您必须假设导航栏具有一定高度,因此默认为 50px
。您还可以使用 JavaScript 根据计算出的高度动态创建 CSS 规则 - 请参阅 this question了解详情。
添加这个应该可以解决这个问题(我还会给 para1
、para2
、para3
一个共享的 css 类,例如 para
,以简化事情):
#para1, #para2, #para3, .para {
padding-top:50px;
margin-top:-50px;
}
示例片段
.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>
关于html - 如何更改 HTML 页面中的部分链接(使用 id 属性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655753/