SuperAPI AI 工具集

scss-style-guide

前端与建站

查看项目

更新于 10-16 04:04

技能介绍

用途

scss-style-guide 是 SAP fundamental-styles 项目使用的 SCSS/CSS 编码标准与模式,适用于以下场景:编写新的 SCSS 组件文件、重构现有 SCSS 代码、评审 SCSS 变更,以及解答关于 fundamental-styles CSS 架构的问题。

主要能力

该规范覆盖以下方面:

  • 架构与方法论:采用严格的 BEM(Block Element Modifier)模式。块命名格式为 .fd-{component},元素为 .fd-{component}__{element},修饰符为 .fd-{component}--{modifier}。块变量格式为 $block: #{$fd-namespace}-component-name;,使用 Sass 嵌套与 & 生成单层类选择器。
  • 组件自包含:每个组件必须完全独立,禁止在组件内为其他组件设置样式。若需调整子组件,应创建专门的修饰符类(如 .fd-button--in-card),并在两个组件文件中记录关系。
  • 文件结构与导入:规定标准文件头,包括 @use 'sass:map';(仅在使用 Sass map 时)、@import './new-settings'; 或组件专用变量文件、@import './mixins';,随后定义块变量与组件专用变量/map。
  • 重置 mixin:@include fd-reset(); 为强制要求,必须出现在块和每个元素的开头;修饰符禁止使用该 mixin。
  • CSS 自定义属性模式:所有状态变化与定制使用 CSS 变量。变量命名格式为 --fd{Component}_{Property}_{Context},组件名用 PascalCase,其余用 snake_case。修饰符应覆盖变量而非直接设置属性。
  • 循环生成重复属性:使用 @each 循环处理颜色集、尺寸、编号变体等系统性重复模式。
  • 嵌套深度与选择器:最多 3 层嵌套,保持文件“扁平”,优先使用单类选择器,避免通配符、直接子代、标签选择器及多类特异性。伪选择器、同组件内的上下文选择器和状态组合属于例外。
  • 单位与取值:优先使用主题变量(如 var(--sapTextColor));无主题变量时使用 rem(如 1rem、0.0625rem 表示 1px);禁止直接使用 px;无单位值、零值、百分比和 calc 计算均允许。
  • RTL 感知间距与边框:必须使用逻辑属性或 RTL 感知 mixin 处理方向性间距和边框。逻辑属性包括 margin-block、margin-inline、padding-inline-start、inset-inline-start、border-inline-start、border-start-start-radius 等。必要时使用 fd-set-position-right、fd-set-margin-left、fd-set-padding-right、fd-rtl() 等 mixin。
  • 状态与伪类 mixin:提供 fd-hover()、fd-active()、fd-focus()、fd-disabled()、fd-selected()、fd-toggled()、fd-readonly() 等状态 mixin。
  • 响应式与紧凑模式:使用 fd-media-md()、fd-media-sm() 处理响应式断点;使用 fd-compact-or-condensed() 处理紧凑/压缩模式。
  • 常用 mixin 与工具:包括 fd-flex()、fd-flex-center()、fd-flex-vertical-center()、fd-inline-flex-center() 等 Flexbox 布局工具,以及 RTL 感知的定位工具。

使用方式

该规范以文档形式提供,开发者在编写、重构或评审 SCSS 代码时参照其中的规则与示例。规范中给出了大量代码示例,展示正确与错误的写法。

适用场景

适用于 fundamental-styles 项目的 SCSS 组件开发与维护,尤其是需要保持 BEM 一致性、支持 LTR/RTL 双向布局、使用 CSS 自定义属性进行主题化、以及需要响应式和紧凑模式支持的场景。

限制

该规范针对 fundamental-styles 项目及其命名空间与 mixin 体系,其他项目直接套用可能需要调整。资料中未提供安装命令、版本要求、收费信息或平台限制等细节。