如何将Bootstrap 3行水平居中?

时间:2019-04-04 07:31:57

标签: html css twitter-bootstrap-3

我用Bootstrap 3创建了一个“大型菜单”。

我很难找到创建巨型菜单的行,该行水平居中并保留功能。有问题的元素具有.mega-dropdown-menu类。

<ul class="dropdown-menu mega-dropdown-menu row">

以下是与我的问题有关的代码段:

body {
  background: #f0f0f0;
}

.dropdown-menu {
  background-color: #f5f5f5;
}
.navbar-header {
  background-color: #3a7dbb;
}
.collapse.navbar-collapse.js-navbar-collapse {
  background-color: #3a7dbb;
  /*   ?=border-bottom: 5px solid #214f82  */
}

.navbar-default .navbar-nav > li > a.dropdown-toggle {
  font-size: 16px;
  color: white;
}

.dropdown > .dropdown-menu > li > a {
  font-size: 16px;
}

.glyphicon-shopping-cart:before {
  color: white;
}

.navbar .navbar-brand {
  padding-top: 0px;
}

.dropdown > .dropdown-menu > li > a:hover {
  background-color: white;
}

.navbar-nav > li > .dropdown-menu {
  background-color: #f5f5f5;
  margin-top: 20px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}

.navbar-default .navbar-nav > li > a {
  /*   width: 8em; */
  font-weight: bold;
}

.mega-dropdown {
  position: static !important;
  width: 100%;
}

.mega-dropdown-menu {
  padding: 20px 0px;
  width: 100%;
  box-shadow: none;
  -webkit-box-shadow: none;
}

.center {
  margin: auto;
}

.mega-dropdown-menu > li > ul {
  padding: 0;
  margin: 0;
}

.mega-dropdown-menu > li > ul > li {
  list-style: none;
}

.mega-dropdown-menu > li > ul > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.428571429;
  color: #262626;
  white-space: normal;
}

.i-am-centered {
  margin: auto;
  max-width: 300px;
}

.mega-dropdown-menu > li ul > li > a {
  font-size: 16px;
}
.mega-dropdown-menu > li ul > li > a:hover,
.mega-dropdown-menu > li ul > li > a:focus {
  text-decoration: none;
  color: #444;
  background-color: white;
}

li.dropdown:hover {
  background-color: #c3c1c1;
}
ul.dropdown-menu.mega-dropdown-menu.row {
  width: 80%;
}
.mega-dropdown-menu .dropdown-header {
  color: #428bca;
  font-size: 18px;
  font-weight: bold;
}

.mega-dropdown-menu .dropdown-header > a {
  color: #428bca;
  font-size: 18px;
  font-weight: bold;
  padding-left: 0;
}

.mega-dropdown-menu form {
  margin: 3px 20px;
}

.mega-dropdown-menu .form-group {
  margin-bottom: 3px;
}

.navbar-default .navbar-nav .open .dropdown-menu > li > a {
  color: black !important;
}

@media only screen and (min-width: 768px) {
  .dropdown:hover > .dropdown-menu {
    display: block;
  }

  .dropdown > .dropdown-toggle:active {
    pointer-events: none;
  }
}

/* .mega-dropdown-menu:before {
  content: "";
  border-bottom: 15px solid #fff;
  border-right: 17px solid transparent;
  border-left: 17px solid transparent;
  position: absolute;
  top: -15px;
  left: 285px;
  z-index: 10;
}

.mega-dropdown-menu:after {
  content: "";
  border-bottom: 17px solid #ccc;
  border-right: 19px solid transparent;
  border-left: 19px solid transparent;
  position: absolute;
  top: -17px;
  left: 283px;
  z-index: 8;
} */
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<!------ Include the above in your HEAD tag ---------->

<div class="">
  <nav class="navbar navbar-default">
    <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".js-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" href="#"><img src="https://brm.institute/wp-content/themes/brmi/images/brm-institute-logo.png"></a>
    </div>

    <div class="collapse navbar-collapse js-navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="dropdown mega-dropdown">
          <a href="https://google.com" target="_blank" class="dropdown-toggle" data-toggle="dropdown">Dummy MegaMenu<span class="caret"></span></a>
          
          <ul class="dropdown-menu mega-dropdown-menu row">
            <li class="col-sm-4">
              <ul>
                <li class="dropdown-header"><a href="google.com">Dresses</a></li>
                <li><a href="#">Unique Features</a></li>
                <li><a href="#">Image Responsive</a></li>
                <li><a href="#">Auto Carousel</a></li>
                <li><a href="#">Newsletter Form</a></li>
                <li><a href="#">Four columns</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Tops</li>
                <li><a href="#">Good Typography</a></li>
              </ul>
            </li>
            <li class="col-sm-4">
              <ul>
                <li class="dropdown-header">Jackets</li>
                <li><a href="#">Easy to customize</a></li>
                <li><a href="#">Glyphicons</a></li>
                <li><a href="#">Pull Right Elements</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Pants</li>
                <li><a href="#">Coloured Headers</a></li>
                <li><a href="#">Primary Buttons & Default</a></li>
                <li><a href="#">Calls to action</a></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </div>

    <!-- /.nav-collapse -->
  </nav>
</div>

codepen上也提供了代码。

我们将不胜感激

谢谢

2 个答案:

答案 0 :(得分:2)

对于您当前的问题,请将.mega-dropdown-menu设置为以下任一情况:

01 使用翻译

left: 50% /* instead of 0 */
transform: translateX(-50%);

02 使用边距(首选解决方案IMO)

left: 0;
right: 0;
margin: 0 auto; /* Centers the element */

答案 1 :(得分:0)

没有足够的代表添加对不起的评论。

我总是发现:

margin-right: auto;
margin-left: auto;

无需设置左右位置即可完成技巧。

您还可以使用Bootstrap 3内置的“中心块”类将此CSS用作类。

就个人而言,我建议升级到Bootstrap 4,花了我一段时间才能取得飞跃,但是flexgrid值得这样改进。大多数类在某种程度上是可以互换的,尽管在bootstrap 4中,“ center-block”现在是“ mx-auto”