Как горизонтально центрировать Bootstrap 3 ряда? - PullRequest
0 голосов
/ 04 апреля 2019

Я создал «мега-меню» с помощью 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 ]

2 голосов
/ 04 апреля 2019

Для вашей текущей проблемы, установите .mega-dropdown-menu на:

01 Использование перевода :

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

02 Использование полей (предпочтительное решение IMO)

left: 0;
right: 0;
margin: 0 auto; /* Centers the element */
0 голосов
/ 04 апреля 2019

Не достаточно Rep, чтобы добавить комментарий извините.

Я всегда находил:

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

Выполняет трюк без необходимости устанавливать левую / правую позицию.

Вы также можете использовать класс "center-block", встроенный в Bootstrap 3, чтобы применить этот CSS как класс.

Лично я бы порекомендовал обновить до Bootstrap 4, мне потребовалось некоторое время, чтобы совершить прыжок, но flexgrid - это такое улучшение, оно того стоит. Большинство классов в некоторой степени взаимозаменяемы, хотя в начальной загрузке «center-block» теперь является «mx-auto»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...