Vize

博物馆与CSS规则

Musea规则验证<art><variant>块。CSS 规则检查风格内容并推荐 保持组件样式主题化、可预测性,并与Vue和Vapor 兼容的模式。

musea/require-title

要求每个艺术文件都必须提供显示标题。标题可以来自<art title="...">defineArt("./Button.vue", { title: "..." }),或者defineArt组件源的备用。

默认严重程度:error

缺点:

<art component="./Button.vue">
  <variant name="primary" />
</art>

好:

<script setup>
defineArt("./Button.vue", { title: "Button" });
</script>

<art>
  <variant name="primary" />
</art>

musea/require-component

要求每个艺术文件都为它所记录的组件命名。更喜欢defineArt("./Button.vue", ...); <art component="...">仍然支持兼容性。

默认严重程度:warning

缺点:

<art title="Button">
  <variant name="primary" />
</art>

好:

<script setup>
defineArt("./Button.vue", { title: "Button" });
</script>

<art>
  <variant name="primary" />
</art>

musea/valid-variant

要求<variant>块必须有有效的name

默认严重程度:error

缺点:

<art title="Button" component="./Button.vue">
  <variant />
</art>

好:

<art title="Button" component="./Button.vue">
  <variant name="primary" />
</art>

musea/unique-variant-names

要求变体名称在同一艺术区块内是唯一的。

默认严重程度:error

缺点:

<art title="Button" component="./Button.vue">
  <variant name="primary" />
  <variant name="primary" />
</art>

好:

<art title="Button" component="./Button.vue">
  <variant name="primary" />
  <variant name="secondary" />
</art>

musea/no-empty-variant

报告空变体,这些变体不记录道具、槽位或视觉状态。

默认严重程度:warning

缺点:

<art title="Button" component="./Button.vue">
  <variant name="primary" />
</art>

好:

<art title="Button" component="./Button.vue">
  <variant name="primary">
    <Button tone="primary">Save</Button>
  </variant>
</art>

musea/prefer-design-tokens

在 Musea 示例中,更倾向于使用设计令牌 CSS 变量,而非硬编码的原始值。

默认严重程度:warning

缺点:

<art title="Button" component="./Button.vue">
  <variant name="danger">
    <Button style="color: #d00">Delete</Button>
  </variant>
</art>

好:

<art title="Button" component="./Button.vue">
  <variant name="danger">
    <Button class="danger">Delete</Button>
  </variant>
</art>

<style scoped>
.danger {
  color: var(--color-danger-text);
}
</style>

css/no-important

这让我却步,打消!important

默认严重程度:warning

缺点:

<style scoped>
.button {
  color: red !important;
}
</style>

好:

<style scoped>
.button {
  color: var(--button-color);
}
</style>

css/no-hardcoded-values

建议用CSS变量代替硬编码的颜色、间距或大小值。

默认严重程度:warning

缺点:

<style scoped>
.button {
  padding: 12px 16px;
  color: #174ea6;
}
</style>

好:

<style scoped>
.button {
  padding: var(--space-3) var(--space-4);
  color: var(--color-action-text);
}
</style>

css/no-id-selectors

在组件样式中不鼓励使用ID选择器,因为它们难以覆盖和重复使用。

默认严重程度:warning

缺点:

<style scoped>
#submit {
  font-weight: 600;
}
</style>

好:

<style scoped>
.submit {
  font-weight: 600;
}
</style>

css/no-display-none

建议使用 Vue 可视化原语,而不是用 CSS 隐藏组件分支。

默认严重程度:warning

缺点:

<template>
  <p class="message">Saved</p>
</template>

<style scoped>
.message {
  display: none;
}
</style>

好:

<template>
  <p v-show="isSaved" class="message">Saved</p>
</template>

css/no-v-bind-performance

提醒热样式中 CSS v-bind() 的运行成本。

默认严重程度:warning

缺点:

<style scoped>
.card {
  transform: translateX(v-bind(offset));
}
</style>

好:

<template>
  <article :style="{ transform: `translateX(${offset}px)` }" class="card" />
</template>

css/prefer-logical-properties

推荐国际化布局的逻辑属性。

默认严重程度:warning

缺点:

<style scoped>
.panel {
  margin-left: 1rem;
}
</style>

好:

<style scoped>
.panel {
  margin-inline-start: 1rem;
}
</style>

css/prefer-slotted

建议在设计槽位内容时要::v-slotted()

默认严重程度:warning

缺点:

<style scoped>
.content h2 {
  margin-block: 0;
}
</style>

好:

<style scoped>
::v-slotted(h2) {
  margin-block: 0;
}
</style>

css/require-font-display

@font-face声明中需要font-display

默认严重程度:warning

缺点:

<style>
@font-face {
  font-family: "Inter";
  src: url("/inter.woff2") format("woff2");
}
</style>

好:

<style>
@font-face {
  font-family: "Inter";
  src: url("/inter.woff2") format("woff2");
  font-display: swap;
}
</style>

额外的CSS规则

css/no-utility-classes警告不要在组件样式中实现实用类。默认: warning

css/prefer-nested-selectors建议后代选择器使用CSS嵌套。默认值:warning