当前位置: 首页 > news >正文

关于less/sass两个css预处理器的总结

对于只会用他们的嵌套功能的前端,在开发多租户项目时,遇到了不同租户的样式隔离功能,现在做出功能总结方便后续使用。

1.基本信息

LessSass
语法更接近原生 CSS语法类似 CSS(使用大括号和分号)
文件后缀为 .less后缀 .scss

2.安装

方式LessSass
Node.js 工具npm install -g lessnpm install -g sass
构建工具集成Webpack(less-loader)、Gulp(gulp-lessWebpack(sass-loader)、Gulp(gulp-sass
GUI 工具Koala、CodeKitKoala、CodeKit
在线编译Less2CSSSassMeister

3.语法对比

3.1 变量

用于存储颜色、尺寸等重复使用的值,便于统一维护

特性Less(@符号)Sass($ 符号)
基本用法@color: #f00;
.box { color: @color; }
$color: #f00;
.box { color: $color; }
作用域块级作用域(内层变量覆盖外层)全局作用域(需用!global声明全局变量)

3.2 嵌套

模拟 HTML 结构的层级关系,减少代码冗余,提高可读性。

特性LessSass(SCSS)
基本嵌套与 SCSS 一致

.nav {color: #333;a {text-decoration: none;}&:hover {color: #f00;}
}
媒体查询嵌套支持在选择器内嵌套媒体查询支持在选择器内嵌套媒体查询

3.3 混合

封装可复用的样式片段,类似 “函数”,可传递参数

特性LessSass(SCSS)
无参混合

直接使用类选择器作为混合

.border{border: 1px solid #000;}
.box{.border}

需用@mixin定义,@include引用

@mixin border{border:1px solid #fff;}
.box{@include border}
带参混合

//1px为默认值
.border(@width:1px){border:1px solid #fff;    
}
.box{.border(2px)}
@mixin border($width: 1px){border: $width solid #000;
}
.box { @include border(2px); }
复杂逻辑支持简单条件判断(when支持复杂条件、循环等逻辑

3.4 继承

复用另一个选择器的样式,生成更简洁的 CSS(合并选择器)

特性LessSass(SCSS)
语法

使用:extend()

.base { color: #333; }
.box:extend(.base) { font-size: 14px; }

使用@extend

.base { color: #333; }
.box { @extend .base; font-size: 14px; }
注意不支持继承带参数的混合支持继承更复杂的选择器(如伪类)

3.5 运算

支持数字、颜色、尺寸的运算,简化计算逻辑

特性LessSass(SCSS)
数字运算
@width: 100px;
.box { width: @width / 2; }
$width: 100px;
.box { width: $width / 2; } 
颜色运算
@color: #000 + #333; 
$color: #000 + #333; 
单位处理需保证单位一致(如100px + 50会报错)自动处理单位(如100px + 50 → 150px

3.6 导入

拆分样式文件,通过@import合并,减少 HTTP 请求

特性LessSass(SCSS)
基本用法@import "reset.less";(可省略后缀)@import "reset.scss";(可省略后缀)
局部文件无特殊命名规范文件名以_开头(如_reset.scss),导入时可省略_和后缀
编译时机运行时导入(会生成多个请求,需提前编译)编译时合并(仅生成一个 CSS 文件)

3.7 函数与逻辑控制

提供内置函数和流程控制,实现复杂样式逻辑。

特性LessSass(SCSS)
内置函数较少(如lighten()darken()处理颜色)丰富(颜色、字符串、列表等,如adjust-hue()str-length()
条件判断简单when判断
.mixin(@a) when (@a > 10) { ... }
@if/@else完整判断
@if $a > 10 { ... } @else { ... }
循环仅支持each遍历列表(较新版本)支持@for@each@while循环
@for $i from 1 to 3 {.col-#{$i} { width: 100% / 3 * $i; }}

4.总结

对比维度LessSass(SCSS)
语法友好度更接近 CSS,学习成本低略复杂,但功能更全面
功能丰富度基础功能满足日常需求支持复杂逻辑(循环、多条件),内置函数更多
生态与工具工具较少,依赖 Less.js生态完善(如 Compass 框架),工具支持广泛
适用场景小型项目、快速开发、团队熟悉 CSS大型项目、复杂样式逻辑、需要高度定制化
http://www.dtcms.com/a/340000.html

相关文章:

  • C++常用容器详解:原理、适用场景与代码示例
  • CentOS上安装Docker的完整流程
  • CSP与XSS
  • web开发,在线%服装商城开发demo,基于html,css,jquery,asp.net,webform,sqlserver数据库
  • CNN-LSTM-Attention、CNN-LSTM、LSTM三模型多变量时序光伏功率预测
  • 深度学习图解:神经网络如何学习?
  • [Linux] 网络中的 `tun` 模式
  • 无人机场景 - 目标检测数据集 - 山林野火烟雾检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • Android13车机系统自定义系统栏显示策略之状态栏下拉异常
  • 决策树算法学习总结
  • 楼宇自控系统的应用,已然成为智能建筑行业发展方向
  • 将字符串“1,2,3“转换为“1‘,‘2‘,‘3‘“
  • Hive常用命令参考
  • 如何保证ES和数据库的数据一致性?
  • java基础(十二)redis 日志机制以及常见问题
  • langChain—状态管理:跟踪复杂任务的上下文流程
  • Linux 进程间通信(IPC):信号、共享内存
  • 内网后渗透攻击--隐藏通信隧道技术(压缩、上传,下载)
  • 19. 大数据-产品概念
  • MySQL 从入门到精通 11:触发器
  • 【群晖NAS】在openwrt上实现内网穿透,并配置外网IP映射(Debian/Ubuntu)
  • 2025-08-19利用opencv检测图片中文字及图片的坐标
  • RocketMq消费者动态订阅topic
  • 【PyTorch项目实战】OpenNMT本地机器翻译框架 —— 支持本地部署和自定义训练
  • 千里马招标网站的核心技术分析
  • qwen2.5vl(1): 环境安装及运行
  • 二维图像处理(完整版2)
  • iOS安全和逆向系列教程 第22篇:iOS应用网络安全与通信保护
  • 自学python第10天
  • 路由器最大传输速率测试