CSS中的@apply是什么?


81

首先,我指的是CSS标签。

我已经在Google上搜索过,@apply但是找不到任何可以为我正确解释其含义的东西。

这样的标签有什么用?



1
你在哪里碰到的?
j08691 2013年

2
我在以下链接上看到了它:github.com/y0ssar1an/CSS3
GameCoder

44
为什么这么多人对此表示反对?这是一个完全正确的问题,涉及许多人显然不了解的CSS的高级功能。Tailwind大量使用了该@apply指令。不要这么快就忽略人们的问题。这太多了。此外,我注意到OP不再是stackoverflow的成员,他是否因此而离开了?真可怜
stephenmurdoch

Answers:


29

解释它的简单方法是;将变量引入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;
}

这样一来,你可以在许多不同的地方使用它,而无需再次改写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;
}

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

这不是此功能的限制,您可以阅读更多,您可以阅读更多有关SASS中的mixin和变量的信息,以了解其他使用它的方式,在我建议您阅读此博客文章之后

现在,让我兴奋之后,该是个坏消息了,它不是在浏览器中实现的,而是chrome,仍然值得知道它即将到来,也许如果您想为开始使用SASS做准备


var函数在SASS中的作用与javascript中相同吗?抱歉,我不知道SASS。
GameCoder

变量是从一个位置完全相同的控件,而不是重写该控件,该函数有些不同,但是它具有相同的基本思想,我想说的是;现在您仍然无法使用它;因此,如果您对功能检查sass(ruby)或更少(node.js)感到好奇,那就想到了这个想法
oqx

2
规范作者的博客文章标题为“为什么我放弃@apply”,建议该功能不会在未来的浏览器中使用。我找到的规格-tabatkins.github.io/specs/css-apply-rule/#intro收录-xanthir.com/b4o00


7

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

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

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

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

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


ik!我喜欢在中从Tailwind CSS使用这些类的方式@apply。这引入了一种新的样式表处理方式,使您可以重用可重用的砖块,这些砖块也易于分类-您可以对它们进行排序(您可以使用Tailwind CSS文档的ToC这样的引用作为参考),而不再使用属性来扫描样式表有效率的!有很多可能性,例如编写简单的pin射击手而不是全部top/bottom/left/right: 0
vintproykt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.