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()函数来实现继承。

相关推荐
m0_748247551 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255022 小时前
前端常用算法集合
前端·算法
真的很上进2 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203982 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
NiNg_1_2342 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1233 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~4 小时前
npm error code ETIMEDOUT
前端·npm·node.js
沙漏无语4 小时前
npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
supermapsupport4 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap
brrdg_sefg4 小时前
WEB 漏洞 - 文件包含漏洞深度解析
前端·网络·安全