carlo_webber124
carlo_webber124

Reputation: 79

Display Block not moving to next line

I'm trying to make a responsive nav bar with tailwind. I want to list my nav links with a single item in each row when I open the navigation menu. Right now, they are all on one row. I'm using tailwind:

function Navbar() {
  const [isOpen, setIsOpen] = useState(false);
  return (
    <header>
      <div className="flex flex-col max-w-screen-xl px-4 mx-auto md:items-center md:justify-between md:flex-row md:px-6 lg:px-8">
        <div className="p-4 flex flex-row items-center justify-between">
          <Link href="/">
            <a className="text-lg font-semibold tracking-widest text-gray-900 uppercase rounded-lg dark-mode:text-white focus:outline-none focus:shadow-outline">
              Header
            </a>
          </Link>
          <button
            className="md:hidden rounded-lg focus:outline-none focus:shadow-outline"
            onClick={() => {
              setIsOpen(!isOpen);
            }}
          >
            Menu
          </button>
        </div>

        <nav className={isOpen ? "flex" : "md:flex hidden"}>
          <NavLink pathTo="/" displayText="Home" />
          <NavLink pathTo="/" displayText="Page 1" />
          <NavLink pathTo="/" displayText="Page 2" />
        </nav>
      </div>
    </header>
  );
}

export default Navbar;

My NavLink component is as follows:

import React from "react";
import Link from "next/link";
interface NavItem {
  pathTo: string;
  displayText: string;
}
function NavLink(item: NavItem) {
  return (
    <Link href={item.pathTo}>
      <a className="block lg:p-4 px-4 py-2 mt-2 border-b-2 border-white text-sm bg-transparent dark-mode:bg-transparent dark-mode:hover:border-red-400 dark-mode:focus:border-red-400 dark-mode:focus:text-white dark-mode:text-gray-200 md:mt-0 md:ml-4 hover:text-gray-900 focus:text-gray-900 hover:border-red-400 focus:border-red-400">
        {item.displayText}
      </a>
    </Link>
  );
}

export default NavLink;

What am I missing? I want the NavLinks to have one item on each row when opened from the menu. I thought display:block would do it, but it seems not to. Why's that?

Upvotes: 0

Views: 507

Answers (1)

rtkay123
rtkay123

Reputation: 41

You need to add a flex direction to your nav links. Adding flex-col should do the trick.

Upvotes: 1

Related Questions