【问题标题】:How to override @apply directives in tailwindcss如何在 tailwindcss 中覆盖 @apply 指令
【发布时间】:2021-07-18 13:05:30
【问题描述】:

是否可以覆盖 @apply 指令?

我有这个例子:https://play.tailwindcss.com/kyu6CxnBzB

.item {
  @apply text-black font-light text-opacity-80 py-4 bg-gray-100;
}
<ul>
  <li class="item">About Us</li>
  <li class="item">Success stories</li>
  <li class="item text-red-50 bg-red-800">Contact</li>
  <li class="item">Blog</li>
</ul>

结果如下:

当我预料到的时候

似乎用 apply (item) 定义的第一个类中的值优先于之后指定的任何其他类

你会如何解决这样的场景?创建一个组件(我正在使用 svelte)似乎对此有点过头了,我想要一些方法来避免重复诸如“font-sans text-black text-black text-opacity-80 my-4 hover: text-gray-800 hover:text-underline etc..."

【问题讨论】:

    标签: html css tailwind-css


    【解决方案1】:

    这是 CSS 的属性,而不是顺风。您的选择器的特异性大于顺风实用程序类的特异性。您可以使用@layer 指令通过定义您的类来解决此问题,如下所示:

    @layer components {
      .item {
        @apply text-black font-light text-opacity-80 py-4 bg-gray-100;
      }
    }
    

    这会在 tailwind 的实用程序类之前声明您的类,因此应该具有较低的特异性。

    参考:https://tailwindcss.com/docs/functions-and-directives#layer

    【讨论】:

    • 非常感谢您的回复,所以如果我理解正确,图层会按照它们在生成的 css 中定义的顺序排列,并且没有图层意味着它会结束。对吗?
    • 该指令只是告诉tailwind 将内容移动到您正在加载tailwind 的任何位置(在这种情况下为@tailwind components;)。如果你在@tailwind components; 之后但在@tailwind utilities; 之前声明你的班级,它最终看起来会一样
    • 如果只使用一个类作为选择器,这将非常有效。但是如果使用链式选择器,这将不再起作用。不知道如何解决这个问题。 play.tailwindcss.com/2nmGe5yad3
    • @Fabius 您有没有找到解决方案?我遇到了同样的问题
    • @NicholasBetsworth 不完全是一个解决方案,而是一种解决方法。如果您使用的是 JIT 模式,您可以为内联类添加前缀 ! 以将它们标记为重要。还有其他更具侵入性的方法,例如在顺风配置中将所有实用程序设置为重要,但我不太喜欢这样,如果您从一开始就没有使用该选项编写类,您可能会遇到意外行为。检查我问的这个问题以及答案的 cmets:stackoverflow.com/questions/69825111
    猜你喜欢
    • 2021-04-20
    • 2021-12-17
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2021-11-21
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多