CSS 预处理器

CSS 预处理器是一种扩展了 CSS 功能的脚本语言,允许使用变量、嵌套规则、混合(Mixins)、函数 等编程技术,这些功能在原生 CSS 中是不支持的,使CSS 代码更加模块化、易于维护、复用性更高。目前最流行的 CSS 预处理器包括 Sass、Less 和 Stylus。

1. Sass

Sass 是最早也是最受欢迎的 CSS 预处理器之一,由 Hampton Catlin 创建,后来被 Ruby 社区接管并继续发展。Sass 有两种语法:SCSS(Sassy CSS)和 Sass(缩进语法)。

SCSS 使用大括号{}和分号;来分隔语句和声明。

css 复制代码
$primary-color: #333;  
.container {   
  color: $primary-color;  
}

Sass使用缩进来表示代码块,不使用大括号和分号。

css 复制代码
$primary-color: #333  
.container  
  color: $primary-color  

混合 @mixin定义 ``@include调用

css 复制代码
@mixin button-style {  
  display: inline-block;  
  padding: 10px 20px;  
  font-size: 16px;  
  cursor: pointer;  
  border-radius: 5px;  
  border: none;  
  &:hover {  
    background-color: #eee;  
  }  
}  
  
.button {  
  @include button-style;  
  background-color: blue;  
  color: white;  
}

继承 @extend

css 复制代码
.message {  
  border: 1px solid #ccc;  
  padding: 10px;  
  color: #333;  
}  
  
.success {  
  @extend .message;  
  border-color: green;  
}
  • 变量:可以存储颜色、字体、选择器名等。
  • 嵌套规则:可以减少重复代码,提高代码的可读性。
  • 混合(Mixins):允许定义一组 CSS 声明,然后可以在一个地方引入它们,或者在多个地方重用。
  • 继承:Sass 允许一个选择器继承另一个选择器的样式。
  • 函数:Sass 有内置函数,也允许定义自己的函数。

2. Less

Less 是由 Alexis Sellier 开发的另一个流行的 CSS 预处理器,它的语法类似于 CSS,并且扩展了 CSS 的功能。Less 允许你使用变量、嵌套规则、混合(mixins)和函数等特性。

css 复制代码
@primary-color: #333;  
.container {    
  color: @primary-color;   
}

混合

css 复制代码
.button-style() {  
   ...
}  
  
.button {  
  .button-style();  
  background-color: blue;  
  color: white;  
}

继承Less 原生并不直接支持继承,这里通过混合来模拟

css 复制代码
.message() {  
  border: 1px solid #ccc;  
  padding: 10px;  
  color: #333;  
}  
  
.message {  
  .message();  
}  
  
.success {  
  .message();  
  border-color: green;  
}
  • 运算:Less 支持在属性值中进行数学运算。

3. Stylus

Stylus 是一个富有表现力的、健壮的、动态的 CSS 语言,由 TJ Holowaychuk 编写。Stylus 的语法非常灵活,几乎可以写成任何你想要的样式。它允许你使用缩进、分号、大括号或任何组合来编写样式。

css 复制代码
$primary-color = #333  
.container   
  color $primary-color  

混合

css 复制代码
button-style()  
  ... 
  
.button  
  button-style()  
  background-color blue  
  color white

继承 extend()

css 复制代码
.message  
  border 1px solid #ccc  
  padding 10px  
  color #333  
  
.success  
  extend(.message)  
  border-color green
  
  • 条件语句和循环:Stylus 允许编写条件语句和循环,这是 Sass 和 Less 所不具备的。

区别

1、定义变量

都使用**$** 符号来定义变量,Less 也可以使用@,Stylus 不能以@开头。

2、混合

Sass/SCSS使用@mixin@include来定义和调用混合,而Less则使用.(点)语法。

Stylus 使用类似函数的方式来定义和调用可重用的代码块,但语法更加灵活。

3、继承

Sass/SCSS使用@extend指令,而Less则通过嵌套和混合来实现类似的功能。

Stylus 使用extend()函数来实现继承。

相关推荐
PineappleCoder3 分钟前
WebP/AVIF 有多香?比 JPEG 小 30%,<picture>标签完美解决兼容性
前端·面试·性能优化
Kaze_story4 分钟前
Vue第五章(1):scoped、组件通信
前端·javascript·vue.js
hayzone4 分钟前
Git 配置与使用全攻略(含工作流对比与 AI 协作)
前端
匠心网络科技5 分钟前
前端框架-Vue为何开发更高效?
前端·javascript·vue.js·前端框架
大风起兮云飞扬丶7 分钟前
react大列表更新时优化
前端·react.js·前端框架
0思必得09 分钟前
[Web自动化] HTML5常见新增标签
前端·python·自动化·html5·web自动化
Alair‎10 分钟前
103React数据处理
开发语言·前端·javascript
Zhi.C.Yue14 分钟前
React 状态更新中的双缓冲机制、优先级调度
前端·javascript·react.js
nnnnna16 分钟前
插槽(Slots)(完整详细版)
前端·vue.js
游戏开发爱好者818 分钟前
H5 混合应用加密 Web 资源暴露到 IPA 层防护的完整技术方案
android·前端·ios·小程序·uni-app·iphone·webview