顺风 CSS 导航栏

Posted

技术标签:

【中文标题】顺风 CSS 导航栏【英文标题】:Tailwind CSS Navbar 【发布时间】:2018-12-11 04:53:50 【问题描述】:

无论如何,我无法让这个导航栏正确折叠。我需要在响应模式下将导航栏从 flex 中更改出来,但它目前无法正常工作。

html

 <nav class="flex items-center justify-between flex-wrap bg-blue-darkest p-6 z-10">
    <div class="flex items-center flex-no-shrink text-white mr-6">
      <svg class="fill-current h-8 w-8 mr-2"   viewBox="0 0 54 54" xmlns="http://www.w3.org/2000/svg">
        <path d="M13.5 22.1c1.8-7.2 6.3-10.8 13.5-10.8 10.8 0 12.15 8.1 17.55 9.45 3.6.9 6.75-.45 9.45-4.05-1.8 7.2-6.3 10.8-13.5 10.8-10.8 0-12.15-8.1-17.55-9.45-3.6-.9-6.75.45-9.45 4.05zM0 38.3c1.8-7.2 6.3-10.8 13.5-10.8 10.8 0 12.15 8.1 17.55 9.45 3.6.9 6.75-.45 9.45-4.05-1.8 7.2-6.3 10.8-13.5 10.8-10.8 0-12.15-8.1-17.55-9.45-3.6-.9-6.75.45-9.45 4.05z"
        />
      </svg>
      <span class="font-semibold text-xl tracking-tight">Tailwind CSS</span>
    </div>
    <div class="block lg:hidden">
      <button class="flex items-center px-3 py-2 border rounded text-white border-white hover:text-blue-darkest hover:bg-white"
        onclick="myFunction()">
        <svg class="fill-current h-3 w-3" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
          <title>Menu</title>
          <path d="M0 3h20v2H0V3zm0 6h20v2H0V9zm0 6h20v2H0v-2z" />
        </svg>
      </button>
    </div>
    <div class="w-full hidden lg:block flex-grow lg:flex lg:items-center lg:w-auto" id="nav">
      <div class="text-sm lg:flex-grow">
        <a href="#responsive-header" class="block mt-4 lg:inline-block lg:mt-0 text-teal-lighter hover:text-white mr-4">
          Docs
        </a>
        <a href="#responsive-header" class="block mt-4 lg:inline-block lg:mt-0 text-teal-lighter hover:text-white mr-4">
          Examples
        </a>
        <a href="#responsive-header" class="block mt-4 lg:inline-block lg:mt-0 text-teal-lighter hover:text-white">
          Blog
        </a>
      </div>
      <div>
        <a href="#" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-white hover:border-transparent hover:text-teal hover:bg-white mt-4 lg:mt-0">Download</a>
      </div>
    </div>
  </nav>

javascript 代码:

function myFunction() 
    var x = document.getElementById("nav");
    if (x.className === "hidden") 
        x.classList.toggle("hidden");
     else 
        console.log("nav");
        x.className = "hidden";
    

我该如何解决这个问题?

【问题讨论】:

能否提供错误信息? 【参考方案1】:

也完全可以在显示元素上使用 Tailwind CSS 的响应式修饰符。

您可以将 nav 元素的类更改为 md:flex block 或类似的东西,而不仅仅是 flex。当然,您需要在实际站点上调整的正确显示值和响应实用程序是通过一些试验来实现的。

来自 Tailwind CSS wiki 的引述:

要控制特定断点处元素的显示属性,请将screen: 前缀添加到任何现有的显示实用程序类。例如,使用md:inline-flex 将 inline-flex 实用程序仅应用于中等大小及以上的屏幕。

您可以阅读更多in the Tailwind CSS wiki。

除此之外,这里有一个建议:您可以将myFunction 缩减为仅四行代码。目前,您的 if-else 语句只是在做 classList.toggle 已经在做的事情,但是是手动的。如果检查在那里是因为您想检查是否获得了正确的元素,那么请注意,您应该永远不要在单个页面上有多个具有相同 id 的元素

function myFunction() 
    var x = document.getElementById("nav");
    x.classList.toggle("hidden");

【讨论】:

以上是关于顺风 CSS 导航栏的主要内容,如果未能解决你的问题,请参考以下文章

导航栏对齐顺风左右不相等

导航栏顺风在 xl 处不会消失

导航栏中的用户菜单下拉菜单

css 浏览器导航栏如何将按钮平均放置

请教大家一个关于css水平导航栏的问题?

html css 求助大神:导航栏菜单问题,二级菜单内容会遮盖掉后面的一级菜单栏选项。