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

CSS预处理器:Sass与Less的语法和特性(含实际案例)

Sass(SCSS语法示例)

1. 变量:统一管理颜色

// 定义变量
$primary-color: #1a237e;
$success-color: #4caf50;
$font-size-base: 16px;// 实际应用
body {color: $primary-color;font-size: $font-size-base;
}.button {background: $success-color;&:hover {background: darken($success-color, 10%); // 内置函数动态调整颜色}
}

案例效果:统一项目主色和字号,轻松修改主题色,避免重复硬编码。

2. 嵌套:简化层级结构

// 嵌套示例
nav {ul {list-style: none;li {a {color: #fff;text-decoration: none;&:hover {background: rgba($primary-color, 0.2);}}}}
}

案例效果:减少选择器嵌套层级,代码更直观,适合复杂组件样式。

3. 混合宏(Mixin):复用样式块

// 定义按钮样式混合宏
@mixin button-style($bg-color, $padding: 10px) {background: $bg-color;padding: $padding;border-radius: 5px;transition: background 0.3s;
}// 实际应用
.primary-btn {@include button-style($primary-color);
}.success-btn {@include button-style($success-color, 15px);
}

案例效果:通过参数化混合宏快速生成不同风格的按钮,减少重复代码。

4. 继承(@extend):复用基础样式

// 基础样式
.base-card {border: 1px solid #ccc;padding: 20px;box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}// 继承并扩展
.featured-card {@extend.base-card;border-color: $primary-color;box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}

案例效果:复用卡片基础样式,通过继承减少冗余,仅覆盖差异部分。

5. 逻辑控制:动态生成响应式样式

// 循环生成栅格系统
@for $i from 1 through 12 {.col-#{$i} {width: $i / 12 * 100%;}
}// 条件判断
$use-dark-theme: true;@if $use-dark-theme {body {background: #333;color: #fff;}
} @else {body {background: #fff;color: #000;}
}

案例效果:自动生成栅格类,根据主题变量动态切换暗/亮模式样式。


Less(语法对比与案例)

1. 变量与混合宏:按钮样式复用

// 定义变量
@base-bg: #fff;
@base-color: #333;// 混合宏(参数化)
.button(@bg: @base-bg, @padding: 10px) {background: @bg;padding: @padding;border-radius: 5px;transition: background 0.3s;
}// 应用
.primary-btn {.button(@primary-color, 15px); // 调用并覆盖默认参数
}

案例效果:与Sass类似,但参数使用@变量名语法,更贴近原生CSS。

2. 条件语句(when):动态样式

// 根据变量值应用样式
@theme-color: green;.button {background: @theme-color;.when(lightness(@theme-color) > 50%) {color: #000; // 浅色背景时调整文本色}.when(lightness(@theme-color) <= 50%) {color: #fff; // 深色背景时调整文本色}
}

案例效果:使用内置函数和条件混合自动适配文本颜色,无需手动判断。

3. 内置函数:随机背景色

.random-bg {background: #`"rgb(" + join(saturate(lighten(random(100%), 30%), 20%), ', ') + ")"`;
}

案例效果:利用join()random()等函数生成随机且饱和度高的背景色。


差异与实战建议

● Sass继承(@extend):适合复用完整样式(如组件基础结构),但需注意过度继承可能增加选择器权重问题。

● Less条件混合(when):适合根据变量动态调整单一属性,配合内置函数灵活度高。

● 实际选择

○ 项目需复杂逻辑(如响应式栅格)、更灵活继承 → Sass

○ 偏好轻量级、接近原生CSS语法 → Less

核心价值:通过变量、复用机制和动态逻辑,减少重复代码,提升样式可维护性,适配大型项目需求。

http://www.lryc.cn/news/2403044.html

相关文章:

  • QT常用控件(1)
  • 明基编程显示器终于有优惠了,程序员快来,错过等一年!
  • 【计算机网络】非阻塞IO——select实现多路转接
  • Figma 中构建 Master Control Panel (MCP) 的完整设计方案
  • 什么是权威解析服务器?权威解析服务器哪些作用?
  • LeetCode--23.合并k个升序链表
  • ComfyUI 工作流
  • 使用glide 同步获取图片
  • 【推荐算法】NeuralCF:深度学习重构协同过滤的革命性突破
  • 负载均衡相关基本概念
  • 服务器中日志分析的作用都有哪些
  • 【React】useId
  • 【51单片机】0. 基础软件安装
  • 集成电路设计:从概念到实现的完整解析优雅草卓伊凡
  • 动态规划之网格图模型(二)
  • uniapp 集成腾讯云 IM 消息搜索功能
  • robot_lab——rsl_rl的train.py整体逻辑
  • AI推荐系统演进史:从协同过滤到图神经网络与强化学习的融合
  • Java-IO流之压缩与解压缩流详解
  • .NET 原生驾驭 AI 新基建实战系列(三):Chroma ── 轻松构建智能应用的向量数据库
  • 有声书画本
  • StarRocks与Apache Iceberg:构建高效湖仓一体的实时分析平台
  • WebRTC 与 WebSocket 的关联关系
  • 8.RV1126-OPENCV 视频中添加LOGO
  • API管理是什么?API自动化测试怎么搭建?
  • Next.js+prisma开发一
  • GIC v3 v4 虚拟化架构
  • 2025远离Deno和Fresh
  • 相机camera开发之差异对比核查一:测试机和对比机的硬件配置差异对比
  • Flask+LayUI开发手记(七):头像的上传及突破static目录限制