什么是CSS中的@apply?

Gam*_*der 32 css

首先,我指的是CSS标签.

我用Google搜索了,@apply但我找不到任何可以为我正确解释其含义的内容.

这种标签的用途是什么?

Joe*_*sle 34

Tailwind将其用作特殊指令。

Tailwind@apply有点像超一流。您可以列出应适用于此规则的其他类。我认为这是一种将经常在一起的课程分组在一起的方式。

  • 它是 CSS 的一部分,还是 Tailwind 的预处理器处理的东西。 (4认同)
  • @Qasim顺风预处理器。“指令是自定义的 Tailwind 特定 at 规则,您可以在 CSS 中使用,为 Tailwind CSS 项目提供特殊功能。” (2认同)

oqx*_*oqx 15

解释它的简单方法是; 将变量引入css(这是sass等预处理器的一个特性)和mixin,它们的功能类似于行为(也在预处理器中).

想象这--header-theme是一个函数(mixin)

:root {
  --header-theme: {
    color: red;
    font-family: cursive;
    font-weight: 600;
  };
}

h1 {
  @apply --header-theme;
}


h2 {
  @apply --header-theme;
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在许多不同的地方使用它,而无需再次重写DRY

现在变量部分可以用这个例子来解释

:root {
  --brand-color: red;/*   default value*/
  --header-theme: {
    color: var(--brand-color);
    font-family: cursive;
    font-weight: 600;
  };
}

h1 {
  @apply --header-theme;
}


h2 {
  --brand-color: green; 
  @apply --header-theme;
}
Run Code Online (Sandbox Code Playgroud)

mixin将发送一个变量并更改颜色

这不是功能的限制,你可以使用它更多,你可以在SASS中阅读更多关于mixin和变量的其他使用方法,之后我建议你阅读这篇博文

现在,当我让你兴奋,时间到了坏消息,它还没有在Chrome浏览器中实现,它仍然值得知道它即将到来,也许你想准备自己从SASS开始

  • 规范作者的博客文章“为什么我放弃了@apply”表明此功能_不会_进入未来的浏览器。我发现的规范 - https://tabatkins.github.io/specs/css-apply-rule/#intro 撤回 - http://www.xanthir.com/b4o00 (3认同)
  • 这是一个非常简短但详细的解释。感谢您提供如此有用的答案!我有 SAS 背景,但第一次开始使用 tailwind css。 (2认同)

Eri*_*ers 10

@apply来自一项提案,该提案自此被放弃,并由CSS Shadow Parts取代。

@apply规则,该规则允许作者将一组属性存储在一个命名变量中,然后在其他样式规则中引用它们。

  • 不幸的是...CSS Shadow Parts 提供了一个完全不同的实用程序:它允许以与普通 DOM 类似的方式使用原生 Shadow DOM。虽然“@apply”只是一组样式的简写,但它可以帮助我们在不使用后处理器的情况下编写 DRY 代码。 (6认同)
  • `@apply` **不**被 _CSS Shadow Parts_ 取代。它们是两个毫无共同点的 CSS 规范。 (6认同)

Rol*_*olf 6

@apply很酷 它基本上使您可以重复使用CSS块,而不必在周围复制它们,也无需修改其选择器。

使用CSS框架并同时保留语义类名称将变得更加容易。

我发现这篇文章很好地说明了此功能。

不幸的是,目前基本上没有浏览器支持。它可以与CSS预处理器(如PostCSS)一起使用

如果我了解得很好,那么未来也不确定。该功能背后的主要倡导者停止了对其的支持