Leaozinho
Leaozinho

Reputation: 131

Is there a way to align bootsrap navbar items to the right using CSS?

I am trying to align the class="nav-item login" items to the right. I know I can do it using "navbar-nav ml-auto", but I am wondering if there is a way to do it in the stylesheet?

The HTML and CSS for my problem is listed below. Thanks

    .navbar {
        font-family: 'Roboto', sans-serif;
    }

    .navbar-light .navbar-brand {
	    text-decoration: none;
	    color: #000000;
    }

    .navbar-brand:hover {
	    text-decoration: underline;
    }

    .login {
	    margin-left: auto;
    }
<nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="{% url 'great_songs:great_songs' %}">Great Songs</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
      </button>

      <div class="collapse navbar-collapse" id="navbar">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item">
            <a class="nav-link" href="{% url 'great_songs:great_songs' %}">Songs</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{% url 'great_songs:artists' %}">Artists</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{% url 'great_songs:genres' %}">Genres</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{% url 'great_songs:producers' %}">Producers</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{% url 'great_songs:labels' %}">Labels</a>
          </li>
         
          
          {% if user.is_authenticated %}
            <li class="nav-item login">  
              <a class="nav-link" href="{% url 'users:logout' %}">log out</a>
            </li>  
          {% else %}
            <li class="nav-item login">  
              <a class="nav-link" href="{% url 'users:login' %}">log in</a>
            </li>
            <li class="nav-item login">  
              <a class="nav-link" href="{% url 'users:register' %}">register</a>
            </li>
            {% endif %}
          </li>
        </ul>
      </div>
    </nav>

Upvotes: 0

Views: 115

Answers (4)

Partho63
Partho63

Reputation: 3116

Is this what you want?

.navbar {
  font-family: 'Roboto', sans-serif;
  display: flex;
  justify-content: space-between;
}

.navbar-light .navbar-brand {
  text-decoration: none;
  color: #000000;
}

.navbar-brand:hover {
  text-decoration: underline;
}

.login {
  margin-left: auto;
}

@media only screen and (max-width: 1000px) {
    #login-list {
        display: inherit;
    }
}
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Great Songs</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbar">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item">
        <a class="nav-link" href="#">Songs</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Artists</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Genres</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Producers</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Labels</a>
      </li>
    </ul>
    <ul class="navbar-nav" id="login-list">
      <li class="nav-item login">  
        <a class="nav-link" href="#">Log out</a>
      </li>
      <li class="nav-item login">  
        <a class="nav-link" href="#">Log in</a>
      </li>
      <li class="nav-item login">  
        <a class="nav-link" href="#">Register</a>
      </li>
    </ul>
  </div>
</nav>


<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>

Upvotes: 1

Thanveer Shah
Thanveer Shah

Reputation: 3333

It's very simple.

  • You don't even need css for that.

  • Just use d-flex justify-content-end.

  • Put that line of code inside the div that holds the <ul>.

Example :

<div class="d-flex justify-content-end">
  <ul>
    <li>
    </li>
  </ul>
</div>

Hope this helps .

Upvotes: 1

Moby Khan
Moby Khan

Reputation: 5355

First of all you need to make a little correction in your CSS code to change the .navbar selector to #navbar since you have defined it as id in HTML Rest you can simply use float: right; property in the #navbar to get it on the right. I removed some of the DTL tags

#navbar {
  font-family: "Roboto", sans-serif;
  float: right;
}

.navbar-light .navbar-brand {
  text-decoration: none;
  color: #000000;
}

.navbar-brand:hover {
  text-decoration: underline;
}

.login {
  margin-left: auto;
}
<div class="collapse navbar-collapse" id="navbar">
  <ul class="navbar-nav mr-auto">
    <li class="nav-item">
      <a class="nav-link" href="{% url 'great_songs:great_songs' %}">Songs</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="{% url 'great_songs:artists' %}">Artists</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="{% url 'great_songs:genres' %}">Genres</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="{% url 'great_songs:producers' %}">Producers</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="{% url 'great_songs:labels' %}">Labels</a>
    </li>

    <li class="nav-item login">
      <a class="nav-link" href="{% url 'users:logout' %}">log out</a>
    </li>

    <li class="nav-item login">
      <a class="nav-link" href="{% url 'users:login' %}">log in</a>
    </li>
    <li class="nav-item login">
      <a class="nav-link" href="{% url 'users:register' %}">register</a>
    </li>

    </li>
  </ul>
</div>
</nav>

Upvotes: 0

Tanbir Ahmod
Tanbir Ahmod

Reputation: 513

Which bootstrap version you have used? If you have used bootstrap 3 then add this css float:right; class of #navbar.

Upvotes: 1

Related Questions