Search code examples
htmlcsswebdesign-patternsnav

How do I split up a navigation bar into two sections in the same line?


Here's my HTML:

<body>
  <nav class="navbar">
    <span class="navbar-toggle" id="js-navbar-toggle">
            <i class="fas fa-bars"></i>
        </span>
    <a href="#" class="logo">logo</a>
    <ul class="main-nav" id="js-menu">
      <li>
        <a href="#" class="nav-links">Home</a>
      </li>
      <li>
        <a href="#" class="nav-links">Products</a>
      </li>
      <li>
        <a href="#" class="nav-links">About Us</a>
      </li>
      <li>
        <a href="#" class="nav-links">Contact Us</a>
      </li>
      <li>
        <a href="#" class="nav-links">Blog</a>
      </li>
    </ul>
  </nav>
</body>

Here's my CSS:

* {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}

body {
  font-family: "Josefin Sans", sans-serif;
}

.navbar {
  font-size: 18px;
  padding-bottom: 10px;
}

.main-nav {
  list-style-type: none;
  display: none;
}

.nav-links,
.logo {
  text-decoration: none;
  color: black;
}

.main-nav li {
  text-align: center;
  margin: 15px auto;
}

.logo {
  display: inline-block;
  font-size: 22px;
  margin-top: 10px;
  margin-left: 20px;
}

.navbar-toggle {
  position: absolute;
  top: 10px;
  right: 20px;
  cursor: pointer;
  color: rgba(255, 255, 255, 0.8);
  font-size: 24px;
}

.active {
  display: block;
}

And this is the output I'm getting:

enter image description here

I'd like my output to be like this instead (ignore the spacing difference, just my screenshot, but have them split in the center like so):

enter image description here

What's the best way of doing this?

I'm thinking of creating another unorder list and moving it, but I don't know how to do that.


Solution

  • Make use of justify-content: space-between;.

    * {
      box-sizing: border-box;
      padding: 0;
      margin: 0;
    }
    
    ul {
      list-style-type: none;
    }
    
    .nav-links, .logo {
      text-decoration: none;
      color: #000;
    }
    
    .navbar {padding: 20px;}
    .navbar, ul {display: flex; flex-direction:row;}
    ul li {padding: 0 5px;}
    .wrapper {display:flex; justify-content: space-between; width:100%; }
      <nav class="navbar">
        <a href="#" class="logo">logo</a>
        <div class="wrapper">
        <ul class="main-nav" id="js-menu">
          <li>
            <a href="#" class="nav-links">Home</a>
          </li>
          <li>
            <a href="#" class="nav-links">Products</a>
          </li>
          <li>
            <a href="#" class="nav-links">About Us</a>
          </li>
        </ul>
        <ul class="ul2">
          <li>
            <a href="#" class="nav-links">Contact Us</a>
          </li>
          <li>
            <a href="#" class="nav-links">Blog</a>
          </li>
        </ul>
        </div>
      </nav>