Solution 1 :

To center the top navigation in the link you’ve provided, you would add the following to .topnav:

.topnav {
  display: flex;
  justify-content: center;

To address the mobile menu (and not center it), add the following to your @media query:

@media screen and (max-width: 600px) {
  .topnav { display: block; }


enter image description here


enter image description here

Solution 2 :

One way is to wrap the links inside a div (say, a div with class nav-links), and then applying to the div:

.nav-links {
    width: fit-content; /* 'margin: auto' alone does not work if the div takes full width */
    margin: auto;

Below is a demo based on the tutorial you linked:

.nav-links {
  width: fit-content;

/*//////////////  W3Schools CSS code //////////////*/

/* Add a black background color to the top navigation */
.topnav {
  background-color: #333;
  overflow: hidden;

/* Style the links inside the navigation bar */
.topnav a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;

/* Change the color of links on hover */
.topnav a:hover {
  background-color: #ddd;
  color: black;

/* Add an active class to highlight the current page */
.topnav {
  background-color: #4CAF50;
  color: white;

/* Hide the link that should open and close the topnav on small screens */
.topnav .icon {
  display: none;
<!-- Load an icon library to show a hamburger menu (bars) on small screens -->
<link rel="stylesheet" href="">

<div class="topnav" id="myTopnav">
  <div class="nav-links">
    <a href="#home" class="active">Home</a>
    <a href="#news">News</a>
    <a href="#contact">Contact</a>
    <a href="#about">About</a>
    <a href="javascript:void(0);" class="icon" onclick="myFunction()">
      <i class="fa fa-bars"></i>

Problem :

I am following a guide from w3schools to build a responsive top navigation bar for my site: How TO – Responsive Top Navigation

However, I would like the navigation items to be centered on the page, not aligned to the left or right. w3schools even has a second tutorial on a center navigation element link, but as soon as I try to use this code for several navigation elements, they either are all within each other or stack on top of each other!

Even more to my dismay, there has been a question about this exact problem before (here), but it seems the code of the example has been changed a lot in the meanwhile so that the answer is no longer applicable. 🙁


Comment posted by terri

This works nicely in desktop view but messes up the behaviour on the small screen. Probably I need to add something in the @media screen and (max-width: 600px) part of the css?

Comment posted by Andy Hoffman

@terri Right. You could adjust things inside the media query. I wasn’t sure what you intended to do with the menu for mobile.

Comment posted by terri

I tried your solution, but neither in the snippet nor in my own code did it actually center anything. I accepted the other solution since it works as I intented.

Comment posted by Anis R.

@terri Weird, the snippet works well on my browser (Chrome – Windows). On what browser are you trying this?