在响应式引导导航栏中居中内容
Posted
技术标签:
【中文标题】在响应式引导导航栏中居中内容【英文标题】:Center content in responsive bootstrap navbar 【发布时间】:2013-09-17 14:31:46 【问题描述】:我无法在引导导航栏中将我的内容居中。我正在使用 bootstrap 3。我已经阅读了很多帖子,但是使用的 CSS 或方法不适用于我的代码!我真的很沮丧,所以这就像我最后的选择。任何帮助将不胜感激!
<!DOCTYPE html>
<html>
<head>
<title>Navigation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/style.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="container">
<nav class="navbar navbar-default" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></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><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</nav>
<h1>Home</h1>
</div>
<!--javascript-->
<script src="js/jquery-1.10.2.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
https://jsfiddle.net/amk07fb3/
【问题讨论】:
【参考方案1】:我认为这就是您要寻找的。您需要从内部导航中删除 float: left
以使其居中并使其成为内联块。
.navbar .navbar-nav
display: inline-block;
float: none;
vertical-align: top;
.navbar .navbar-collapse
text-align: center;
http://jsfiddle.net/bdd9U/2/
编辑:如果您只希望在导航未折叠时发生此效果,请在适当的媒体查询中将其包围。
@media (min-width: 768px)
.navbar .navbar-nav
display: inline-block;
float: none;
vertical-align: top;
.navbar .navbar-collapse
text-align: center;
http://jsfiddle.net/bdd9U/3/
【讨论】:
如果您对链接下方的多余空间有疑问(例如,如果您为活动链接使用不同的背景),您可以使用:.navbar .navbar-collapse line-height: 0px;
我建议不要使用原始 bootstrap.css。相反,创建自己的风格。
在我的情况下,我必须删除“flex”并替换为“inline-block”,然后它才开始工作。【参考方案2】:
对于不必将导航栏放在容器内且不需要任何 CSS 或 Bootstrap 覆盖的布局,还有另一种方法。
只需在导航栏周围放置一个带有 Bootstrap container
类的 div。这将使导航栏内的链接居中:
<nav class="navbar navbar-default">
<!-- here's where you put the container tag -->
<div class="container">
<div class="navbar-header">
<!-- header and collapsed icon here -->
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<!-- links here -->
</ul>
</div>
</div> <!-- close the container tag -->
</nav> <!-- close the nav tag -->
如果您希望将正文内容对齐到中心导航栏,您还可以将该正文内容放在 Bootstrap container
标记中。
<div class="container">
<! -- body content here -->
</div>
不是每个人都可以使用这种类型的布局(有些人需要将导航栏本身嵌套在container
中)。尽管如此,如果你能做到,这是让你的导航栏链接和正文居中的简单方法。
您可以在这个全页 JSFiddle 中看到结果: http://jsfiddle.net/bdd9U/231/embedded/result/
来源: http://jsfiddle.net/bdd9U/229/
【讨论】:
嗯,这个解决方案似乎不再起作用了。您的示例现在左对齐。 对我不起作用,但感谢您的解决方案的简单性!【参考方案3】:原来的帖子是询问如何使折叠的导航栏居中。要在普通导航栏上居中元素,试试这个:
.navbar-nav
float:none;
margin:0 auto;
display: block;
text-align: center;
.navbar-nav > li
display: inline-block;
float:none;
【讨论】:
【参考方案4】:这段代码对我有用
.navbar .navbar-nav
display: inline-block;
float: none;
.navbar .navbar-collapse
text-align: center;
【讨论】:
【参考方案5】:来自 bootstrap 官方网站(几乎就像 Eric S. Bullington 所说的那样。
https://getbootstrap.com/components/#navbar-default
示例导航栏如下所示:
<nav class="navbar navbar-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
...etc
使导航居中,这就是我所做的:
<div class="container-fluid" id="nav_center">
css:
@media (min-width:768px) /* don't break navbar on small screen */
#nav_center
width: 700px /* need to found your width according to your entry*/
使用 class="container" 和 navbar-right 或 left,当然您可以按类替换 id。 :D
【讨论】:
【参考方案6】:使用下面的html
<link rel="stylesheet" href="app/components/directives/navBar/navBar.scss"/>
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<!-- Collect the nav links, forms, and other content for toggling -->
<ul class="nav navbar-nav">
<li><h5><a href="#/">Home</a></h5></li>
<li>|</li>
<li><h5><a href="#products">About</a></h5></li>
<li>|</li>
<li><h5><a href="#">Contacts</a></h5></li>
<li>|</li>
<li><h5><a href="#cart">Cart</a></h5></li>
</ul>
</div><!-- /.container-fluid -->
</nav>
还有css
.navbar-nav
width: 100%;
text-align: center;
.navbar-nav > li
float: none;
display: inline-block;
.navbar-default
background-color: white;
border-color: white;
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus
background-color:white;
根据需要修改
【讨论】:
【参考方案7】:似乎所有这些答案都涉及引导程序之上的自定义 css。我提供的答案仅使用引导程序,因此我希望它可以用于那些想要限制自定义的人。
这是使用 Bootstrap V3.3.7 测试的
<footer class="navbar-default navbar-fixed-bottom">
<div class="container-fluid">
<div class="row">
<div class="col-xs-offset-5 col-xs-2 text-center">
<p>I am centered text<p>
</div>
<div class="col-xs-5"></div>
</div>
</div>
</footer>
【讨论】:
【参考方案8】:引导程序 5(2021 年更新)
导航栏仍然是基于 Bootstrap 5 的 flexbox,内容居中的工作方式与 Bootstrap 4 相同。Examples
引导程序 4
Bootstrap 4 更容易使导航栏内容居中,您可以在此处看到许多居中场景的解释:https://***.com/a/20362024/171456
引导程序 3
另一种似乎尚未得到解答的场景是将both 品牌和导航栏链接居中。这是一个解决方案..
.navbar .navbar-header,
.navbar-collapse
float:none;
display:inline-block;
vertical-align: top;
@media (max-width: 768px)
.navbar-collapse
display: block;
http://codeply.com/go/1lrdvNH9GI
另见: Bootstrap NavBar with left, center or right aligned items
【讨论】:
【参考方案9】:BootStrap 的 V4 正在添加中心 (justify-content-center) 和右对齐 (justify-content-end),具体如下:https://v4-alpha.getbootstrap.com/components/navs/#horizontal-alignment
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
【讨论】:
【参考方案10】:这应该可以工作
.navbar-nav
position: absolute;
left: 50%;
transform: translatex(-50%);
【讨论】:
【参考方案11】:对于引导程序 4:
随便用
<ul class="navbar-nav mx-auto">
mx-auto 会完成这项工作
【讨论】:
如果我想在中心也垂直对齐怎么办?【参考方案12】:因为它应用了 flex。您可以使用此代码
@media (min-width: 992px)
.navbar-expand-lg .navbar-collapse
display: -ms-flexbox!important;
display: flex!important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
justify-content: center;
在我的情况下它工作正常。
【讨论】:
以上是关于在响应式引导导航栏中居中内容的主要内容,如果未能解决你的问题,请参考以下文章