Блок отображения не перемещается на следующую строку

#css #reactjs #tailwind-css

#css #reactjs #попутный ветер-css

Вопрос:

Я пытаюсь создать адаптивную панель навигации с помощью tailwind. Я хочу перечислить свои навигационные ссылки с одним элементом в каждой строке, когда я открываю меню навигации. Прямо сейчас они все находятся в одном ряду. Я использую 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;
 

Мой компонент NavLink выглядит следующим образом:

 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;
 

Чего мне не хватает? Я хочу, чтобы в навигационных ссылках было по одному элементу в каждой строке при открытии из меню. Я думал display:block , что сделаю это, но, похоже, нет. Почему это?

Комментарии:

1. Я хочу сказать, что это из-за гибкого направления контейнера navlink. Используете ли вы гибкое направление столбца?

2. Да, я был. @rtkay123, похоже, тоже на том же пути. Мне нужно было добавить flex-col . Но теперь открытое меню перемещает все вниз, когда оно открыто. Как я могу сделать так, чтобы он отображался поверх элементов на экране, а не сверху?

3. Игра со свойством позиции меню может сработать. И чтобы убедиться, что он остается выше того, что вы хотите, также отредактируйте свой z-индекс меню.

Ответ №1:

Вам нужно добавить гибкое направление к вашим навигационным ссылкам. Добавление flex-col должно сделать свое дело.