SCSS 嵌套与 CSS 选择器结合的核心技巧在于通过合理嵌套表达 DOM 层级关系,利用 & 符号实现选择器组合,同时控制嵌套深度并配合命名规范提升可维护性。 以下是具体技巧与示例:
1. 基础嵌套:表达 DOM 父子关系- 作用:直接在父选择器内嵌套子元素,生成标准的后代选择器(如 .parent .child)。
- 示例:.card { background: white; border-radius: 8px; .title { font-size: 1.2em; color: #333; } .content { padding: 16px; }}
- 编译结果:.card { background: white; border-radius: 8px; }.card .title { font-size: 1.2em; color: #333; }.card .content { padding: 16px; }
- 适用场景:描述 HTML 中明确的父子结构(如卡片标题、内容区)。
2. 使用 & 符号:灵活组合选择器- 作用:& 代表父选择器的引用,可用于生成类组合、伪类、兄弟选择器等。
- 常见用法:
类组合(无空格):&.class 生成 .parent.class。
伪类/伪元素:&:hover 生成 .parent:hover。
兄弟选择器:& + & 生成 .parent + .parent。
- 示例:.btn { &.primary { background: blue; } // .btn.primary &:hover { opacity: 0.8; } // .btn:hover & + & { margin-left: 8px; } // .btn + .btn}
- 优势:避免重复书写父选择器,代码更简洁。
3. 控制嵌套深度:避免过度嵌套4. 结合 BEM 命名规范:增强模块化5. 其他实用技巧- 占位符选择器(%):复用通用样式,避免重复代码。%text-style { font-family: Arial; color: #333;}.title { @extend %text-style; font-size: 1.5em;}
- 变量与混合(@mixin):管理颜色、间距等重复值。$primary-color: blue;@mixin flex-center { display: flex; justify-content: center;}.btn { background: $primary-color; @include flex-center;}
总结:最佳实践- 合理嵌套:用嵌套表达直接 DOM 关系,避免深层嵌套。
- 善用 &:灵活生成组合选择器,减少重复代码。
- 命名规范:结合 BEM 或其他规范,保持样式唯一性。
- 控制特异性:避免选择器过长,优先使用类选择器。
通过以上技巧,SCSS 代码既能直观反映 HTML 结构,又能生成高效、可维护的 CSS。