css与scss
CSS 是网页样式的基础语言,语法简洁但功能单一;SCSS 是 CSS 的超集(属于 Sass 预处理器的一种语法格式),它在 CSS 的基础上增加了变量、嵌套、混合、继承等高级功能,写起来更高效、易维护,最终还需要编译成普通 CSS 才能被浏览器识别。
一、核心定义与关系
- CSS(层叠样式表)是浏览器原生支持的样式语言,用于描述 HTML 元素的显示样式,语法是 “选择器 + 声明块” 的形式,没有任何编程化的特性,属于纯样式描述语言。
- SCSS(Sassy CSS)是 Sass(Syntactically Awesome Style Sheets,CSS 预处理器)在版本 3.0 后推出的新语法,完全兼容 CSS 的语法(你可以把普通 CSS 代码直接复制到 SCSS 文件中,完全生效),同时增加了编程化的特性。另外,Sass 还有一种老语法(缩进语法,后缀为
.sass),但现在SCSS(后缀.scss)是主流,因为它和 CSS 语法更接近,学习成本更低。
二、关键区别(附代码示例)
1. 语法格式
CSS:必须严格使用大括号
{}包裹声明,分号;结尾,没有嵌套的语法糖(只能重复写选择器)。1
2
3
4
5
6
7
8
9
10
11
12/* CSS写法 */
.container {
width: 1200px;
margin: 0 auto;
}
.container .header {
height: 80px;
background: #fff;
}
.container .header .logo {
width: 100px;
}
SCSS:兼容 CSS 语法,同时支持嵌套语法(可以把子选择器写在父选择器内部),代码结构更清晰,减少重复代码。
1 | /* SCSS写法(嵌套) */ |
2. 变量支持
CSS:CSS3 也支持变量,但语法繁琐(需要用
--变量名定义,var(--变量名)使用),且功能有限。/* CSS变量 */ :root { --main-color: #2c3e50; --font-size: 16px; } .box { color: var(--main-color); font-size: var(--font-size); }/* SCSS变量 */ $main-color: #2c3e50; $font-size: 16px; $box-width: 200px;1
2
3
4
5
**SCSS**:支持更简洁的变量定义(`$变量名: 值;`),可以在任何地方使用,还能进行运算。
.box {
color: $main-color;
font-size: $font-size;
width: $box-width + 50px; // 支持运算,最终宽度为250px
}
1 |
|
/* SCSS Mixin(带参数) */
@mixin flex-center($direction: row) {
display: flex;
flex-direction: $direction;
justify-content: center;
align-items: center;
}
/* 继承的基础样式 */
.base-box {
padding: 10px;
border: 1px solid #eee;
}
.card {
@extend .base-box; // 继承base-box的样式
@include flex-center; // 使用mixin,默认row方向
background: #fff;
}
.form {
@extend .base-box;
@include flex-center(column); // 传递参数,column方向
}
#### 4. 编译与运行
- **CSS**:浏览器可以直接识别和执行,无需额外处理。
- **SCSS**:浏览器无法直接识别,必须通过编译工具(如 Sass CLI、Webpack、Vite、Gulp 等)编译成普通 CSS 文件后,才能在网页中使用。



