如何制作两行导航栏?

Posted

技术标签:

【中文标题】如何制作两行导航栏?【英文标题】:How to make two rows navbar? 【发布时间】:2021-08-03 19:03:48 【问题描述】:

我正在制作一个 react + tailwind 应用程序,我需要一一实现两行导航栏。

对于我尝试过的代码,

<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet">

     <nav className="relative flex flex-wrap items-center justify-between px-2 py-3 bg-pink-500 mb-3">
        <div className="container px-4 mx-auto flex flex-wrap items-center justify-between">
          <div className="w-full relative flex justify-between lg:w-auto lg:static lg:block lg:justify-start">
            <a
              className="text-sm font-bold leading-relaxed inline-block mr-4 py-2 whitespace-nowrap uppercase text-white"
              href="#pablo"
            >
              Logo 1
            </a>
            <button
              className="text-white cursor-pointer text-xl leading-none px-3 py-1 border border-solid border-transparent rounded bg-transparent block lg:hidden outline-none focus:outline-none"
              type="button"
              onClick=() => setNavbarOpen(!navbarOpen)
            >
              <i className="fas fa-bars"></i>
            </button>
          </div>
          <div
            className=
              "lg:flex flex-grow items-center" +
              (navbarOpen ? " flex" : " hidden")
            
            id="example-navbar-danger"
          >
            <ul className="flex flex-col lg:flex-row list-none lg:ml-auto">
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 1 - Menu 1</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2"> Row 1 - Menu 2</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 1 - Menu 3</span>
                </a>
              </li>
            </ul>
            /* Second row menus */
            <ul className="flex flex-col lg:flex-row list-none lg:ml-auto">
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 2 - Menu 1</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2"> Row 2 - Menu 2</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 2 - Menu 3</span>
                </a>
              </li>
            </ul>
          </div>
          <a
            className="text-sm font-bold leading-relaxed inline-block mr-4 py-2 whitespace-nowrap uppercase text-white"
            href="#pablo"
          >
            Logo 2
          </a>
        </div>
      </nav>

我是 *** 的初学者,所以我不知道为什么上面的 sn-p 不适用各自的样式,但请在此处查看完整的工作示例,

https://codesandbox.io/s/tailwind-css-and-react-forked-909d1

在上面的示例中,您可以看到第一行菜单和第二行菜单都在同一行,但我需要将第二行菜单移到第一行下方。

请帮我实现这样的结果,

桌面视图:

| Logo 1   ------  Row-1-Menu-1 ---- Row-1-Menu-2 ---- Row-1-Menu-3 ----   Logo 2 |
|          ------  Row-2-Menu-1 ---- Row-2-Menu-2 ---- Row-2-Menu-3 ----          |

移动/标签视图

| Logo 1   --------- Logo 2 --- Hamburger Icon -- |

当前的用户界面可以在这里查看https://909d1.csb.app/

【问题讨论】:

您好,欢迎来到 ***。社区将很乐意为您提供帮助,但请遵循如何询问,尤其是如何提供“最小”可重现示例的指南:***.com/help/minimal-reproducible-example 此外,&lt;Link ... /&gt; 显然在代码示例中不起作用,因此您可以包含链接像你一样进行演示,甚至(更好):在这里编写所有必要的(但最少的)css。我的猜测是,当你开始做这个最小的例子时,你会自己找到解决方案。 【参考方案1】:

您需要添加flexDirection: column 以在一列中呈现您的ul,并且需要从ul 中删除marginLeft: auto

试试下面的方法:-

import React from "react";

export default function Navbar( fixed ) 
  const [navbarOpen, setNavbarOpen] = React.useState(false);
  return (
    <>
      <nav className="relative flex flex-wrap items-center justify-between px-2 py-3 bg-pink-500 mb-3">
        <div className="container px-4 mx-auto flex flex-wrap items-center justify-between">
          <div className="w-full relative flex justify-between lg:w-auto lg:static lg:block lg:justify-start">
            <a
              className="text-sm font-bold leading-relaxed inline-block mr-4 py-2 whitespace-nowrap uppercase text-white"
              href="#pablo"
            >
              Logo 1
            </a>
            <button
              className="text-white cursor-pointer text-xl leading-none px-3 py-1 border border-solid border-transparent rounded bg-transparent block lg:hidden outline-none focus:outline-none"
              type="button"
              onClick=() => setNavbarOpen(!navbarOpen)
            >
              <i className="fas fa-bars"></i>
            </button>
          </div>
          <div
            className=
              "lg:flex flex-grow items-center" +
              (navbarOpen ? " flex" : " hidden")
            
            id="example-navbar-danger"
            style= flexDirection: "column"   // added flex direction
          >
            <ul className="flex flex-col lg:flex-row list-none"> // removed margin left
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 1 - Menu 1</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2"> Row 1 - Menu 2</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 1 - Menu 3</span>
                </a>
              </li>
            </ul>
            /* Second row menus */
            <ul className="flex flex-col lg:flex-row list-none"> // removed margin left
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 2 - Menu 1</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2"> Row 2 - Menu 2</span>
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="px-3 py-2 flex items-center text-xs uppercase font-bold leading-snug text-white hover:opacity-75"
                  href="#pablo"
                >
                  <span className="ml-2">Row 2 - Menu 3</span>
                </a>
              </li>
            </ul>
          </div>
          <a
            className="text-sm font-bold leading-relaxed inline-block mr-4 py-2 whitespace-nowrap uppercase text-white"
            href="#pablo"
          >
            Logo 2
          </a>
        </div>
      </nav>
    </>
  );



【讨论】:

您好,您能帮忙吗? ***.com/q/67531195/15916627

以上是关于如何制作两行导航栏?的主要内容,如果未能解决你的问题,请参考以下文章

用两行更改此自定义导航栏中的文本颜色?

如何使用 vue js 制作固定导航栏?

如何在导航栏上方制作标题?

如何制作可扩展的导航栏

如何制作像 Instagram 一样的导航栏

如何在php中制作活动导航栏?