中心的Bootstrap导航徽标

时间:2017-02-21 21:00:29

标签: html css twitter-bootstrap twitter-bootstrap-3

我尝试设计一个居中的徽标导航,但我有一些输出问题

.navbar {
  background-color: #231f20;
  min-height: auto;
  position: relative;
  top: 0px;
  font-size: 13px;
  width: auto;
  border-bottom: none;
  margin-bottom: 0px;
  padding: 40px 0px;
}
.navbar-brand {
  padding: 0 15px;
  height: 96px;
}

@media (min-width: 768px) {
  .navbar-nav {
    position: relative;
    right: -50%;
  }
  .navbar-nav > li {
    position: relative;
    left: -50%;
  }
  .navbar-nav > li a {
    line-height: 126px;
    vertical-align: middle;
    padding: 0 24px;
  } 
}

@media (min-width: 992px) {
  .navbar-nav > li a {
    padding: 0 40px;
  } 
}

@media (min-width: 1200px) {
  .navbar-nav > li a {
    padding: 0 50px;
  } 
}

/////

<nav class="navbar navbar-default">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <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 hidden-sm hidden-md hidden-lg" href="#"><img src="http://i.imgur.com/SC9LKtA.png" alt="Brand" width="180" /></a>
        </div>
        <div class="collapse navbar-collapse">
            <ul class="nav navbar-nav">
                <li><a href="./about-us">Who We Are</a></li>
                <li><a href="./menu">Our Food</a></li>
                <li class="hidden-xs"><a href="#"><img src="http://i.imgur.com/SC9LKtA.png" alt="Brand" width="180" /></a></li>
                <li><a href="./book">Book a Table</a></li>
                <li><a href="./promotions">Promotions</a></li>
            </ul>
        </div>
    </div>
</nav>

The same display error can be seen at codepen also

另外,在http://codepen.io/anon/pen/egqxjW

进行演示

造成白色空间的问题是什么?

PS:有没有更好的方法来获得相同的结果?如何在源代码中仅包含一次徽标?

2 个答案:

答案 0 :(得分:2)

right: -50%;ul 50%移到应有的位置右侧。它的宽度保持不变(容器的100%),向右移动50%,因此ul的50%位于容器外部,从屏幕上流出。

我使用text-align: centerdisplay: inline-block进行了一些更改,以达到您想要的相同结果。它们在CSS中用/ * change * /标记。

@import url( 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' );

.navbar {
  background-color: #231f20;
  min-height: auto;
  position: relative;
  top: 0px;
  font-size: 13px;
  width: auto;
  border-bottom: none;
  margin-bottom: 0px;
  padding: 40px 0px;
}

.navbar-brand {
  padding: 0 15px;
  height: 96px;
}

@media (min-width: 768px) {
  ul.navbar-nav {
    position: relative;
    float: none;
    /* change */
    text-align: center;
    /* change */
  }
  ul.navbar-nav>li {
    position: relative;
    display: inline-block;
    /* change */
    vertical-align: middle;
    float: none;
  }
  ul.navbar-nav>li a {
    line-height: 126px;
    vertical-align: middle;
    padding: 0 24px;
  }
}

@media (min-width: 992px) {
  .navbar-nav>li a {
    padding: 0 40px;
  }
}

@media (min-width: 1200px) {
  .navbar-nav>li a {
    padding: 0 50px;
  }
}
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <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 hidden-sm hidden-md hidden-lg" href="#"><img src="http://i.imgur.com/SC9LKtA.png" alt="Brand" width="180" /></a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li><a href="./about-us">Who We Are</a></li>
        <li><a href="./menu">Our Food</a></li>
        <li class="hidden-xs">
          <a href="#"><img src="http://i.imgur.com/SC9LKtA.png" alt="Brand" width="180" /></a>
        </li>
        <li><a href="./book">Book a Table</a></li>
        <li><a href="./promotions">Promotions</a></li>
      </ul>
    </div>
  </div>
</nav>

答案 1 :(得分:0)

您的风格中有一条规则,即在导航栏上设置right: -50%。遗憾的是,由于UL导航栏显示为一个块,因此您可以使用100%向右移动50%并在屏幕外清理的元素。

您应该尝试navbar-right bootstrap类,而不是弄乱正确的相对定位。像这样:

<ul class="nav navbar-nav navbar-right">

bootstrap中的大多数布局都使用浮点数,所以你不能只使用相对定位,期望它的行为方式相同。

最后,您应该将其与官方文档响应导航栏示例进行比较:https://getbootstrap.com/components/#navbar

您可以在此处查看结果示例:http://codepen.io/anon/pen/NdQJRb