用途
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 体系,其他项目直接套用可能需要调整。资料中未提供安装命令、版本要求、收费信息或平台限制等细节。