You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过CSS的@apply指令将h1样式复用至自定义类.my-class?

实现方法说明

首先明确:原生CSS里曾经有过@apply指令的提案,但这个提案已经被废弃,现在不能在生产环境中使用。不过你要的需求完全可以通过其他方式实现,下面给你两种靠谱的方案:

方案一:原生CSS自定义变量(推荐无预处理器场景)

把h1的样式拆解成自定义变量,然后分别在h1和.my-class中引用这些变量,这样既不用修改h1的选择器,也能保证两者样式一致:

/* 先在根元素定义h1的样式变量 */
:root {
  --h1-font-size: 30px;
  --h1-font-weight: 700;
  --h1-line-height: 1.2;
  --h1-color: #2d3748;
  /* 把h1所有需要复用的样式都转成变量 */
}

/* 基础h1样式 */
h1 {
  font-size: var(--h1-font-size);
  font-weight: var(--h1-font-weight);
  line-height: var(--h1-line-height);
  color: var(--h1-color);
  /* 其他专属h1的样式(如果有的话) */
}

/* 条件加载的.my-class */
.my-class {
  /* 直接引用h1的样式变量 */
  font-size: var(--h1-font-size);
  font-weight: var(--h1-font-weight);
  line-height: var(--h1-line-height);
  color: var(--h1-color);
  /* 如果需要,还可以添加.my-class的专属样式 */
}

这种方式完全基于原生CSS,不需要额外工具,适合不想引入预处理器的项目。

方案二:CSS预处理器混入(Mixin,推荐有预处理器场景)

如果你的项目用了Sass、Less这类预处理器,用混入功能会更高效,直接把h1的样式封装成一个可复用的块,然后分别在h1和.my-class中调用:

Sass示例:

// 定义h1样式的混入
@mixin h1-styles {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.2;
  color: #2d3748;
  /* ...其他h1样式 */
}

// 给h1应用混入
h1 {
  @include h1-styles;
}

// 条件加载的.my-class应用同一个混入
.my-class {
  @include h1-styles;
}

编译后的CSS会自动把混入里的样式分别注入到h1和.my-class的规则中,完美满足你“不修改h1选择器、条件加载复用样式”的需求。

Less示例:

// 定义h1样式的混入
.h1-styles() {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.2;
  color: #2d3748;
  /* ...其他h1样式 */
}

// 给h1应用混入
h1 {
  .h1-styles();
}

// 条件加载的.my-class应用同一个混入
.my-class {
  .h1-styles();
}

注意事项

  • 原生CSS没有“直接继承另一个选择器所有样式”的功能,只能通过变量或者预处理器来间接实现。
  • 不要尝试用@apply,它已经从标准中移除,主流浏览器都不支持了。

内容的提问来源于stack exchange,提问作者blaumeise20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:24:29