Как центрировать текст с логотипом по центру в navbar bulma - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь центрировать текст внутри панели навигации, когда логотип находится между элементами панели навигации, однако я смог центрировать только логотип как изображение бренда.enter image description here

Вот мой код:

<a role="button" class="navbar-burger" aria-label="menu" data-target="navMenu" aria-expanded="false">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
  </a>
<nav class="navbar is-white">
  <div class="navbar-brand">
      <a class="navbar-item" href="/">
        <img src='img/logo.png' style="width: 100px;">
      </a>
  <div class="navbar-menu" id="navMenu">
        <div class="navbar-start">
        <a href="#" class="navbar-item nav-text">Paslaugos</a>
        <a href="#" class="navbar-item nav-text">Kainos</a>
        <a href="#" class="navbar-item nav-text">DUK</a>
        <a href="#" class="navbar-item nav-text">Apie Mus</a>
      </div>

  </div>

</nav>

css

.navbar .navbar-brand {
  text-align: center;
  display: block;
  width: 100%;
}

.navbar .navbar-brand > .navbar-item,
.navbar .navbar-brand .navbar-link {
  display: inline-block;
}

Любая помощь будет принята с благодарностью, я уже потратил слишком многомного времени на это.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Соображения

Разделите контейнер внутри панели навигации на три столбца.

<div id="my-navbar">
  <div class="container">
    <!-- Items left -->
    <div></div>
    <!-- Logo in the center -->
    <div></div>
    <!-- Items right -->
    <div></div>
  </div>
</div>

Установите flex: 1, чтобы каждый столбец имел .container одинаковую ширину.

Примечание

Конечно, если имеется больше элементов, например, с левой стороны, чем с правой стороны, элементы будут меньше .

Пример

body {
  margin: 0;
}

#my-navbar img {
  display: block;
}

#my-navbar a {
  text-decoration: none;
  color: white;
}

#my-navbar {
  background: #151515;
  padding: 10px;
}

#my-navbar .container,
#my-navbar .container>div {
  display: flex;
}

#my-navbar .container {
  /* Set a max width to squeeze the navbar */
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

#my-navbar .container>div {
  flex: 1;
  align-items: center;
  justify-content: space-around;
}

@media screen and (max-width: 768px) {
  #my-navbar .container {
    margin: 0;
  }
  #my-navbar .container,
  #my-navbar .container>div {
    flex-direction: column;
    align-items: flex-start;
  }
  #my-navbar .item {
    margin: 5px;
  }
  #my-navbar .container>div:nth-child(1) {
    order: 2;
  }
  #my-navbar .container>div:nth-child(2) {
    order: 1;
  }
  #my-navbar .container>div:nth-child(3) {
    order: 3;
  }
}
<nav id="my-navbar">
  <div class="container">
    <div>
      <div class="item"><a href="">Link</a>
      </div>
      <div class="item"><a href="">Link</a>
      </div>
      <div class="item"><a href="">Link</a>
      </div>
    </div>
    <div>
      <div class="item"><img src="http://via.placeholder.com/100x50" alt="">
      </div>
    </div>
    <div>
      <div class="item"><a href="">Link</a>
      </div>
      <div class="item"><a href="">Link</a>
      </div>
      <div class="item"><a href="">Link</a>
      </div>
    </div>
  </div>
</nav>

Полное решение Bulma

Не забудьте настроить медиазапрос, чтобы он не влиял мобильные экраны.

@media screen and (...) {}

В этом случае Булма использует min-width: 1088px.

Подсказка

.navbar-burger равно внутри the .navbar-brand: Bulma navbar

document.addEventListener('DOMContentLoaded', function() {

  // Get all "navbar-burger" elements
  var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);

  // Check if there are any navbar burgers
  if ($navbarBurgers.length > 0) {

    // Add a click event on each of them
    $navbarBurgers.forEach(function($el) {
      $el.addEventListener('click', function() {

        // Get the target from the "data-target" attribute
        var target = $el.dataset.target;
        var $target = document.getElementById(target);

        // Toggle the class on both the "navbar-burger" and the "navbar-menu"
        $el.classList.toggle('is-active');
        $target.classList.toggle('is-active');

      });
    });
  }

});
@media screen and (min-width: 1088px) {
  #my-navbar-menu>div {
    flex: 1;
  }
  #my-navbar-menu>div>div {
    flex: 1;
    justify-content: center;
  }
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" rel="stylesheet" />
<nav class="navbar">
  <div class="navbar-brand">
    <div class="navbar-burger burger" data-target="my-navbar-menu">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </div>
  <div id="my-navbar-menu" class="navbar-menu">
    <div class="navbar-start">
      <div class="navbar-item"><a href="#">Site</a>
      </div>
      <div class="navbar-item"><a href="#">Site</a>
      </div>
      <div class="navbar-item"><a href="#">Site</a>
      </div>
    </div>
    <div class="my-navbar-center">
      <div class="navbar-item"><img src="https://bulma.io/images/bulma-logo.png" alt="Bulma: a modern CSS framework based on Flexbox" width="112" height="28">
      </div>
    </div>
    <div class="navbar-end">
      <div class="navbar-item"><a href="#">Site</a>
      </div>
      <div class="navbar-item"><a href="#">Site</a>
      </div>
    </div>
  </div>
</nav>

Сжать навигационную панель

До сохранить гибкое поведение для items в меню панели навигации, самый простой способ - установить display: block для панели навигации и width для меню панели навигации и отцентрировать его с помощью margin: 0 auto.

* 1069.*
@media screen and (min-width: 1088px) {
  .my-navbar {
    display: block !important;
  }
  .my-navbar .navbar-brand {
    display: none;
  }
  #my-navbar-menu {
    width: 600px;
    margin: 0 auto;
  }
  #my-navbar-menu>div {
    flex: 1;
  }
  #my-navbar-menu>div>div {
    flex: 1;
    justify-content: center;
  }
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" rel="stylesheet" />
<nav class="navbar my-navbar">
  <div class="navbar-brand">
    <div class="navbar-burger burger" data-target="my-navbar-menu">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </div>
  <div id="my-navbar-menu" class="navbar-menu">
    <div class="navbar-start">
      <div class="navbar-item"><a href="#">Site</a>
      </div>
      <div class="navbar-item"><a href="#">Site</a>
      </div>
      <div class="navbar-item"><a href="#">Site</a>
      </div>
    </div>
    <div class="my-navbar-center">
      <div class="navbar-item"><img src="https://bulma.io/images/bulma-logo.png" alt="Bulma: a modern CSS framework based on Flexbox" width="112" height="28">
      </div>
    </div>
    <div class="navbar-end">
      <div class="navbar-item"><a href="#">Site</a>
      </div>
      <div class="navbar-item"><a href="#">Site</a>
      </div>
    </div>
  </div>
</nav>
0 голосов
/ 11 мая 2018

Попробуйте использовать свойство flex. К контейнеру div можно дать

<div class="flexcontainer">


<ul>
  <li>home</li>
  <li>About</li>
  <li><img src="http://www.monodies.com/wp-content/uploads/2016/03/facebook-Icon-290x290.png"></li>
  <li>link</li>
  <li>link</li>
</ul>
</div>

.flexcontainer{
  display:flex;
}
.flexcontainer ul{
  display:flex;
  list-style:none;
  flex-flow: row wrap;
  align-items: center;

}

отметьте это https://jsfiddle.net/karantewari/bqh9byj3/, надеюсь, это поможет:)

...