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 分钟前
RealTalk_AI:基于 Qwen3.5 LiveTranslate 的实时双向语音翻译工具
人工智能
张继雁3 分钟前
不同类型磨削液使用安全注意事项
人工智能·深度学习·安全·业界资讯·远程工作·空间计算
Mr数据杨3 分钟前
用会计信息做GDP增速预测的时序回归实战解析
人工智能·数据分析·kaggle竞赛
ClouGence5 分钟前
一句话直出可运行程序!GLM‑5.3 系列多任务实测
人工智能·agent·ai编程
Mr数据杨11 分钟前
企业年报文本变化预测实战 从文本回归到信息披露分析
人工智能·数据分析·kaggle竞赛
微软技术分享13 分钟前
Apache 2.4.68 编译安装与配置
人工智能·apache·知识图谱
小道士写程序32 分钟前
自然语言处理NLP - 第3章 从字符到Token:机器的输入长什么样
人工智能·机器学习
Mr数据杨33 分钟前
钻石价格预测实战 从 Kaggle 回归赛题看结构化数据建模落地
人工智能·数据分析·kaggle竞赛
Mr数据杨35 分钟前
从 Kaggle 到实战的多标签文本分类案例拆解
人工智能·数据分析·kaggle竞赛