如何在 tailwindcss 中覆盖 @apply 指令

ope*_*sas 10 html css tailwind-css

是否可以覆盖@apply指令?

\n

我有这个例子:https ://play.tai​​lwindcss.com/kyu6CxnBzB

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

结果如下:

\n

在此输入图像描述

\n

当我期待的时候

\n

在此输入图像描述

\n

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

\n

你会如何解决这样的场景?创建一个组件(我正在使用 svelte)似乎对此太过分了,我\xc2\xb4d喜欢某种方法来避免重复诸如“font-sans text-black text-black text-opacity-80 my-”之类的内容4 悬停:文本灰色-800 悬停:文本下划线等...”

\n

And*_*lis 18

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

@layer components {
  .item {
    @apply text-black font-light text-opacity-80 py-4 bg-gray-100;
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • @NicholasBetsworth 不完全是一个解决方案,而是一个解决方法。如果您使用 JIT 模式,您可以在内联类前面添加“!”前缀,以将它们标记为重要。还有其他更具侵入性的方法可以做到这一点,例如在顺风配置中将所有实用程序设置为重要,但我不太喜欢这样做,如果您从一开始就没有在编写类时考虑到该选项,您可能会遇到意外的行为。检查我问的这个问题以及对答案的评论:/sf/ask/4887757801/ (3认同)