CSS预处理器实战:Sass/Less/Stylus对比与最佳实践

CSS预处理器实战:Sass/Less/Stylus对比与最佳实践

大家好,我是蔓蔓。CSS预处理器能让我们编写更高效、更可维护的CSS代码。今天我来和大家分享Sass、Less和Stylus的对比与最佳实践。

Sass

变量

scss 复制代码
// 定义变量
$primary-color: #1890ff;
$font-size: 14px;

// 使用变量
.button {
  color: $primary-color;
  font-size: $font-size;
}

嵌套

scss 复制代码
.container {
  width: 100%;
  
  .header {
    padding: 20px;
    
    &:hover {
      background-color: #f5f5f5;
    }
    
    .title {
      font-size: 20px;
    }
  }
}

Mixins

scss 复制代码
@mixin flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

@mixin responsive($breakpoint) {
  @media (max-width: $breakpoint) {
    @content;
  }
}

.card {
  @include flex-center;
  
  @include responsive(768px) {
    flex-direction: column;
  }
}

函数

scss 复制代码
@function px-to-rem($px, $base-font-size: 16px) {
  @return ($px / $base-font-size) * 1rem;
}

.text {
  font-size: px-to-rem(24px); // 1.5rem
}

Less

变量

less 复制代码
@primary-color: #1890ff;
@font-size: 14px;

.button {
  color: @primary-color;
  font-size: @font-size;
}

嵌套

less 复制代码
.container {
  width: 100%;
  
  .header {
    padding: 20px;
    
    &:hover {
      background-color: #f5f5f5;
    }
  }
}

Mixins

less 复制代码
.flex-center() {
  display: flex;
  align-items: center;
  justify-content: center;
}

.responsive(@breakpoint) {
  @media (max-width: @breakpoint) {
    @content;
  }
}

.card {
  .flex-center();
  
  .responsive(768px) {
    flex-direction: column;
  }
}

Stylus

变量

stylus 复制代码
primary-color = #1890ff
font-size = 14px

.button
  color primary-color
  font-size font-size

嵌套

stylus 复制代码
.container
  width 100%
  
  .header
    padding 20px
    
    &:hover
      background-color #f5f5f5
    
    .title
      font-size 20px

Mixins

stylus 复制代码
flex-center()
  display flex
  align-items center
  justify-content center

responsive(breakpoint)
  @media (max-width: breakpoint)
    {block}

.card
  flex-center()
  
  responsive(768px)
    flex-direction column

最佳实践

文件组织

复制代码
src/
├── styles/
│   ├── variables.scss    # 变量定义
│   ├── mixins.scss       # 混合宏
│   ├── functions.scss    # 函数
│   ├── reset.scss        # 重置样式
│   ├── base.scss         # 基础样式
│   └── components/       # 组件样式
│       ├── button.scss
│       ├── card.scss
│       └── form.scss

模块化导入

scss 复制代码
// main.scss
@import './variables';
@import './mixins';
@import './functions';
@import './reset';
@import './base';
@import './components/button';
@import './components/card';

命名规范

scss 复制代码
// BEM命名
.block {
  &__element {
    &--modifier {
      
    }
  }
}

// 示例
.card {
  &__header {
    &--dark {
      
    }
  }
  
  &__body {
    
  }
}

总结

三种预处理器各有特点:

  • Sass功能最强大,社区最活跃
  • Less语法更接近CSS,学习成本低
  • Stylus语法最简洁,灵活度高

选择适合团队的预处理器,遵循统一的编码规范,能提升CSS代码质量。

技术应当有温度,好的CSS结构能让团队协作更高效。

相关推荐
小雨下雨的雨1 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
我没胡说八道4 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟4 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love4 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇4 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明4 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc4 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技4 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本4 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
极客老王说Agent4 小时前
2026电信IDC机房巡检深度报告:人工巡检频次和深度够吗?实在Agent重塑智慧运维新范式
人工智能·ai·chatgpt