Skip to content

样式

介绍

主要介绍如何在项目中使用和规划样式文件。

默认使用 scss 作为预处理语言。

项目中使用的通用样式,都存放于 packages/shared/style 下面。如果需要自定义, 请在对应项目目录下进行重写

全局注入

base.scss 以及 mixin.scss 这个文件会被全局注入到所有文件,所以在页面内可以直接使用变量而不需要手动引入

开启 scoped

没有加 scoped 属性,默认会编译成全局样式,可能会造成全局污染

vue
<style></style>

<style scoped></style>

温馨提醒

使用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。

深度选择器

有时我们可能想明确地制定一个针对子组件的规则。

如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符。有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/::v-deep 操作符取而代之——两者都是 >>> 的别名,同样可以正常工作。

详情可以查看 RFC0023-scoped-styles-changes

使用 scoped 后,父组件的样式将不会渗透到子组件中,所以可以使用以下方式解决:

vue
<style scoped>
  /* deep selectors */
  ::v-deep(.foo) {
  }
  /* shorthand */
  :deep(.foo) {
  }

  /* targeting slot content */
  ::v-slotted(.foo) {
  }
  /* shorthand */
  :slotted(.foo) {
  }

  /* one-off global rule */
  ::v-global(.foo) {
  }
  /* shorthand */
  :global(.foo) {
  }
</style>

CSS 样式覆盖

针对 样式覆盖 以及 重复引用 问题,放到 黑暗主题 去详细说明

MIT Licensed